Amazon CloudWatch ログのログデータを、別の AWS リージョンにある別の AWS アカウントの Amazon Kinesis データストリームに送信する必要があります。
解決策
CloudWatch ログイベントを複数の AWS アカウントとリージョンの Amazon Kinesis Data Streams に配信するには、サブスクリプションを使用してクロスアカウントログデータ共有を設定します。次に、AWS リージョンを指定するために、次の手順を実行します。
-
AWS Identity and Access Management (IAM) ロールと信頼ポリシーを使用して、データ受信側アカウントにおいて、Kinesis で送信先データストリームを作成します。
データストリームを作成するには、create-stream コマンドを使用するときに --region を指定します。このコマンドの次の例では、us-west-2 にデータストリーム YourStreamName を作成します。
$ aws kinesis create-stream --stream-name "YourStreamName" --shard-count 1 --region us-west-2
-
この例では、CloudWatch が us-east-1 リージョンにログを記録し、アカウント ID は 111111111111 です。その後、CloudWatch は us-west-2 にある別の AWS ユーザーの Kinesis データストリームに、AWS アカウント ID 999999999999 でログインします。
StreamDescription.StreamStatus プロパティを確認するには、describe-stream コマンドを使用するときに --region を指定します。次のコマンドの例では、us-west-2 にあるストリーム YourStreamName をチェックしています。
$ kinesis describe-stream --stream-name "YourStreamName" --region us-west-2
CloudWatch ログの宛先を作成するには、 put-destination コマンドを使用します。次に、--role-arn の --region を、ソース CloudWatch ログと同じリージョンに設定します。次の例では、このコマンドは us-east-1 にある受信側アカウント 999999999999 にログの宛先を作成します。
>aws logs put-destination \
--destination-name "testDestination" \
--target-arn "arn:aws:kinesis:us-west-2:222222222222:stream/YourStreamName" \
--role-arn "arn:aws:iam::222222222222:role/YourIAMRoleName" --region us-east-1
-
送信側アカウントで、サブスクリプションフィルターを作成します。(たとえば、AWS アカウント ID 999999999999 など。)
-
(オプション) データストリームが機能していることを確認するために、ログイベントのフローを検証します。
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
関連情報
ロールに関する用語と概念