Бессерверные события S3, включающие шифрование по умолчанию в шаблоне - PullRequest
0 голосов
/ 21 сентября 2018

Согласно 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"

Если я хочу добавить шифрование по умолчанию к этому сегменту, мне нужно создать сегмент в разделе ресурсов шаблона и ссылаться на него в обработчике событий, хорошо, я могу это сделать.

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

Но теперь я застрял на том, как я указываю событие и правила (префикс и тип файла), которые я хочу запускать обработчик.Я не могу добавить их в блок обработчика изменения размера, и у меня возникли проблемы с поиском документации для поиска ответа.

1 Ответ

0 голосов
/ 23 сентября 2018

Я не могу добавить их в блок обработчика изменения размера

Полагаю, вы можете.Объявление сегмента в разделе 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}"
...