AWS-CDK & Powershell Lambda - PullRequest
       20

AWS-CDK & Powershell Lambda

1 голос
/ 07 октября 2019

У меня есть Powershell Lambda, который я хотел бы развернуть через AWS CDK, однако у меня возникли проблемы с его запуском.

Развертывание Powershell через руководство Publish-AWSPowerShellLambda работает:

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 содержит только следующие строки и работает при развертывании с помощью Publish-AWSPowerShellLambda на CLI:

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

Примечание. Для развертывания CDK я создаю файл .zip с помощью шага сборки в package.json:

 "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 развертывается нормально, аЛямбда работает так, как ожидалось, но единственное, что есть в журналах Cloudwatch, это: START RequestId: 4c12fe1a-a9e0-4137-90cf-747b6aecb639 Версия: $ LATEST

Я проверил, что обработчик всценарий CDK соответствует выходным данным Publish-AWSPowerShellLambda и что файл zip загружен нормально и содержит правильный код.

Любое предложениепочему это не работает?

1 Ответ

1 голос
/ 08 октября 2019

Установка размера памяти 512 МБ в лямбда-выражении. Функция устранила проблему.

Запись Cloudwatch показала запуск лямбда-выражения, но, похоже, не хватило памяти для инициализации и запуска среды выполнения .net.

...