【问题标题】:Serverless S3 bucket events enabling default encryption in template在模板中启用默认加密的无服务器 S3 存储桶事件
【发布时间】:2019-02-25 10:57:51
【问题描述】:

根据https://serverless.com/framework/docs/providers/aws/events/s3/ 我可以在无服务器模板中创建一个 S3 存储桶,当 jpg 文件放入上传目录时触发事件。太好了!

functions:
  users:
    handler: users.handler
    events:
      - s3:
          bucket: photos
          event: s3:ObjectCreated:*
          rules:
            - prefix: uploads/
            - suffix: .jpg

还有一个示例,说明您何时要添加自定义 S3 存储桶属性。也很棒!

functions:
  resize:
    handler: resize.handler
    events:
      - s3: photos

resources:
  Resources:
    S3BucketPhotos:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: my-custom-bucket-name
    ResizeLambdaPermissionPhotosS3:
      Type: "AWS::Lambda::Permission"
      Properties:
        FunctionName:
          "Fn::GetAtt":
            - ResizeLambdaFunction
            - Arn
        Principal: "s3.amazonaws.com"
        Action: "lambda:InvokeFunction"
        SourceAccount:
          Ref: AWS::AccountId
        SourceArn: "arn:aws:s3:::my-custom-bucket-name"

如果我想给那个bucket添加默认加密,我需要在模板的Resources部分创建bucket,并在事件处理程序中引用它,好的,我可以做到。

functions:
  resize:
    handler: resize.handler
    events:
      - s3: photos

resources:
  Resources:
    S3BucketPhotos:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: my-custom-bucket-name
        BucketEncryption:
          ServerSideEncryptionConfiguration:
            - ServerSideEncryptionByDefault:
                SSEAlgorithm: AES256

但现在我被困在如何指定要触发处理程序的事件和规则(前缀和文件类型)上。我无法将它们添加到调整大小处理程序块中,并且在搜索文档以找到答案时遇到了麻烦。

【问题讨论】:

    标签: amazon-web-services amazon-s3 serverless-framework serverless


    【解决方案1】:

    我无法在调整大小处理程序块中添加它们

    我相信你可以。在 resources 部分声明存储桶并不会消除您在处理程序的 S3 事件中指定规则的能力。

    用于测试的完整示例:

    functions:
      resize:
        handler: handler.s3EventProcessor
        events:
          - s3: 
              bucket: photos
              event: s3:ObjectCreated:*
              rules:
                - prefix: uploads/
                - suffix: .jpg          
    resources:
      Resources:
        S3BucketPhotos:
          Type: AWS::S3::Bucket
          Properties:
            BucketName: ${self:service}-${self:provider.stage}
            BucketEncryption:
              ServerSideEncryptionConfiguration:
                - ServerSideEncryptionByDefault:
                    SSEAlgorithm: AES256        
        ResizeLambdaPermissionPhotosS3:
          Type: "AWS::Lambda::Permission"
          Properties:
            FunctionName:
              "Fn::GetAtt":
                - ResizeLambdaFunction
                - Arn
            Principal: "s3.amazonaws.com"
            Action: "lambda:InvokeFunction"
            SourceAccount:
              Ref: AWS::AccountId
            SourceArn: "arn:aws:s3:::${self:service}-${self:provider.stage}"
    

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 2018-08-07
      • 2014-05-28
      • 2021-01-08
      • 2013-06-20
      • 2021-12-17
      • 2020-12-16
      • 2021-08-25
      • 1970-01-01
      相关资源
      最近更新 更多