翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 2: 送信先を作成する
重要
この手順のステップは、ログデータの受取人アカウントで行われます。
送信先が作成されると、 CloudWatch Logs は受信者アカウントに代わって送信先にテストメッセージを送信します。サブスクリプションフィルターが後でアクティブになると、 CloudWatch Logs はソースアカウントに代わってログイベントを送信先に送信します。
送信先を作成するには
-
で作成した Firehose ストリームがアクティブステップ 1: Firehose 配信ストリームを作成するになるまで待ちます。次のコマンドを使用して、StreamDescription.StreamStatus プロパティを確認できます。
aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream"
さらに、後のステップで使用する必要があるため、DeliveryStreamDescription.DeliveryStreamARN 値を書き留めておきます。このコマンドの出力例:
{ "DeliveryStreamDescription": { "DeliveryStreamName": "my-delivery-stream", "DeliveryStreamARN": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream", "DeliveryStreamStatus": "ACTIVE", "DeliveryStreamEncryptionConfiguration": { "Status": "DISABLED" }, "DeliveryStreamType": "DirectPut", "VersionId": "1", "CreateTimestamp": "2021-02-01T23:59:15.567000-08:00", "Destinations": [ { "DestinationId": "destinationId-000000000001", "S3DestinationDescription": { "RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role", "BucketARN": "arn:aws:s3:::firehose-test-bucket1", "BufferingHints": { "SizeInMBs": 5, "IntervalInSeconds": 300 }, "CompressionFormat": "UNCOMPRESSED", "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CloudWatchLoggingOptions": { "Enabled": false } }, "ExtendedS3DestinationDescription": { "RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role", "BucketARN": "arn:aws:s3:::firehose-test-bucket1", "BufferingHints": { "SizeInMBs": 5, "IntervalInSeconds": 300 }, "CompressionFormat": "UNCOMPRESSED", "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CloudWatchLoggingOptions": { "Enabled": false }, "S3BackupMode": "Disabled" } } ], "HasMoreDestinations": false } }
配信ストリームがアクティブ状態で表示されるまでに 1~2 分かかる場合があります。
-
配信ストリームがアクティブになったら、Firehose ストリームにデータを置くアクセス許可を CloudWatch Logs に付与するIAMロールを作成します。まず、ファイル ~/TrustPolicyForCWL.json に信頼ポリシーを作成する必要があります。テキストエディタを使用してこのポリシーを作成します。 CloudWatch Logs エンドポイントの詳細については、「Amazon CloudWatch Logs エンドポイントとクォータ」を参照してください。
このポリシーには、「混乱した代理」のセキュリティ上の問題を防止するための
sourceAccountId
が指定されたaws:SourceArn
グローバル条件コンテキストキーが含まれています。最初の呼び出しでソースアカウント ID がまだわからない場合は、送信先をARNソースARNフィールドに入れることをお勧めします。以降の呼び出しでは、最初の呼び出しから収集したARN実際のソースARNとしてソースを設定する必要があります。詳細については、「混乱した代理の防止」を参照してください。{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:
region
:sourceAccountId
:*", "arn:aws:logs:region
:recipientAccountId
:*" ] } } } } -
aws iam create-role コマンドを使用してIAMロールを作成し、先ほど作成した信頼ポリシーファイルを指定します。
aws iam create-role \ --role-name CWLtoKinesisFirehoseRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json
以下は出力例です。後のステップで使用する必要があるため、
Role.Arn
の戻り値を書き留めます。{ "Role": { "Path": "/", "RoleName": "CWLtoKinesisFirehoseRole", "RoleId": "AROAR3BXASEKYJYWF243H", "Arn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole", "CreateDate": "2023-02-02T08:10:43+00:00", "AssumeRolePolicyDocument": { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:
region
:sourceAccountId
:*", "arn:aws:logs:region
:recipientAccountId
:*" ] } } } } } } -
アクセス許可ポリシーを作成して、Logs CloudWatch がアカウントで実行できるアクションを定義します。まず、テキストエディタを使用して、ファイル ~/PermissionsForCWL.json でアクセス許可ポリシーを作成します。
{ "Statement":[ { "Effect":"Allow", "Action":["firehose:*"], "Resource":["arn:aws:firehose:region:222222222222:*"] } ] }
-
次のコマンドを入力して、アクセス権限ポリシーをロールに関連付けます。
aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
-
Firehose 配信ストリームがアクティブ状態になり、IAMロールを作成したら、 CloudWatch ログの送信先を作成できます。
-
このステップでは、アクセスポリシーと送信先は関連付けられません。送信先の作成を完了するには 2 つのステップを行う必要がありますが、このステップはその最初のステップです。ペイロードで返されるARN新しい送信先の を書き留めます。これは、後のステップ
destination.arn
で として使用するためです。aws logs put-destination \ --destination-name "testFirehoseDestination" \ --target-arn "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream" \ --role-arn "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole"
{ "destination": { "destinationName": "testFirehoseDestination", "targetArn": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream", "roleArn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole", "arn": "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination"} }
-
前のステップが完了したら、ログデータ受取人アカウント (222222222222) で、アクセスポリシーを送信先に関連付けます。このポリシーにより、ログデータの送信者アカウント (111111111111) に対し、ログデータの受信者アカウント (222222222222) にある送信先にアクセスすることを許可します。テキストエディタを使用して、このポリシーを
~/AccessPolicy.json
ファイルに配置できます。{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : ["logs:PutSubscriptionFilter","logs:PutAccountPolicy"], "Resource" : "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination" } ] }
-
これにより、誰が送信先に書き込むことができるかを定義するポリシーが作成されます。このポリシーでは、送信先にアクセスするための
logs:PutSubscriptionFilter
およびlogs:PutAccountPolicy
アクションを指定する必要があります。クロスアカウントユーザーは、PutSubscriptionFilter
およびPutAccountPolicy
アクションを使用してログイベントを送信先に送信します。aws logs put-destination-policy \ --destination-name "testFirehoseDestination" \ --access-policy file://~/AccessPolicy.json
-