組織の AWS アカウントが自分のアカウントの Amazon SNS トピックにメッセージを発行することを許可するにはどうすればよいですか?

最終更新日: 2021 年 9 月 20 日

Amazon Simple Notification Service (Amazon SNS) トピックで、AWS Organizations の組織内の任意の AWS アカウントからのメッセージを受け付けるようにしたいと考えています。設定する方法を教えてください。

簡単な説明

Amazon SNS トピックのアクセスポリシーを設定して、組織内の任意のアカウントがトピックにメッセージを発行できるようにします。アクセスポリシーで、グローバル条件キー aws:PrincipalOrgID を含め、組織の ID を指定します。

解決方法

1.    Organizations コンソールで組織の ID を探します。詳細については、Viewing details of an organization from the management account を参照してください。

2.    Amazon SNS コンソールでトピックを作成します。新しいトピックの Amazon リソースネーム (ARN) を書き留めます。

3.    Amazon SNS コンソールで、次を実行してトピックを編集します。
ナビゲーション ペインで、[Topics] (トピック) を選択します。
作成したトピックを選択します。その後、[Edit] (編集) を選択します。
[Edit<topicName>] ページで、[Access policy -optional] (アクセスポリシー -オプション) を展開します。
次のポリシー例を JSON エディタに貼り付け、[Save changes] (変更を保存) を選択します。

重要: snsTopicArnトピックの ARN に置き換えます。その後、myOrgId を組織の ID に置き換えます。

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "allow-publish-from-organization-accounts",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "sns:Publish"
      ],
      "Resource": "snsTopicArn",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalOrgID": "myOrgId"
        }
      }
    }
  ]
}

ヒント: Amazon SNS API アクション (GetTopicAttributes など) の実行を組織のアカウントに許可するには、ポリシーの [Action] (アクション) で許可するアクションを追加します。

4.    テストのために SNS トピックに E メールアドレスをサブスクライブします。サブスクリプションを作成するときは、トピックの ARN を指定してください。

5.    お客様の E メールの中から、AWS 通知で受信したサブスクリプション確認メッセージを検索して、サブスクリプションを確認します。

6.    組織内の任意の AWS アカウントを使用して、アカウントの SNS トピックにメッセージを発行します。発行リクエストで、トピックの ARN を指定していることを確認します。

発行したメッセージは E メールに記載されます。