gpt4 book ai didi

amazon-web-services - AWS Bucket 策略允许 cloudformation 加载 Lambda 函数层

转载 作者:行者123 更新时间:2023-12-03 07:32:47 26 4
gpt4 key购买 nike

我有以下cloudformation模板。为了简洁起见,省略了一些资源,例如 RestAPI。我的模板必须创建 lambda 函数并从 S3 存储桶下载现有层。这一层是预装的Python包。他们使用层来减少部署的大小,因为在大多数情况下,您通常更改函数代码而不是环境。我遵循官方指南:AWS::Serverless::LayerVersion

Resources:
MyLambdaLayer:
Type: AWS::Serverless::LayerVersion
Properties:
LayerName: lambda-layer
Description: Lambda Layer
ContentUri: s3://mybucket-in-aws/packages/lambda-layer1.zip
CompatibleRuntimes:
- python3.11
HealthCheckFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/api/health.check
Description: API health check handler
Layers:
- !Ref MyLambdaLayer
Events:
HealthCheckEvent:
Type: Api
Properties:
Path: /health-check
Method: get
RestApiId: !Ref RestAPI

当我使用无服务器框架部署此模板时:

sam build
sam deploy

我收到错误资源处理程序返回消息:“GetObject 时发生错误。S3 错误代码:NoSuchKey。S3 错误消息:指定的 key 不存在。(服务:AWSLambdaInternal 状态代码:400;错误代码: InvalidParameterValueException

该包存在于 S3 Bucket 中,因此问题很可能出在权限上。

如何更改模板以允许 Cloudformation 在部署期间从 s3 存储桶下载包层?该存储桶属于我,我的普通用户可以从 aws cli 访问它。

如果本地文件发生更改,是否可以创建特殊存储桶来仅保存图层包,并在同一部署阶段将 s3 对象上传到其中?

最佳答案

这里有几个问题。

问题 1:如何更改模板以允许 Cloudformation 在部署期间从 s3 存储桶下载包层?

答案 1: 您不一定可以在模板中执行任何操作,除非您还创建了可以在其中应用策略文档的 S3 存储桶。然而,正如对您的问题的评论所表明的那样,文件不存在就是问题所在。如果是权限,您应该会收到拒绝访问的响应。

问题2:如果本地文件发生变化,是否可以创建特殊的存储桶来仅保存层包,并在同一部署阶段将s3对象上传到该存储桶?

是的,完全合理。但是您尚未指定您要使用什么进行部署。假设您正在使用 AWS,他们在这里提供了一个教程:https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-s3deploy.html (向下滚动到本页的选项 2)

关于amazon-web-services - AWS Bucket 策略允许 cloudformation 加载 Lambda 函数层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77047926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com