AWS Lambda&SNS:调用Lambda跨区域

Sha*_*e H 4 amazon-web-services amazon-sns aws-lambda

我有一个Lambda函数部署到几个地区.我想向SNS发布一条消息来调用这些函数.

使用aws-cli我创建了主题,给予了与SNS通信的Lambda权限,并创建了订阅.订阅似乎已成功创建,我可以在AWS控制台中看到它.但是,它不起作用.lambda函数不会被调用.

kix*_*orz 7

这是CloudFormation基于示例.你必须添加调用权限SNSLambda功能:

{
    "Type" : "AWS::Lambda::Permission",
    "Properties" : {
        "FunctionName" : { "Fn::GetAtt" : [ "YourLambda", "Arn" ] },
        "Action" : "lambda:InvokeFunction",
        "Principal" : "sns.amazonaws.com",
        "SourceArn" : { "Ref" : "YourSNSTopicArn" }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您需要订阅您LambdasSNS主题.这可以通过API调用或通过CloudFormation.

{
    "Type" : "AWS::SNS::Topic",
    "Properties" : {
        "TopicName" : "YourTopicName",
        "Subscription" : [ {
            "Endpoint" : { "Fn::GetAtt" : [ "YourLambda", "Arn" ] },
            "Protocol": "lambda"
        } ]
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您遗漏了任何此类内容,Lambdas则不会调用.以上信息的来源是官方博客文章通过SNS调用Lambda函数.