【发布时间】:2020-12-21 12:11:01
【问题描述】:
我是 SAM 模板的新手。我的 SAM 模板有以下 sn-p,我曾经在其中将存储桶名称的名称作为参数从这个 SAM YAML 文件外部传递:-
SAM 模板:-
MyLambda:
Type: AWS::Serverless::Function
Properties:
CodeUri: ./functions/test/dist/
Handler: index.lambdaHandler
Runtime: nodejs12.x
Events:
S3PutObjectEvent:
Type: S3
Properties:
Bucket: !Ref S3BucketName
Events: s3:ObjectCreated:*
Parameter.YAML:-
DeploymentEnvironment:
default:
S3BucketName: my-awesome-s3-bucket
现在,我不使用 SAM 模板或基础架构即代码 (IaC) 创建任何 S3 存储桶。存储桶创建由 Lambda 代码本身完成,因此我的 SAM 模板中没有 S3 对象类型声明。
当我执行这个命令时,sam validate 来验证 SAM 模板然后我得到这个错误:-
/template.yaml' 是无效的 SAM 模板。 错误:[InvalidResourceException('MyLambda', 'ID 为 [S3PutObjectEvent] 的事件无效。S3 事件必须引用同一模板中的 S3 存储桶。')] ('MyLambda', 'ID 为 [S3PutObjectEvent] 的事件无效。S3事件必须引用同一模板中的 S3 存储桶。')
在我努力解决这个问题时,我真的需要你的帮助来实现这个目标。我阅读了各种论坛,不确定我们是否可以从 SAM 模板之外传递存储桶名称。
有什么办法解决吗?这对我来说确实是个关键问题。感谢您对此的帮助。谢谢
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudformation aws-sam