C# .NET の Lambda デプロイパッケージを構築するにはどうすればよいですか?

所要時間2分
0

AWS Lambda 関数デプロイパッケージを C# で作成しました。しかし、関数を呼び出そうとすると、Lambda は、「モジュールが見つかりません」、「モジュールをロードできません」、または「クラスが見つかりません」といったエラーのいずれかを返します。 この問題をトラブルシューティングするにはどうすればよいですか?

簡単な説明

C# Lambda 関数が次のエラーのいずれかを返す場合、関数のデプロイパッケージのフォルダ構造が正しく設定されていません。

  • モジュールが見つかりません
  • モジュールをロードできません
  • クラスが見つかりません

この問題を解決するには、正しいフォルダ構造を持つ C# Lambda 関数デプロイパッケージを構築する必要があります。正しいフォルダ構造で C# Lambda 関数デプロイパッケージを構築およびデプロイするための方法としては、次の 2 つがあります。

解決方法

.NET Core CLI および Amazon.Lambda.Tools 拡張機能を使用するには

1.    次のコマンドを実行して、デフォルトの Lambda .NET テンプレートをインストールし、Amazon.Lambda.Tools 拡張機能を .NET Core CLI に追加します。

dotnet new -i 'Amazon.Lambda.Templates::*'

2.    インストールしたテンプレートのいずれかを使用して新しい Lambda 関数を作成するか、既存のプロジェクトに Amazon.Lambda.Tools 拡張機能を追加します。

インストールしたテンプレートの 1 つを使用して新しい Lambda 関数を作成するには

Lambda 関数のプロジェクトルートディレクトリにある .NET Core CLI から、次のコマンドを実行します。

重要: {function-name} を関数の名前に置き換えてください。{aws-region} を関数が必要な AWS リージョンに置き換えてください。

dotnet new lambda.EmptyFunction --name {function-name} --profile default --region {aws-region}

Amazon.Lambda.Tools 拡張機能を既存のプロジェクトに追加するには

Lambda 関数のプロジェクトルートディレクトリにある .NET Core CLI から、次のコマンドを実行します。

dotnet tool install -g Amazon.Lambda.Tools

注: Amazon.Lambda.Tools 拡張機能は、不足している必須パラメータを指定するよう求めます。

3.    次のコマンドを実行して、デプロイパッケージの依存関係をダウンロードします。

重要: {your-function-directory} を関数ディレクトリの名前に置き換えてください。

cd {your-function-directory}
dotnet restore

注: 互換性なしというエラーが表示された場合は、Lambda ツールと互換性のあるバージョンの .NET Core を使用していることを確認してください。.NET Core の以前のバージョンをダウンロードするには、.NET Download Archives ウェブサイトを参照してください。

4.    次のコマンドを実行して、Lambda デプロイパッケージを構築します。

dotnet lambda deploy-function

注: または、Lambda デプロイパッケージを最初から構築し、個別にデプロイすることもできます。手順については、Deploying an AWS Lambda project with the .NET Core CLI を参照してください。

5.    .NET Core CLI は、関数名を入力し、AWS Identity and Access Management (IAM) ロールを関数に割り当てるよう求めます。関数の名前を入力し、関数に IAM ロールを割り当てます。これで、関数が作成されます。

AWS Toolkit for Visual Studio を使用するには

1.    AWS Toolkit for Visual Studio をダウンロードしてインストールします。

2.    AWS Lambda Project (.NET Core) プロジェクトを作成および構築します。手順については、AWS Lambda デベロッパーガイドの Using the AWS Lambda templates in the AWS Toolkit for Visual Studio および AWS Toolkit for Visual Studio を参照してください。

重要: 関数ハンドラーの署名が次の形式であることを確認してください。

ASSEMBLY::TYPE::METHOD

関数が正しくフォーマットされていることを確認するには、関数の src/{function-name} ディレクトリにあるファイルを確認します。詳細については、.NET Core CLI および C# の AWS Lambda 関数ハンドラーを参照してください。


AWS公式
AWS公式更新しました 3年前