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