View a markdown version of this page

Langkah 1: 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 1: Buat tujuan

penting

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

Untuk contoh ini, akun penerima data log memiliki ID akun 999999999999, sedangkan ID AWS akun pengirim AWS data log adalah 111111111111.

Contoh ini membuat tujuan menggunakan aliran Amazon Kinesis Data Streams yang disebut RecipientStream, dan peran yang memungkinkan CloudWatch Log menulis data ke sana.

Saat tujuan dibuat, CloudWatch Log 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
  1. Di akun penerima, buat aliran tujuan di Amazon Kinesis Data Streams. Di jendela perintah, ketik:

    aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
  2. Tunggu sampai streaming menjadi aktif. Anda dapat menggunakan perintah aws kinesis describe-stream untuk memeriksa properti. StreamDescription.StreamStatus Selain itu, perhatikan nil StreamDescription.StreamARN ainya karena Anda akan meneruskannya ke CloudWatch Log nanti:

    aws kinesis describe-stream --stream-name "RecipientStream" { "StreamDescription": { "StreamStatus": "ACTIVE", "StreamName": "RecipientStream", "StreamARN": "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream", "Shards": [ { "ShardId": "shardId-000000000000", "HashKeyRange": { "EndingHashKey": "34028236692093846346337460743176EXAMPLE", "StartingHashKey": "0" }, "SequenceNumberRange": { "StartingSequenceNumber": "4955113521868881845667950383198145878459135270218EXAMPLE" } } ] } }

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

  3. Buat peran IAM yang memberi CloudWatch Log izin untuk memasukkan data ke aliran Anda. Pertama, Anda harus membuat kebijakan kepercayaan dalam file ~/ TrustPolicyForCWL.json. Gunakan editor teks untuk membuat file kebijakan ini, jangan menggunakan konsol IAM.

    Kebijakan ini mencakup kunci konteks kondisi aws:SourceArn global yang menentukan sourceAccountId untuk 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" }, "Condition": { "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } }, "Action": "sts:AssumeRole" } }
  4. Gunakan perintah aws iam create-role untuk membuat IAM role, dengan menentukan file kebijakan kepercayaan. Perhatikan Role.Arn nilai yang dikembalikan karena juga akan diteruskan ke CloudWatch Log nanti:

    aws iam create-role \ --role-name CWLtoKinesisRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } }, "Principal": { "Service": "logs.amazonaws.com" } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoKinesisRole", "Path": "/", "Arn": "arn:aws:iam::999999999999:role/CWLtoKinesisRole" } }
  5. 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": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:region:999999999999:stream/RecipientStream" } ] }
  6. Kaitkan kebijakan izin dengan peran dengan menggunakan perintah aws iam put- role-policy:

    aws iam put-role-policy \ --role-name CWLtoKinesisRole \ --policy-name Permissions-Policy-For-CWL \ --policy-document file://~/PermissionsForCWL.json
  7. Setelah streaming dalam keadaan aktif dan Anda telah membuat peran IAM, Anda dapat membuat tujuan CloudWatch Log.

    1. Langkah ini tidak mengaitkan kebijakan akses dengan tujuan Anda dan hanya merupakan langkah pertama dari dua langkah yang menyelesaikan pembuatan tujuan. Cat DestinationArn at yang dikembalikan dalam payload:

      aws logs put-destination \ --destination-name "testDestination" \ --target-arn "arn:aws:kinesis:region:999999999999:stream/RecipientStream" \ --role-arn "arn:aws:iam::999999999999:role/CWLtoKinesisRole" { "DestinationName" : "testDestination", "RoleArn" : "arn:aws:iam::999999999999:role/CWLtoKinesisRole", "DestinationArn" : "arn:aws:logs:us-east-1:999999999999:destination:testDestination", "TargetArn" : "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream" }
    2. Setelah langkah 7a selesai, di akun penerima data log, kaitkan kebijakan akses dengan tujuan. Kebijakan ini harus menentukan log: PutSubscriptionFilter action dan memberikan izin kepada akun pengirim untuk mengakses tujuan.

      Kebijakan ini memberikan izin ke AWS akun yang mengirimkan log. Anda dapat menentukan hanya satu akun ini dalam kebijakan, atau jika akun pengirim adalah anggota organisasi, kebijakan dapat menentukan ID organisasi organisasi. Dengan cara ini, Anda dapat membuat hanya satu kebijakan untuk mengizinkan beberapa akun dalam satu organisasi mengirim log ke akun tujuan ini.

      Gunakan editor teks untuk membuat file bernama ~/AccessPolicy.json dengan salah satu pernyataan kebijakan berikut.

      Kebijakan contoh pertama ini memungkinkan semua akun di organisasi yang memiliki ID o-1234567890 untuk mengirim log ke akun penerima.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": "logs:PutSubscriptionFilter", "Resource": "arn:aws:logs:us-east-1:999999999999:destination:testDestination", "Condition": { "StringEquals": { "aws:PrincipalOrgID": [ "o-1234567890" ] } } } ] }

      Contoh berikut ini memungkinkan hanya akun pengirim data log (111111111111) untuk mengirim log ke akun penerima data log.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "111111111111" }, "Action": "logs:PutSubscriptionFilter", "Resource": "arn:aws:logs:us-east-1:999999999999:destination:testDestination" } ] }
    3. Lampirkan kebijakan yang Anda buat pada langkah sebelumnya ke tujuan.

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

      Kebijakan akses ini memungkinkan pengguna di AWS Akun dengan ID 111111111111 untuk menelepon ke tujuan dengan ARN arn:aws:logs :::999999999999:destin PutSubscriptionFilter ation:testDestination. region Setiap upaya pengguna lain untuk menelepon PutSubscriptionFilter ke tujuan ini akan ditolak.

      Untuk memvalidasi hak istimewa pengguna berdasarkan kebijakan akses, lihat Menggunakan Validator Kebijakan dalam Panduan Pengguna IAM.

Setelah selesai, jika Anda menggunakan AWS Organizations untuk izin lintas akun, ikuti langkah-langkah diLangkah 2: (Hanya jika menggunakan organisasi) Buat peran IAM. Jika Anda memberikan izin langsung ke akun lain alih-alih menggunakan Organisasi, Anda dapat melewati langkah itu dan melanjutkan keLangkah 4: Buat filter langganan.