AWS SAM 模板:将 S3 事件映射到 Lambda
AWS SAM Template: Issue mapping S3 events to Lambda
我已按照 AWS SAM 文档进行实践学习,并达到了这个特定部分:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-s3.html
文档中的上一页解释了如何将 S3 事件映射到任何资源,我已经在我的本地机器上做了类似的事情。下面是我的本地模板。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
CreateThumbnail:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.6
Timeout: 60
Policies: AWSLambdaExecute
Events:
CreateThumbnailEvent:
Type: S3
Properties:
Bucket: !Ref testBucket
Events: s3:ObjectCreated:*
testBucket:
Type: AWS::S3::Bucket
现在,当我在 SAM 模板之上构建和部署时,在创建新的 S3 存储桶时,'object creation' 事件未映射到创建的 Lambda 函数。 PSB 截图。
我还没有找到关于这个错误的任何文章或博客(可能,我在这里犯了一个愚蠢的错误)
请帮忙。
谢谢。
首先创建您计划保存打包代码的存储桶
aws s3 mb s3://youtbucketname
sam build
之后
去
sam package --template-file template.yaml --s3-bucket <yourbucketname>
我意识到由于某种原因,AWS Lambda 控制台没有显示触发事件,但映射成功。我还通过将示例图像上传到触发 lambda 的存储桶进行了验证。
可以在创建的 S3 存储桶的属性部分看到事件映射。
已创建 S3 测试存储桶 -> 属性 -> 事件
您可以将 AWS::Lambda::Permission
添加到您的 Resources
。
这对我有用:
https://github.com/awslabs/serverless-application-model/issues/300#issuecomment-510847259
我已按照 AWS SAM 文档进行实践学习,并达到了这个特定部分:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-s3.html
文档中的上一页解释了如何将 S3 事件映射到任何资源,我已经在我的本地机器上做了类似的事情。下面是我的本地模板。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
CreateThumbnail:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.6
Timeout: 60
Policies: AWSLambdaExecute
Events:
CreateThumbnailEvent:
Type: S3
Properties:
Bucket: !Ref testBucket
Events: s3:ObjectCreated:*
testBucket:
Type: AWS::S3::Bucket
现在,当我在 SAM 模板之上构建和部署时,在创建新的 S3 存储桶时,'object creation' 事件未映射到创建的 Lambda 函数。 PSB 截图。
我还没有找到关于这个错误的任何文章或博客(可能,我在这里犯了一个愚蠢的错误)
请帮忙。
谢谢。
首先创建您计划保存打包代码的存储桶
aws s3 mb s3://youtbucketname
sam build
之后
去
sam package --template-file template.yaml --s3-bucket <yourbucketname>
我意识到由于某种原因,AWS Lambda 控制台没有显示触发事件,但映射成功。我还通过将示例图像上传到触发 lambda 的存储桶进行了验证。
可以在创建的 S3 存储桶的属性部分看到事件映射。
已创建 S3 测试存储桶 -> 属性 -> 事件
您可以将 AWS::Lambda::Permission
添加到您的 Resources
。
这对我有用:
https://github.com/awslabs/serverless-application-model/issues/300#issuecomment-510847259