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 Logs mengirimkan pesan pengujian ke tujuan atas nama akun penerima. Saat filter langganan aktif nanti, CloudWatch Log mengirimkan peristiwa log ke tujuan atas nama akun sumber.
Untuk membuat tujuan
-
Tunggu hingga aliran Firehose yang Anda buat Langkah 1: Buat aliran pengiriman Firehose menjadi aktif. Anda dapat menggunakan perintah berikut untuk memeriksa StreamDescription.StreamStatus properti.
aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream"Selain itu, perhatikan nil DeliveryStreamDescription.DeliveryStreamARN ainya, karena Anda perlu menggunakannya di langkah selanjutnya. 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:::amzn-s3-demo-bucket", "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:::amzn-s3-demo-bucket", "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.
-
Saat aliran pengiriman aktif, buat peran IAM yang akan memberi CloudWatch Log izin untuk memasukkan data ke aliran Firehose Anda. Pertama, Anda harus membuat kebijakan kepercayaan dalam file ~/ TrustPolicyForCWL.json. Gunakan editor teks untuk membuat kebijakan ini. Untuk informasi selengkapnya tentang titik akhir CloudWatch Log, lihat titik akhir dan ku CloudWatch ota Amazon Logs.
Kebijakan ini mencakup kunci konteks kondisi
aws:SourceArnglobal yang menentukansourceAccountIduntuk membantu mencegah masalah keamanan wakil yang membingungkan. Jika Anda belum mengetahui ID akun sumber pada panggilan pertama, kami sarankan Anda menempatkan ARN tujuan di bidang ARN sumber. Dalam panggilan berikutnya, Anda harus mengatur sumber ARN menjadi sumber ARN yang sebenarnya yang Anda kumpulkan dari panggilan pertama. Untuk informasi selengkapnya, lihat Pencegahan wakil yang bingung.{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } } -
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.jsonBerikut ini adalah contoh output. Perhatikan nilai
Role.Arnyang dikembalikan, karena Anda akan perlu menggunakannya di langkah berikutnya.{ "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": { "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } } } } -
Buat kebijakan izin untuk menentukan tindakan yang dapat dilakukan CloudWatch Log pada akun Anda. Pertama, gunakan editor teks untuk membuat kebijakan izin dalam file ~/: PermissionsForCWL.json
{ "Statement":[ { "Effect":"Allow", "Action":["firehose:*"], "Resource":["arn:aws:firehose:region:222222222222:*"] } ] } -
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 -
Setelah aliran pengiriman Firehose berada dalam status aktif dan Anda telah membuat peran IAM, Anda dapat membuat tujuan CloudWatch Log.
-
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 sebagai
destination.arnpada 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"} } -
Setelah langkah sebelumnya selesai, dalam akun penerima data log (222222222222), kaitkan kebijakan akses dengan tujuan. Kebijakan ini memungkinkan akun pengirim data log (111111111111) mengakses tujuan hanya di akun penerima data log (222222222222). Anda dapat menggunakan editor teks untuk memasukkan kebijakan ini ke dalam
~/AccessPolicy.jsonfile: -
Ini membuat kebijakan yang menentukan siapa yang memiliki akses menulis ke tujuan. Kebijakan ini harus menentukan
logs:PutAccountPolicytindakanlogs:PutSubscriptionFilterdan untuk mengakses tujuan. Cross-account pengguna akan menggunakanPutAccountPolicytindakanPutSubscriptionFilterdan untuk mengirim peristiwa log ke tujuan.aws logs put-destination-policy \ --destination-name "testFirehoseDestination" \ --access-policy file://~/AccessPolicy.json
-