Aws-lambda-dotnet: エラー:S3バケットは、設定されたリージョンus-west-2と同じリージョンにある必要があります。 地域us-east-1にあります。

作成日 2018年01月17日  ·  7コメント  ·  ソース: aws/aws-lambda-dotnet

  • dotnet new 、AWSサーバーレスWebAPIテンプレート(ASP.NET Core 2.0)を使用して新しいプロジェクトを作成しました。 これには、ValuesControllerおよびS3ProxyControllerサンプルコードが含まれます。
  • 私のプライマリリージョンはus-west-2なので、すべての.appsettingsファイルのリージョンを変更するためにfind-replaceを実行しました。
  • また、 aws configureを実行して、デフォルトのプロファイルのキーID、アクセスキー、およびリージョンをaws-west-2に設定しました。

この後、 dotnet lambda deploy-serverlessを実行し、 us-east-1を使用しようとしています。 これはテンプレートまたはAWSCLIの問題ですか?

Error: S3 bucket must be in the same region as the configured region us-west-2. is in the region us-east-1.

最も参考になるコメント

ラムダパッケージを含むzipファイルを含むS3バケットが、ラムダ関数が作成されているのと同じリージョンにある必要があるという問題がまだあります。 これは直感に反し、私の意見ではひどいです。 複数のリージョンで同じテンプレートを活用する場合は、パッケージのコンテンツを複数のバケットに複製する必要があります。 少なくともCodeUriプロパティのURLを受け入れることができるので、パッケージを格納するためにパブリックバケットまたはgithubを使用できます。

真剣に、これはひどいです。 すべてのリージョンで重複バケットを作成する代わりに、単一のs3バケットからのラムダ関数コードの更新をサポートできない場合のグローバルs3バケットの使用は何ですか。

全てのコメント7件

AWSに新しいdotnetによって生成されたserverless.templateをアップロードしましたが、そこからスタックを作成しようとすると、次のエラーが発生しました。

Error creating change set: Transform AWS::Serverless-2016-10-31 failed with: Invalid Serverless Application Specification document. Number of errors found: 1. Resource with id [ProxyFunction] is invalid. 'CodeUri' is not a valid S3 Uri of the form "s3://bucket/key" with optional versionId query parameter.

テンプレートに問題があるようです。 私はCloudFormationの経験があまりなく、まだ調査中です。

今日、私は最終的にエラーメッセージを理解することによっていくらかの進歩を遂げました:)

クラウド形成テンプレートの「ProxyFunction」リソースでは、 CodeUriパラメーターが空の文字列に設定されています。 空の文字列がそこでサポートされていない理由の調査を続けています。

どうやらCodeUriは相対、動的パラメータ、または静的URLである可能性がありますが、空の文字列になることはありません。

https://github.com/awslabs/serverless-application-model/blob/master/HOWTO.md

CodeUriを何かに置き換える必要があると言うページがありますか? 最も安価な修正は、それをパラメーターとして含めることです。そうすれば、それを文書化する必要はありません。

すべてが機能したように見えますが、プロキシバケットとラムダ関数コードがアップロードされるバケットの2つのS3バケットが関係しているため、混乱を招きました。 ラムダのバケットを作成してその名前を指定し、使用されていないプロキシバケットの一意の名前も指定すると、クラウド形成のサーバーレス変換が機能しました。

ラムダパッケージを含むzipファイルを含むS3バケットが、ラムダ関数が作成されているのと同じリージョンにある必要があるという問題がまだあります。 これは直感に反し、私の意見ではひどいです。 複数のリージョンで同じテンプレートを活用する場合は、パッケージのコンテンツを複数のバケットに複製する必要があります。 少なくともCodeUriプロパティのURLを受け入れることができるので、パッケージを格納するためにパブリックバケットまたはgithubを使用できます。

そのためには、 CloudFormationチームにフィードバックを提供する必要があります。 CloudFormationの動作を変更することは、このリポジトリの範囲を超えています。

ラムダパッケージを含むzipファイルを含むS3バケットが、ラムダ関数が作成されているのと同じリージョンにある必要があるという問題がまだあります。 これは直感に反し、私の意見ではひどいです。 複数のリージョンで同じテンプレートを活用する場合は、パッケージのコンテンツを複数のバケットに複製する必要があります。 少なくともCodeUriプロパティのURLを受け入れることができるので、パッケージを格納するためにパブリックバケットまたはgithubを使用できます。

真剣に、これはひどいです。 すべてのリージョンで重複バケットを作成する代わりに、単一のs3バケットからのラムダ関数コードの更新をサポートできない場合のグローバルs3バケットの使用は何ですか。

このページは役に立ちましたか?
0 / 5 - 0 評価