我正在 Code9 中开发我的第一个 lambda,它假设由 S3 事件触发。不幸的是,当我尝试部署时,我不断收到 CloudFormation 错误:
"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)"
请参阅下面来自 AWS Mgm 控制台的 CloudFormation 事件:
下面是我的 AWS SAMtemplate.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 策略之后的行,因为我怀疑错误与权限不足有关,但它没有帮助。
下面我附上从 SAM 生成的 CloudFormation 模板template.yaml
:
{
"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"
}
}
}
}
非常感谢您的帮助!
问候
安杰伊