【问题标题】:How to specify S3 bucket region in CloudFormation template for lambda .zip code如何在 CloudFormation 模板中为 lambda .zip 代码指定 S3 存储桶区域
【发布时间】:2021-09-23 09:48:30
【问题描述】:

我在us-west-2 中有一个S3 bucket,我的.zip file 里面包含lambda 的代码。

当我在其他地区使用CloudFormation template 部署我的 lambda 时,我也想使用同一个存储桶。
我认为既然 S3 是一项全球服务,它应该是可能的。
但它会导致从另一个区域创建 lambda 时出错。

有没有办法做到这一点?
我发现模板的代码部分只允许使用这些值。

"Code": {
          "S3Bucket": "my-new-bucket",
          "S3Key": "my_lambda.zip"
        },

【问题讨论】:

标签: amazon-s3 aws-lambda amazon-cloudformation


【解决方案1】:

您不能使用 docs 中解释的不同区域:

与您的函数在相同的 Amazon Web Services 区域中的一个 Amazon S3 存储桶。存储桶可以位于不同的 Amazon Web Services 帐户中。

【讨论】:

    【解决方案2】:

    如前所述,您必须将代码放在与 Lambda 位于同一区域的 S3 存储桶中。虽然 S3 服务是全局的,但存储桶不是。

    有一些选项可以做你想做的事情。

    1. S3 object replication 可用于将对象从一个存储桶复制到另一个存储桶。这确实对一个额外的区域有限制。
    2. 使用CodePipeline。 CodePipeline 会自动为您将工件复制到适当的区域。您仍然必须在要部署到的每个区域中都有一个存储桶,但您不必担心复制工件。 Add a cross-Region action in CodePipeline 显示了如何设置的示例。

    【讨论】:

    • 是的,现在很清楚,因为您提到“S3 是全局的,但存储桶不是”。
    猜你喜欢
    • 2020-01-17
    • 2017-01-28
    • 2023-04-11
    • 2021-05-06
    • 2013-09-16
    • 2017-10-15
    • 2015-06-29
    • 2018-08-09
    • 2016-07-20
    相关资源
    最近更新 更多