C# で AWS Lambda 関数を作成しましたが、呼び出すとエラーが発生します。エラーが発生しないように C# デプロイパッケージをビルドする方法を教えてください。 どのようなオプションがありますか?
C# の Lambda 関数の一般的なエラーとして、「モジュールが見つかりません」「モジュールをロードできません」「クラスが見つかりません」などがあります。 これらのエラーの原因として、デプロイパッケージのフォルダ構造が間違っているために Lambda サービスがモジュールやライブラリをロードできないことが考えられます。
正しいフォルダ構造を使用してデプロイパッケージをビルドします。
Lambda の C# デプロイパッケージをビルドしてデプロイする主な方法は 2 つあります。1 つの方法としては、.NET Core コマンドラインインターフェイス (CLI) を Amazon.Lambda.Tools プラグインで使用します。別の方法としては、AWS Toolkit for Visual Studio を使用します。詳細については、「C# の AWS Lambda デプロイパッケージ」を参照してください。
.NET Core CLI でパッケージをビルドしてデプロイする
1. デフォルトの Lambda .NET テンプレートをインストールして Amazon.Lambda.Tools プラグインを .NET Core CLI に追加するには、次のコマンドを実行します。
dotnet new -i 'Amazon.Lambda.Templates::*'
2. 以下のいずれかを行います。
インストールしたテンプレートのいずれかを使用して新しい Lambda 関数を作成するには、次のコマンドを実行します。
dotnet new lambda.EmptyFunction --name {function-name} --profile default --region {aws-region}
例:
dotnet new lambda.EmptyFunction --name myFunction --profile default --region us-east-1
Amazon.Lambda.Tools を既存のプロジェクトに追加するには、次の itemgroup をプロジェクトの 2017 .csproj ファイルに手動で追加します。
<ItemGroup> <DotNetCliToolReference Include="Amazon.Lambda.Tools" Version="{current-version}"></DotNetCliToolReference> </ItemGroup>
注意: Amazon.Lambda.Tools の現行バージョン (「3.1.1」など) は NuGet ウェブサイトで確認してください。
3. すべての依存関係をダウンロードには、次のコマンドを実行します。
cd {your-function-directory} dotnet restore
例:
cd myFunction\src\myFunction dotnet restore
注意: 「互換性がありません」エラーが表示された場合は、Lambda ツールと互換性があるバージョンの .NET Core をインストールしていること、およびこのバージョンを CLI で使用していることを確認してください。旧バージョンの .NET Core をダウンロードする場合は、.NET Download Archives ウェブサイトを参照してください。
4. デプロイパッケージをビルドするには、次のコマンドを実行します。
dotnet lambda deploy-function
5. CLI のプロンプトに従って、関数名を入力し、IAM ロールを選択します。Lambda 関数が作成されます。
AWS Toolkit for Visual Studio でパッケージをビルドしてデプロイする
1. AWS Toolkit for Visual Studio をダウンロードしてインストールします。
2. AWS Lambda Project (.NET Core) プロジェクトを作成してビルドします。詳細については、「チュートリアル: AWS Toolkit for Visual Studio で AWS Lambda テンプレートを使用する」と「プロジェクトを作成、ビルドする」を参照してください。
関数ハンドラ署名を確認する
Lambda 関数の作成時に返されるハンドラ署名は次の形式になっている必要があります。
ASSEMBLY::TYPE::METHOD
例:
myFunction::myFunction.Function::FunctionHandler
関数が正しい形式になっていることを確認するには、関数の src/{function-name} ディレクトリ内のファイルをチェックします。詳細については、「.NET Core CLI」と「ハンドラ署名」を参照してください。
サポートが必要ですか? AWS サポートセンターをご覧ください。
公開日: 2018 年 12 月 27 日