使用 API Gateway 发布 SNS 主题/使用 API Gateway 的多个 lambda 函数

Wil*_*mes 5 amazon-web-services amazon-sns aws-lambda aws-api-gateway

现在我的要求是,每当我通过 API 获取数据时,我都必须将其保存到 2-3 个不同的位置(例如,保存到我自己的数据库、某些 BI 服务中,有时还保存到日志记录数据库中)。

我不知道是否可以将单个资源和单个方法绑定到多个 lambda 函数左右。所以,我的替代方法是,因为我已经知道如何通过订阅 SNS 主题来触发多个 lambda 函数,我想也许如果我能以某种方式从 API 网关发布到 SNS 主题,剩下的就很容易了。我目前的想法如下:

当前的实施思路

但问题是,我无法从 API 网关发布到 SNS 主题。我收到类似的错误TopicArn or TargetArn Reason: no value for required parameter

我的做法是,创建一个普通的 SNS 主题。然后,创建一个特殊的角色策略,如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "StmtXXXXXXXXXXX",
            "Effect": "Allow",
            "Action": [
                "sns:Publish",
                "sns:Subscribe",
                "sns:Unsubscribe"
            ],
            "Resource": [
                "SNS-TOPIC-ARN"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

然后使用 POST/GET 方法创建 API(我都尝试过)并添加 SNS 主题作为 AWS 服务代理和角色作为执行角色。

Ka *_*ong 2

您必须通过 AWS API Gateway 将 TopicArn 或 TargetArn 传递到 SNS。有不同的方法可以实现这一目标:

1. 您可以创建一个方法请求参数,然后创建一个名为 的集成请求查询字符串参数,TopicArn/TargetArn并将方法请求参数映射到它。

2. 您可以创建名为 的集成请求查询字符串参数TopicArn/TargetArn,并将 Arn 设置为静态值。

以下是AWS API Gateway 提供的分步说明。