Ошибка создания AWS S3: событие не поддерживается для уведомлений (сервис: Amazon S3; код состояния: 400; код ошибки: InvalidArgument


I'm developing my first lambda in Code9 that suppose to be triggered by S3 event. Unfortunetly, when I'm trying to deploy, I'm constantly getting CloudFormation Error:

"The event is not supported for notifications (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: CF3108325F3C9B60; S3 Extended Request ID: wcWzRXUu7YJn/BVnPDtOx7yBHllhIPELEwsTweqVcfwLw1hkR2iDiSmQbxeL3Hrtp7Kv58ujS2s=; Proxy: null)"


См. ниже события CloudFormation из консоли AWS Mgm:

введите описание изображения здесь

Ниже мой файл AWS SAM template.yaml:

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An AWS Serverless Specification template describing your function.
Resources:
  olatexOrdersInputDirectory:
    Type: 'AWS::S3::Bucket'
  olatexXlsxOrderLoader:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: olatexXlsxOrderLoader/index.handler
      Runtime: nodejs12.x
      Description: ''
      MemorySize: 128
      Timeout: 15
      Policies:
      - AWSLambdaBasicExecutionRole
      - AmazonS3FullAccess
      - AmazonDynamoDBFullAccess
      Events:
        S3Event:
          Type: S3
          Properties:
            Bucket: !Ref olatexOrdersInputDirectory
            Events: S3:ObjectCreated:*

Строки после Policies: я добавил для расширения политик IAM, потому что подозревал, что ошибка связана с недостаточными правами, но это не помогло.
Ниже я прикрепляю шаблон CloudFormation, созданный из template.yaml SAM:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "An AWS Serverless Specification template describing your function.",
  "Resources": {
    "olatexXlsxOrderLoader": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": "cloud9-026528720964-sam-deployments-eu-central-1",
          "S3Key": "6aa2a5885a77ea790684cb345d822ed8"
        },
        "Description": "",
        "Tags": [
          {
            "Value": "SAM",
            "Key": "lambda:createdBy"
          }
        ],
        "MemorySize": 128,
        "Handler": "olatexXlsxOrderLoader/index.handler",
        "Role": {
          "Fn::GetAtt": [
            "olatexXlsxOrderLoaderRole",
            "Arn"
          ]
        },
        "Timeout": 15,
        "Runtime": "nodejs12.x"
      }
    },
    "olatexXlsxOrderLoaderRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Action": [
                "sts:AssumeRole"
              ],
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "lambda.amazonaws.com"
                ]
              }
            }
          ]
        },
        "ManagedPolicyArns": [
          "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
          "arn:aws:iam::aws:policy/AmazonS3FullAccess",
          "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess"
        ],
        "Tags": [
          {
            "Value": "SAM",
            "Key": "lambda:createdBy"
          }
        ]
      }
    },
    "olatexOrdersInputDirectory": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "NotificationConfiguration": {
          "LambdaConfigurations": [
            {
              "Function": {
                "Fn::GetAtt": [
                  "olatexXlsxOrderLoader",
                  "Arn"
                ]
              },
              "Event": "S3:ObjectCreated:*"
            }
          ]
        }
      },
      "DependsOn": [
        "olatexXlsxOrderLoaderS3EventPermission"
      ]
    },
    "olatexXlsxOrderLoaderS3EventPermission": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "SourceAccount": {
          "Ref": "AWS::AccountId"
        },
        "FunctionName": {
          "Ref": "olatexXlsxOrderLoader"
        },
        "Principal": "s3.amazonaws.com"
      }
    }
  }
}

Большое спасибо за вашу помощь!
С уважением, Анджей


comment
Можешь попробовать с s3:ObjectCreated:*, а не с S3:ObjectCreated:*. Может быть, в названиях событий учитывается регистр?   -  person Marcin    schedule 02.11.2020
comment
Это сработало! Спасибо, чувак, я буду искать это годами!   -  person awenclaw    schedule 02.11.2020
comment
Рад слышать. Если вы не возражаете, я дам ответ для будущего ответа.   -  person Marcin    schedule 02.11.2020


Ответы (1)


На основании комментариев.

Проблема была вызвана использованием S3:ObjectCreated:*, а не s3:ObjectCreated:*.

Имена событий S3 чувствительны к регистру.

person Marcin    schedule 02.11.2020