【发布时间】:2016-11-08 20:31:47
【问题描述】:
现在我的要求是,每当我通过 API 获取数据时,我必须将其保存到 2-3 个不同的位置(例如,保存到我自己的数据库、某些 BI 服务,有时还保存到日志数据库)。
我不知道是否可以将单个资源和单个方法绑定到多个 lambda 函数左右。所以,我的替代方法是,因为我已经知道如何通过订阅 SNS 主题来触发多个 lambda 函数,我想如果我能以某种方式从 API 网关发布到 SNS 主题,剩下的就很容易了。我目前的想法如下:
但问题是,我无法从 API Gateway 发布到 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"
]
}
]
}
然后使用 POST/GET 方法创建一个 API(我都尝试了),并将 SNS 主题添加为 AWS 服务代理,并将角色添加为执行角色。
【问题讨论】:
-
那么为什么你决定让 SNS 主题点击 API 网关,它会调用你的 lambda 函数而不是仅仅触发一个函数?这不会增加不必要的成本吗?
-
你认为另一个 lambda 函数会比 SNS 主题更便宜吗?
-
没有。我误解了你的问题。没关系。
标签: amazon-web-services aws-lambda amazon-sns aws-api-gateway