Int*_*ist 12 amazon-web-services aws-cloudformation aws-lambda
我正在尝试通过CloudFormation创建Lambda通知,但是收到有关ARN格式错误的错误.
我的CloudFormation错误或者它还不支持Lambda预览.
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"LambdaArn": {
"Type": "String",
"Default": "arn:aws:lambda:{some-region}:{some-account-id}:function:{some-fn-name}"
}
},
"Resources": {
"EventArchive": {
"Type": "AWS::S3::Bucket",
"Properties": {
"NotificationConfiguration": {
"TopicConfigurations": [
{
"Event": "s3:ObjectCreated:Put",
"Topic": {
"Ref": "LambdaArn"
}
}
]
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我推动这个CloudFormation时,我收到了消息:
The ARN is not well formed
Run Code Online (Sandbox Code Playgroud)
有没有人知道这意味着什么?我知道上面的例子已被修改,所以不使用我的实际 ARN,但在我的实际代码中,我直接从GUI复制了ARN.
此外,有趣的是我能够通过AWS控制台创建通知,因此我只是假设AWS CloudFormation尚不支持此功能(即使这并不十分清楚我在阅读文档时没有想到).
Mat*_*vin 25
看起来AWS现在已经发布了对在CloudFormation中直接通知lambda函数的支持.
S3 NotificationConfiguration定义过去只包含TopicConfigurations,但也已更新为包含LambdaConfigurations.
添加NoficationConfiguration后,请确保包含Lambda :: Permission资源,以便允许S3执行lambda函数.以下是可用作模板的示例权限:
"PhotoBucketExecuteProcessorPermission": {
"Type" : "AWS::Lambda::Permission",
"Properties" : {
"Action":"lambda:invokeFunction",
"FunctionName": { "Fn::GetAtt": [ "PhotoProcessor", "Arn" ]},
"Principal": "s3.amazonaws.com",
"SourceAccount": {"Ref" : "AWS::AccountId" },
"SourceArn": {
"Fn::Join": [":", [
"arn","aws","s3","", ""
,{"Ref" : "PhotoBucketName"}]]
}
}
}
Run Code Online (Sandbox Code Playgroud)
来自文档:
Amazon S3 向其报告指定事件的 Amazon SNS 主题。
看来,虽然S3 支持向 Lambda 发送事件,但 CloudFormation 还没有跟上。它需要一个 SNS ARN,您在其中提供 Lambda 函数 ARN。
目前,您似乎必须手动连接事件通知。
| 归档时间: |
|
| 查看次数: |
6644 次 |
| 最近记录: |