代码之家  ›  专栏  ›  技术社区  ›  Vinay Wadagavi

如何使用boto3通过另一个帐户的SQS订阅一个帐户的SNS主题?

  •  6
  • Vinay Wadagavi  · 技术社区  · 8 年前

    我有3个这样的帐户,并希望在每个帐户创建SNS主题。 现在我想通过第四个帐户的SQS订阅3个不同帐户的所有3个主题。

    我可以手动操作。谁能告诉我如何通过boto3做到这一点。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Vinay Wadagavi    8 年前

    在帐户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账户订阅了。