Aws-lambda-dotnet: 错误:S3 存储桶必须与配置的区域 us-west-2 位于同一区域。 位于区域 us-east-1。

创建于 2018-01-17  ·  7评论  ·  资料来源: aws/aws-lambda-dotnet

  • 我使用dotnet new和 AWS Serverless WebAPI 模板 (ASP.NET Core 2.0) 创建了一个新项目。 这包括 ValuesController 和 S3ProxyController 示例代码。
  • 我的主要区域是 us-west-2 所以我做了一个查找替换来更改所有.appsettings文件中的区域。
  • 我还运行aws configure将我的默认配置文件密钥 ID、访问密钥和区域设置为 aws-west-2。

毕竟,我运行dotnet lambda deploy-serverless并尝试使用us-east-1 。 这是模板或 AWS CLI 的问题吗?

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

最有用的评论

仍然存在一个问题,即包含您的 zip 文件和 lambda 包的 S3 存储桶需要与创建 lambda 函数位于同一区域。 这是违反直觉的,在我看来,很糟糕。 如果我们想跨多个区域利用相同的模板,我们需要跨多个存储桶复制包的内容。 他们至少可以接受 CodeUri 属性中的 URL,这样我们就可以使用公共存储桶或 github 来存储包。

说真的,这太可怕了。 当您无法支持从单个 s3 存储桶更新 lambda 函数代码而不是在每个区域中创建重复存储桶时,全局 s3 存储桶有什么用。

所有7条评论

我将 dotnet new 生成的serverless.template上传到 AWS,尝试从中创建堆栈时出现以下错误:

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 需要被替换吗? 最便宜的解决方法是将其作为参数包含在内,然后您就不需要记录它了。

看起来一切正常,这令人困惑,因为涉及两个 S3 存储桶,代理存储桶和上传 lambda 函数代码的存储桶。 一旦我为 lambda 创建了一个存储桶并指定了它的名称,并且还为未使用的代理存储桶指定了一个唯一名称,云形成中的无服务器转换就起作用了。

仍然存在一个问题,即包含您的 zip 文件和 lambda 包的 S3 存储桶需要与创建 lambda 函数位于同一区域。 这是违反直觉的,在我看来,很糟糕。 如果我们想跨多个区域利用相同的模板,我们需要跨多个存储桶复制包的内容。 他们至少可以接受 CodeUri 属性中的 URL,这样我们就可以使用公共存储桶或 github 来存储包。

为此,您应该向CloudFormation 团队提供反馈。 更改 CloudFormation 的行为超出了此存储库的范围。

仍然存在一个问题,即包含您的 zip 文件和 lambda 包的 S3 存储桶需要与创建 lambda 函数位于同一区域。 这是违反直觉的,在我看来,很糟糕。 如果我们想跨多个区域利用相同的模板,我们需要跨多个存储桶复制包的内容。 他们至少可以接受 CodeUri 属性中的 URL,这样我们就可以使用公共存储桶或 github 来存储包。

说真的,这太可怕了。 当您无法支持从单个 s3 存储桶更新 lambda 函数代码而不是在每个区域中创建重复存储桶时,全局 s3 存储桶有什么用。

此页面是否有帮助?
0 / 5 - 0 等级