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