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

时间:2018-03-01 19:22:31

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

在编写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代码片段:

  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'

2 个答案:

答案 0 :(得分:2)

S3存储桶是S3存储桶。它所在的AWS账户并不重要。如果您有权访问该存储桶,则可以访问该存储桶。

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

答案 1 :(得分:0)

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