AWS Lambda
開発者ガイド

PowerShell での AWS Lambda デプロイパッケージ

PowerShell Lambda デプロイパッケージは、PowerShell スクリプト、PowerShell スクリプトに必要な PowerShell モジュール および PowerShell Coreをホストするために必要なアセンブリが含まれた ZIP ファイルです。

AWSLambdaPSCore モジュールには、PowerShell Lambda 関数を作成して発行するために次の新しいコマンドレットがあります。

AWSLambdaPSCore のコマンドレット

  • Get-AWSPowerShellLambdaTemplate – 使用開始テンプレートのリストを返します。

  • New-AWSPowerShellLambda – テンプレートに基づいて最初の PowerShell スクリプトを作成します。

  • Publish-AWSPowerShellLambda – 特定の PowerShell スクリプトを発行します。

  • New-AWSPowerShellLambdaPackage –デプロイのための CI/CD システムに使用できるLambda デプロイパッケージを作成します。

Lambda で PowerShell スクリプトを記述して呼び出すためには、New-AWSPowerShellLambda コマンドレットを使用して、テンプレートに基づいて開始のスクリプトを作成できます。AWS Lambda にスクリプトをデプロイするためには、Publish-AWSPowerShellLambda コマンドレットを使用できます。次に、コマンドラインあるいはコンソールでスクリプトをテストできます。

新しい PowerShell スクリプトを作成してアップロードし、テストするには、次の手順を実行します。

  1. 使用可能なテンプレートの一覧を表示するには、次のコマンドを実行します。

    PS C:\> Get-AWSPowerShellLambdaTemplate Template Description -------- ----------- Basic Bare bones script CodeCommitTrigger Script to process AWS CodeCommit Triggers ...
  2. Basic テンプレートに基づいてサンプルスクリプトを作成するには、次のコマンドを実行します。

    New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic

    MyFirstPSScript.ps1 という名前の新しいファイルが現在のディレクトリの新しいサブディレクイトリに作成されます。ディレクトリの名前は、-ScriptName パラメータに基づきます。別のディレクトリを選択するには、 -Directory パラメータを使用できます。

    新しいファイルの内容は次のとおりに表示されます。

    # PowerShell script file to be executed as a AWS Lambda function. # # When executing in Lambda the following variables will be predefined. # $LambdaInput - A PSObject that contains the Lambda function input data. # $LambdaContext - An Amazon.Lambda.Core.ILambdaContext object that contains information about the currently running Lambda environment. # # The last item in the PowerShell pipeline will be returned as the result of the Lambda function. # # To include PowerShell modules with your Lambda function, like the AWSPowerShell.NetCore module, add a "#Requires" statement # indicating the module and version. #Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.343.0'} # Uncomment to send the input to CloudWatch Logs # Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)
  3. ログメッセージがどのように PowerShell スクリプトから CloudWatch Logs に送信されるかを表示するには、同じスクリプトの Write-Host 行のコメントを解除します。

    Lambda 関数からデータを返す方法を示すには、スクリプトの末尾に新しい行 ($PSVersionTable) を追加します。これは、PowerShell パイプラインに $PSVersionTable を追加します。PowerShell スクリプトが完了した後、PowerShell パイプラインの最後のオブジェクトは Lambda 関数に返されたデータです。$PSVersionTable は、実行されている環境の情報も提供する PowerShell グローバル変数です。

    上述の変更を行った後のサンプルスクリプトの最後の 2 行は次のようになります。

    Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5) $PSVersionTable
  4. MyFirstPSScript.ps1 ファイルを編集したら、スクリプトの場所にディレクトリを変更します。次に、以下のコマンドライン実行して、AWS Lambda にスクリプトを発行します。

    Publish-AWSPowerShellLambda -ScriptPath .\MyFirstPSScript.ps1 -Name MyFirstPSScript -Region us-east-2

    -Name パラメータは Lambda 関数名を指定し、これは Lambda コンソールに表示されることに留意してください。この関数を使用して、手動でスクリプトを呼び出すことができます。

  5. AWS CLI の invoke コマンドを使用して、関数を呼び出します。

    > aws lambda invoke --function-name MyFirstPSScript out