AWS Lambda& SNS:调用Lambda跨区域

时间:2016-01-26 03:22:12

标签: amazon-web-services amazon-sns aws-lambda

我将Lambda功能部署到多个地区。我想向SNS发布一条消息来调用这些函数。

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

1 个答案:

答案 0 :(得分:6)

这是基于CloudFormation的示例。您必须将SNS的调用权限添加到Lambda函数:

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

然后,您需要将Lambdas订阅到SNS主题。这可以通过API调用或CloudFormation完成。

{
    "Type" : "AWS::SNS::Topic",
    "Properties" : {
        "TopicName" : "YourTopicName",
        "Subscription" : [ {
            "Endpoint" : { "Fn::GetAtt" : [ "YourLambda", "Arn" ] },
            "Protocol": "lambda"
        } ]
    }
}

如果您错过了任何此类内容,则Lambdas无法调用。上述信息的来源是官方博客文章Invoking Lambda functions via SNS