AWS CloudFormation:如何为 Lambda 代码指定来自另一个 AWS 账户的存储桶?

Posted

技术标签:

【中文标题】AWS CloudFormation:如何为 Lambda 代码指定来自另一个 AWS 账户的存储桶?【英文标题】:AWS CloudFormation: How to specify a bucket from another AWS account for Lambda code? 【发布时间】:2018-08-09 23:10:20 【问题描述】:

在编写 AWS CloudFormation 模板以创建 Lambda 函数时,需要“代码”字段。 我在这里找到了文档:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html

文档说您可以将 Lambda 函数的来源指定为 S3 存储桶中的 zip 文件。在S3Bucket 字段中,它表示“只要 Lambda 函数和存储桶位于同一区域,您就可以从另一个 AWS 账户指定存储桶。”

如果您在 S3Bucket 字段中输入存储桶名称,它将尝试在同一 AWS 账户中查找存储桶。所以我的问题是如何从另一个 AWS 账户指定存储桶?

我为 CFT 创建的 yaml 中的代码 sn-p:

  MyLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs6.10
      Role: !GetAtt LambdaRole.Arn
      FunctionName: 'MyLambda'
      MemorySize: 1024
      Timeout: 30
      Code: 
        S3Bucket: 'my-bucket'
        S3Key: 'my-key'

【问题讨论】:

【参考方案1】:

S3 存储桶是 S3 存储桶。它在哪个 AWS 账户中无关紧要。如果您有权访问存储桶,那么您就可以访问它。

只需提供 S3 存储桶的名称(在这种特定情况下,它必须位于同一区域)并确保您使用的凭据被允许访问 S3 存储桶。

【讨论】:

【参考方案2】:

如果您在多个 AWS 区域部署 Cloudformation 堆栈,则可以使用 cfs3-uploader 之类的工具在每个区域中快速创建相同的 S3 存储桶。

【讨论】:

以上是关于AWS CloudFormation:如何为 Lambda 代码指定来自另一个 AWS 账户的存储桶?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 AWS API Gateway Custom Authorizer 提供 Lambda 权限?

从 Lambda 函数内部访问 AWS CloudFormation ARN

如何为我的 Lambda 函数创建可重复使用的 CloudFormation 模板?

AWS Cloudformation 输出 ElastiCacheCluster

使用AWS CLI将现有资源导入CloudFormation

如何为测试禁用 AWS 参数存储自动配置?