如何使用boto3通过另一个帐户的SQS订阅一个帐户的SNS主题?
问题描述:
我试图在一个帐户中创建一个SNS主题并将其附加到配置规则。 我有3个这样的帐户,并希望在每个帐户中创建SNS主题。 现在我想通过第四个账户的SQS订阅3个不同账户的所有3个主题。如何使用boto3通过另一个帐户的SQS订阅一个帐户的SNS主题?
我可以手动完成。有人可以告诉我如何通过boto3完成。
在此先感谢。
答
为了使用boto3订阅账户B中存在的SQS在账户A中存在的SNS主题,以下是过程。
在帐户A中,创建SNS主题并添加适当的权限。 例如,
import boto3
sns_client = boto3.clien('sns')
topics = sns_client.create_topic(Name='SNS topic name')
sns_client.add_permission(
TopicArn=str(topics['TopicArn']),
Label=label,
AWSAccountId=[
"AccountB_Id",
],
ActionName=[
"GetTopicAttributes",
"SetTopicAttributes",
"AddPermission",
"RemovePermission",
"DeleteTopic",
"Subscribe",
"ListSubscriptionsByTopic",
"Publish",
"Receive"
]
)
我们了解帐户B认购创建话题,从账户B.执行以下代码
import boto3
subscription_client = boto3.client('sns')
subscription_client.subscribe(
TopicArn="ARN of the topic created",
Protocol="sqs",
Endpoint="ARN of the SQS present in Account B"
)
现在你会看到账户A的SNS话题被认购的账户B.
到目前为止,您对http://boto3.readthedocs.io/en/latest/reference/services/sns.html#SNS.Client.subscribe – mootmoot
已尝试了什么?当您手动执行该操作时,您采取了哪些步骤? – Mangohero1
我已经提到aws文档[SendMessageToSQS](http://docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.cross.account.html) –