AWS Lambda の 関数ハンドラー PowerShell - AWS Lambda

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Lambda の 関数ハンドラー PowerShell

Lambda 関数が呼び出されると、Lambda ハンドラーは PowerShell スクリプトを呼び出します。

PowerShell スクリプトが呼び出されると、以下の変数が事前定義されています。

  • $LambdaInput - ハンドラーへの入力を含む PSObject。この入力は、イベントデータ (イベントソースによって公開される)、あるいは文字列やカスタムデータオブジェクトなど、ユーザーが提供するカスタム入力とすることができます。

  • $LambdaContext – 現在の関数の名前、メモリ制限、残り実行時間、ログ記録など、現在の呼び出しに関する情報にアクセスするために使用できる Amazon.Lambda.Core.I LambdaContext オブジェクト。

例えば、次の PowerShell サンプルコードを考えてみましょう。

#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'} Write-Host 'Function Name:' $LambdaContext.FunctionName

このスクリプトは $LambdaContext variable から取得した FunctionName プロパティを返します。

注記

PowerShell スクリプト内で #Requiresステートメントを使用して、スクリプトが依存するモジュールを指定する必要があります。このステートメントは 2 つの重要なタスクを実行します。1) スクリプトが使用するモジュールを他のデベロッパーに伝え、2) デプロイの一環として、AWS PowerShell ツールがスクリプトでパッケージ化する必要がある依存モジュールを識別します。の #Requiresステートメントの詳細については PowerShell、「 で が必要」を参照してください。 PowerShell デプロイパッケージの詳細については、「」を参照してください.zip ファイルアーカイブを使用して PowerShell Lambda 関数をデプロイする

PowerShell Lambda 関数がAWS PowerShell コマンドレットを使用する場合は、 AWSPowerShell.NetCoreモジュールを参照する#Requiresステートメントを必ず設定してください。これは PowerShell Core をサポートし、Windows のみをサポートする AWSPowerShell モジュールはサポートしません PowerShell。また、コマンドレットインポートプロセスを最適化する AWSPowerShell.NetCore のバージョン 3.3.270.0 以降を使用していることも確認します。古いバージョンを使用している場合、より長いコールドスタートが発生します。詳細については、AWS「Tools for PowerShell」を参照してください。

データを返す

一部の Lambda 呼び出しには、呼び出し元にデータを返す目的があります。例えば、呼び出しが API Gateway から送信されたウェブリクエストへの返答である場合、Lambda 関数はレスポンスを返す必要があります。 PowerShell Lambda の場合、 PowerShell パイプラインに最後に追加されるオブジェクトは、Lambda 呼び出しから返されたデータです。オブジェクトが文字列の場合、返されるデータも文字列です。それ以外の場合、ConvertTo-Json コマンドレットを使用して、オブジェクトは JSON に変換されます。

例えば、 PowerShell パイプライン$PSVersionTableに を追加する次の PowerShell ステートメントを考えてみます。

$PSVersionTable

PowerShell スクリプトの完了後、 PowerShell パイプラインの最後のオブジェクトは Lambda 関数の戻りデータです。 $PSVersionTable は、実行中の環境に関する情報も提供する PowerShell グローバル変数です。