【发布时间】:2023-04-10 20:21:01
【问题描述】:
Lambda now supports 添加 SNS 主题(以及其他内容)作为目的地。这可以通过 UI 进行设置。
但我无法让它工作。我有一个简单的 Lambda,它返回一个我希望它推送到 SNS 主题的 JSON。我打开 Lambda 的目的地并在目的地中粘贴主题。这导致“输入无效”。
为了让目的地能够识别主题 ARN,我首先授予 Lambda SNS 完全访问权限,然后还将我的 Lambda 角色添加到 SNS 主题访问策略中。
"Resource": [topic arn],
"Condition": {
"StringEquals": {
"AWS:SourceOwner": [topic owner],
"Role": [Lambda role arn] <---single added line
}
}
不再有“无效输入”!
不幸的是,当我返回 Lambda 并再次通过 Destination 流程时,我现在得到了
提供的目标配置 DestinationConfig(onSuccess=OnSuccess(destination=[topic arn]), onFailure=null) 无效。
但只能定义成功或失败(单选按钮),不能同时定义两者。所以大概是我在某处搞砸了权限,而 Lambda 实际上仍然无法发布。
我需要哪些权限来授予 Lambda 角色,以及我需要如何更新主题访问权限才能使其正常工作?
编辑:VPC
我没有提到我的 Lambda 位于 VPC 上。因为我正在调用一个外部数据库并且需要一个列入白名单的 IP,所以我正在使用 VPC/NAT 设置来保持一个稳定的 IP。
我不确定这是否会影响我的情况,但根据我对 VPC 的初步了解,我猜这会限制 Lambda 可以直接与之交互的内容。
【问题讨论】:
-
同样的问题;你找到解决办法了吗?
-
回过头来看,我最后只是直接在 lambda 代码中调用了 SNS
标签: aws-lambda amazon-sns amazon-vpc