.zip ファイルアーカイブを使用した PowerShell Lambda 関数のデプロイする
PowerShell ランタイム用のデプロイパッケージには、PowerShell スクリプト、PowerShell スクリプトに必要な PowerShell モジュール および PowerShell Core をホストするために必要なアセンブリが含まれています。
Lambda 関数の作成
Lambda で PowerShell スクリプトの記述と呼び出しを開始するためには、New-AWSPowerShellLambda
コマンドレットを使用して、テンプレートに基づきながらスタータースクリプトを作成します。Lambda にスクリプトをデプロイするには、Publish-AWSPowerShellLambda
コマンドレットを使用します。その後、コマンドラインあるいは Lambda コンソールから、スクリプトをテストできます。
新しい PowerShell スクリプトを作成してアップロードおよびテストするには、次を実行します。
-
使用可能なテンプレートの一覧を表示するには、次のコマンドを実行します。
PS C:\> Get-AWSPowerShellLambdaTemplate Template Description -------- ----------- Basic Bare bones script CodeCommitTrigger Script to process AWS CodeCommit Triggers ...
-
Basic
テンプレートに基づいてサンプルスクリプトを作成するには、次のコマンドを実行します。New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic
MyFirstPSScript.ps1
という名前の新しいファイルが現在のディレクトリの新しいサブディレクイトリに作成されます。ディレクトリの名前は、-ScriptName
パラメータに基づきます。別のディレクトリを選択するには、-Directory
パラメータを使用できます。新しいファイルの内容は次のとおりに表示されます。
# PowerShell script file to run as a Lambda function # # When executing in Lambda the following variables are 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 is 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.618.0'} # Uncomment to send the input to CloudWatch Logs # Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)
-
ログメッセージがどのように PowerShell スクリプトから Amazon CloudWatch Logs に送信されるかを表示するには、同じスクリプトの
Write-Host
行のコメントを解除します。Lambda 関数からデータを返す方法を示すには、スクリプトの末尾に新しい行 (
$PSVersionTable
) を追加します。これは、PowerShell パイプラインに$PSVersionTable
を追加します。PowerShell スクリプトが完了した後、PowerShell パイプラインの最後のオブジェクトは Lambda 関数に返されたデータです。$PSVersionTable
は、実行されている環境の情報も提供する PowerShell グローバル変数です。上述の変更を行った後のサンプルスクリプトの最後の 2 行は次のようになります。
Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5) $PSVersionTable
-
MyFirstPSScript.ps1
ファイルを編集したら、スクリプトの場所にディレクトリを変更します。次に、次のコマンドを実行して、Lambda にスクリプトを発行します。Publish-AWSPowerShellLambda -ScriptPath .\MyFirstPSScript.ps1 -Name MyFirstPSScript -Region us-east-2
-Name
パラメータは Lambda 関数名を指定しますが、これは Lambda コンソールに表示されます。この関数を使用して、手動でスクリプトを呼び出すことができます。 -
AWS Command Line Interface (AWS CLI)
invoke
コマンドを使用して関数を呼び出します。> aws lambda invoke --function-name MyFirstPSScript out