Amazon Kinesis Data Firehose を Amazon Simple Notification Service (SNS) トピックに登録しようとしたとき、「クロスアカウントパスロールは許可されていません」というエラーメッセージが表示されます。
簡単な説明
アカウント A に Amazon Simple Notification Service (SNS) トピックを設定し、アカウント B に Amazon Kinesis Data Firehose を設定しました。SNS と Kinesis Data Firehose 間のクロスアカウントサブスクリプションを作成するには、以下を確認してください。
- サブスクリプションは、Kinesis Data Firehose もあるアカウント B で作成されます。
- サブスクリプションには、AWS Identity and Access Management (IAM) ロールがあります。
- IAM ロールの信頼ポリシーが更新され、SNS サービスがロールを引き継ぐことができるようになりました。
- アカウント A の SNS トピックのアクセスポリシーにより、アカウント B は SNS: Subscribe アクションを実行できるようになります。
解決方法
サブスクリプションが、Kinesis Data Firehose もあるアカウント B で作成されていることを確認します
次のように、アカウント B でサブスクリプションを作成します。
- AWS マネジメントコンソールにログインし、Amazon SNS コンソールに移動します。
- [サブスクリプション] を選択します。次に、[サブスクリプションの作成] を選択します。
- Amazon Data Firehose サブスクリプションを作成します。詳細については、「Amazon SNS トピックへの Kinesis Data Firehose 配信ストリームの登録」を参照してください。
IAM ロールに Kinesis 権限があり、関連する信頼ポリシーによって SNS サービスがロールを引き継ぐことができるかどうかを確認します
サブスクリプションには、Amazon SNS サービスプリンシパルを信頼しており、配信ストリームへの書き込み権限を有する IAM ロールが必要です。少なくとも、ポリシーから特定の配信ストリームで PutRecord 操作を実行する権限を与える必要があります。詳細については、「Kinesis Data Firehose 配信ストリームを Amazon SNS トピックに登録するための前提条件」を参照してください。
アカウント A の SNS トピックのアクセスポリシーにより、アカウント B が SNS: Subscribe アクションを実行できるかを確認します
アカウント B は、アカウント A の SNS トピックにアクセスして SNS: Subscribe アクションを実行するための適切な権限が必要となります。詳細については、「AWS アカウントにトピックへのアクセス権を付与する」を参照してください。
**注:**アカウント A のアクセスポリシーを更新すれば、より厳しい権限とアクセス条件の実装が可能です。