簡體   English   中英

AWS-CDK & Powershell Lambda

[英]AWS-CDK & Powershell Lambda

我有一個 Powershell Lambda,我想通過 AWS CDK 進行部署,但是我在運行它時遇到了問題。

通過手動 Publish-AWSPowerShellLambda 部署 Powershell 工作:

Publish-AWSPowerShellLambda -ScriptPath .\PowershellLambda.ps1 -Name PowershellLambda

但是,使用 CDK 部署的同一腳本不會記錄到 CloudWatch Logs,即使它具有權限:

import events = require('@aws-cdk/aws-events');
import targets = require('@aws-cdk/aws-events-targets');
import lambda = require('@aws-cdk/aws-lambda');
import cdk = require('@aws-cdk/core');

export class LambdaCronStack extends cdk.Stack {
  constructor(app: cdk.App, id: string) {
    super(app, id);

    const lambdaFn = new lambda.Function(this, 'Singleton', {      
      code: new lambda.AssetCode('./PowershellLambda/PowershellLambda.zip'),
      handler: 'PowershellLambda::PowershellLambda.Bootstrap::ExecuteFunction',
      timeout: cdk.Duration.seconds(300),
      runtime: lambda.Runtime.DOTNET_CORE_2_1
    });

    const rule = new events.Rule(this, 'Rule', {
      schedule: events.Schedule.expression('rate(1 minute)')
    });

    rule.addTarget(new targets.LambdaFunction(lambdaFn));
  }
}

const app = new cdk.App();
new LambdaCronStack(app, 'LambdaCronExample');
app.synth();

powershell 腳本當前僅包含以下幾行,並且在 CLI 上由 Publish-AWSPowerShellLambda 部署時有效:

#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.335.0'}
Write-Host "Powershell Lambda Executed" 

注意:對於 CDK 部署,我使用 package.json 中的構建步驟生成 .zip 文件:

 "scripts": {
    "build": "tsc",
    "build-package": "pwsh -NoProfile -ExecutionPolicy Unrestricted -command New-AWSPowerShellLambdaPackage -ScriptPath './PowershellLambda/PowershellLambda.ps1' -OutputPackage ./PowershellLambda/PowershellLambda.zip",
    "watch": "tsc -w",
    "cdk": "cdk"
  }

CDK 部署良好,Lambda 按預期運行,但 Cloudwatch 日志中唯一的內容是: START RequestId:4c12fe1a-a9e0-4137-90cf-747b6aecb639 版本:$LATEST

我檢查了 CDK 腳本中的 Handler 是否與 Publish-AWSPowerShellLambda 的 output 匹配,並且 zip 文件上傳良好並包含正確的代碼。

關於為什么這不起作用的任何建議?

在 lambda.Function 中將 memory 大小設置為 512mb 已解決該問題。

cloudwatch 條目顯示 lambda 正在啟動,但似乎沒有足夠的 memory 來初始化和運行 .net 運行時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM