比较来自世界各地的卖家的域名和 IT 服务价格

无法在篮子的几个地区部署相同的λa。 s3

我们使用模板部署lambda SAM CloudFormation.

我们想把lambda打包给篮子里 S3, 然后部署 AWS :: Serverless :: Function 在几个地区。

但是,Lambda代码必须位于部署它的同一个区域中。

AWS 事实上,记录了如何解决这个问题,创建了另一个lambda形式。

CopyZips

将zip文件复制到要部署它的每个区域以及新篮子 s3

LambdaZipsBucket

在每个区域插入它。 然后你的lambda函数看起来像这样:

MyFunction:
DependsOn: CopyZips
Type: AWS::Lambda::Function
Properties:
Code:
S3Bucket: !Ref 'LambdaZipsBucket'
S3Key: !Sub '${QSS3KeyPrefix}functions/packages/MyFunction/lambda.zip'

问题是它取决于ZIP文件的确切路径的知识。 在我们的情况下,我们使用模板的替换 SAM, 所以我们从未指定细分 S3 或钥匙 S3 - 相反,我们的功能如下所示:

  MyFunction:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: ./MyCompany.Service.Broker.Public

部分 S3 根本没有提到模板中 CloudFormation. 和λ通过浏览桶看到的lambda有这样的名称:


ApiFunction-CodeUri-2342873t823t482346-97346583746583745.zip

这是因为在组装期间有许多类似的ZIP档案。 无情的模板模型对此进行解码,如果我们查看控制台 CloudFormation 在“模板”选项卡上,选择“View Processed Pattern”,我们将看到该字段 S3Bucket 和 S3Key 填写正确。

组件由B执行。 Azure DevOps 使用

AmazonWebServices.aws-vsts-tools.LambdaNETCoreDeploy.LambdaNETCoreDeploy@1

我们指定段和区域的名称的任务,但再次不是ZIP文件的名称。

考虑到我没有在模板中访问Lampda的zip文件的确切路径,我应该如何将zip文件的副本自动化到本地篮子?

刷新:

我试图在之前立即在属性中添加下一行 CodeUri:

      Code:
S3Bucket: !Ref 'LambdaZipsBucket'

但是,在部署时,我收到以下错误:

Resource with id [ApiFunction] is invalid. property Code not defined for resource of type AWS::Serverless::Function 
已邀请:

莫问

赞同来自:

您可以尝试使用策略 AWS :: Serverless :: Function 并提供适当的权限。 格式允许的是什么样的。

Policies:
- AWSLambdaExecute
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectACL
Resource: 'arn:aws:s3:::LambdaZipsBucket/*'

要回复问题请先登录注册