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 运行s 如预期的那样部署,但 Cloudwatch Logs 中的唯一内容是:
START RequestId:4c12fe1a-a9e0-4137-90cf-747b6aecb639 版本:$LATEST
我已检查 CDK 脚本中的处理程序是否与 Publish-AWSPowerShellLambda 的输出相匹配,并且 zip 文件上传正常并且包含正确的代码。
关于为什么这不起作用的任何建议?
在 lambda.Function 中将内存大小设置为 512mb 已解决问题。
cloudwatch 条目显示 lambda 开始,但似乎没有足够的内存来初始化和 运行 .net 运行时间。
我有一个 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 运行s 如预期的那样部署,但 Cloudwatch Logs 中的唯一内容是: START RequestId:4c12fe1a-a9e0-4137-90cf-747b6aecb639 版本:$LATEST
我已检查 CDK 脚本中的处理程序是否与 Publish-AWSPowerShellLambda 的输出相匹配,并且 zip 文件上传正常并且包含正确的代码。
关于为什么这不起作用的任何建议?
在 lambda.Function 中将内存大小设置为 512mb 已解决问题。
cloudwatch 条目显示 lambda 开始,但似乎没有足够的内存来初始化和 运行 .net 运行时间。