Langkah 2: Buat Tujuan - CloudWatch Log Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Langkah 2: Buat Tujuan

penting

Semua langkah dalam prosedur ini harus dilakukan di akun penerima data log.

Saat tujuan dibuat, CloudWatch Log akan mengirimkan pesan pengujian ke tujuan atas nama akun penerima. Ketika filter langganan aktif nanti, CloudWatch Log mengirimkan peristiwa log ke tujuan atas nama akun sumber.

Untuk membuat tujuan
  1. Tunggu hingga pengaliran Kinesis Data Firehose yang Anda buat di Langkah 1: Buat Kinesis Data Firehose menjadi aktif. Anda dapat menggunakan perintah berikut untuk memeriksa StreamDescription. StreamStatusproperti.

    aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream"

    Selain itu, perhatikan DeliveryStreamDescription. DeliveryStreamNilai ARN, karena Anda akan perlu menggunakannya di langkah berikutnya. Contoh output dari perintah ini:

    { "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 } }

    Mungkin diperlukan satu atau dua menit bagi aliran pengiriman Anda untuk muncul dalam keadaan aktif.

  2. Saat aliran pengiriman aktif, buat IAM role yang akan memberikan izin kepada CloudWatch Logs untuk memasukkan data ke pengaliran Kinesis Data Firehose Anda. Pertama, Anda harus membuat kebijakan kepercayaan dalam file ~/TrustPolicyFor CWL.json. Gunakan editor teks untuk membuat kebijakan ini. Untuk informasi selengkapnya tentang endpoint CloudWatch Logs, lihat Titik akhir dan kuota Amazon CloudWatch Logs.

    Kebijakan ini mencakup kunci konteks kondisiaws:SourceArn global yang menentukansourceAccountId untuk membantu mencegah masalah keamanan wakil yang membingungkan. Jika Anda belum mengetahui ID akun sumber pada panggilan pertama, sebaiknya letakkan ARN tujuan di bidang ARN sumber. Dalam panggilan berikutnya, Anda harus mengatur ARN sumber menjadi sumber ARN aktual yang Anda kumpulkan dari panggilan pertama. Untuk informasi selengkapnya, lihat Bingung wakil pencegahan.

    { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } }
  3. Gunakan perintah aws iam create-role untuk membuat IAM role, dengan menentukan file kebijakan kepercayaan yang baru saja Anda buat.

    aws iam create-role \ --role-name CWLtoKinesisFirehoseRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json

    Berikut ini adalah contoh output. Perhatikan nilai Role.Arn yang dikembalikan, karena Anda akan perlu menggunakannya di langkah berikutnya.

    { "Role": { "Path": "/", "RoleName": "CWLtoKinesisFirehoseRole", "RoleId": "AROAR3BXASEKYJYWF243H", "Arn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole", "CreateDate": "2021-02-02T08:10:43+00:00", "AssumeRolePolicyDocument": { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } } } }
  4. Buat kebijakan izin untuk menentukan tindakan yang dapat dilakukan oleh CloudWatch Logs di akun Anda. Pertama, gunakan editor teks untuk membuat kebijakan izin dalam file ~/PermissionsFor CWL.json:

    { "Statement":[ { "Effect":"Allow", "Action":["firehose:*"], "Resource":["arn:aws:firehose:region:222222222222:*"] } ] }
  5. Kaitkan kebijakan izin dengan peran tersebut dengan memasukkan perintah berikut:

    aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
  6. Setelah aliran pengiriman Kinesis Data Firehose dalam keadaan aktif dan Anda telah membuat IAM role, Anda dapat membuat tujuan CloudWatch Logs.

    1. Langkah ini tidak akan mengaitkan kebijakan akses dengan tujuan Anda dan hanya merupakan langkah pertama dari dua langkah yang akan menyelesaikan pembuatan tujuan. Catat ARN tujuan baru yang dikembalikan dalam payload, karena Anda akan menggunakan ini sebagaidestination.arn pada langkah selanjutnya.

      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"} }
    2. Setelah langkah sebelumnya selesai, dalam akun penerima data log (222222222222), kaitkan kebijakan akses dengan tujuan.

      Kebijakan ini memungkinkan akun pengirim data log (1111111111) untuk mengakses tujuan hanya dalam akun penerima data log (222222222222222222222222222222222222222222222222222222). Anda dapat menggunakan editor teks untuk menempatkan kebijakan ini dalam file ~/AccessPolicy .json:

      { "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination" } ] }
    3. Ini membuat kebijakan yang menentukan siapa yang memiliki akses menulis ke tujuan. Kebijakan ini harus menentukanPutSubscriptionFilter tindakan log-nya: untuk mengakses tujuan. Pengguna lintas akun akan menggunakan PutSubscriptionFiltertindakan untuk mengirim log acara ke tujuan:

      aws logs put-destination-policy \ --destination-name "testFirehoseDestination" \ --access-policy file://~/AccessPolicy.json