我试图在 Lambda 中使用 boto3 向 SNS 主题发布消息,如下所示:
def publish_msg(msg, bar):
response = SNS.publish(
TopicArn='blah_blah_arn',
Message=msg,
MessageAttributes={
'foo': {
'DataType': 'String',
'StringValue': bar
}
}
)
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它不断给我一个身份验证错误,如下所示:
Error publishing message because lambda_fn_role doesn't have the permissions to invoke SNS:Publish on resource blah_blah_arn
Run Code Online (Sandbox Code Playgroud)
但我确信我对该功能的策略是正确的,因此我将 TopicARN 更改为 TargetARN 并且它起作用了!
所以我的问题是:主题 ARN 和目标 ARN 之间有什么区别?什么时候应该使用其中一种而不是另一种?
boto3 的 AWS 文档根本没有回答这个问题。
非常感激!