View a markdown version of this page

Ekspor data log ke Amazon S3 menggunakan AWS CLI - CloudWatch Log Amazon

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

Ekspor data log ke Amazon S3 menggunakan AWS CLI

Dalam contoh berikut, Anda menggunakan tugas ekspor untuk mengekspor semua data dari grup CloudWatch log log bernama my-log-group ke bucket Amazon S3 bernamaamzn-s3-demo-bucket. Contoh ini mengasumsikan bahwa Anda telah membuat grup log bernama my-log-group.

Mengekspor data log ke bucket S3 yang dienkripsi oleh AWS KMS didukung. Mengekspor ke bucket yang DSSE-KMS dienkripsi dengan tidak didukung.

Rincian tentang cara Anda mengatur ekspor tergantung pada apakah bucket Amazon S3 yang ingin Anda ekspor berada di akun yang sama dengan log yang sedang diekspor, atau di akun yang berbeda.

Same-account ekspor (CLI)

Jika bucket Amazon S3 berada di akun yang sama dengan log yang sedang diekspor, gunakan petunjuk di bagian ini.

Buat bucket S3 (CLI)

Sebaiknya gunakan bucket yang dibuat khusus untuk CloudWatch Log. Namun, jika Anda ingin menggunakan bucket yang ada, Anda dapat melewati prosedur ini.

catatan

Bucket S3 harus berada di Wilayah yang sama dengan data log untuk diekspor. CloudWatch Log tidak mendukung pengekspor data ke bucket S3 di Wilayah yang berbeda.

Untuk membuat bucket S3 menggunakan AWS CLI

Di jendela perintah, jalankan perintah create-bucket berikut, di mana LocationConstraint adalah Wilayah tempat Anda mengekspor data log.

aws s3api create-bucket --bucket amzn-s3-demo-bucket --create-bucket-configuration LocationConstraint=us-east-2

Berikut ini adalah output contoh.

{ "Location": "/amzn-s3-demo-bucket" }

Menyiapkan izin akses (CLI)

Untuk membuat tugas ekspor nanti, Anda harus masuk dengan peran AmazonS3ReadOnlyAccess IAM dan dengan izin berikut:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda:

Mengatur izin pada bucket S3 (CLI)

Secara default, semua bucket dan objek S3 bersifat pribadi. Hanya pemilik sumber daya, akun yang membuat bucket, yang dapat mengakses bucket dan objek yang ada di dalamnya. Namun, pemilik sumber daya dapat memilih untuk memberikan izin akses kepada sumber daya dan pengguna lain dengan menulis kebijakan akses.

penting

Untuk membuat ekspor ke bucket S3 lebih aman, kami sekarang meminta Anda untuk menentukan daftar akun sumber yang diizinkan untuk mengekspor data log ke bucket S3 Anda.

Dalam contoh berikut, daftar ID akun dalam aws:SourceAccount kunci akan menjadi akun dari mana pengguna dapat mengekspor data log ke bucket S3 Anda. Kun aws:SourceArn cinya adalah sumber daya di mana tindakan diambil. Anda dapat membatasi ini ke grup log tertentu, atau menggunakan wildcard seperti yang ditunjukkan dalam contoh ini.

Sebaiknya Anda juga menyertakan ID akun akun tempat bucket S3 dibuat, untuk memungkinkan ekspor dalam akun yang sama.

Untuk mengatur izin pada bucket S3
  1. Buat file bernama policy.json dan tambahkan kebijakan akses berikut, ubah amzn-s3-demo-bucket ke nama bucket S3 Anda dan Principal ke titik akhir Wilayah tempat Anda mengekspor data log, sepertius-east-1. Gunakan editor teks untuk membuat file kebijakan ini. Jangan gunakan konsol IAM.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowGetBucketAcl", "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } }, { "Sid": "AllowPutObject", "Action": "s3:PutObject", "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } } ] }
  2. Tetapkan kebijakan yang baru saja Anda tambahkan sebagai kebijakan akses di bucket Anda dengan menggunakan perintah put-bucket-policy. Kebijakan ini memungkinkan CloudWatch Log untuk mengekspor data log ke bucket S3 Anda. Pemilik bucket akan memiliki izin penuh atas semua objek yang diekspor.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
    Awas

    Jika bucket yang ada sudah memiliki satu atau lebih kebijakan yang dilampirkan, tambahkan pernyataan untuk akses CloudWatch Log ke kebijakan atau kebijakan tersebut. Sebaiknya Anda mengevaluasi hasil rangkaian izin untuk memastikan bahwa itu sesuai untuk pengguna yang akan mengakses bucket.

(Opsional) Mengekspor ke bucket Amazon S3 tujuan yang dienkripsi dengan SSE-KMS (CLI)

Prosedur ini diperlukan hanya jika Anda mengekspor ke bucket S3 yang menggunakan enkripsi sisi server dengan. AWS KMS keys Enkripsi ini dikenal sebagai SSE-KMS.

Untuk mengekspor ke bucket yang dienkripsi dengan SSE-KMS
  1. Gunakan editor teks untuk membuat file bernama key_policy.json dan menambahkan kebijakan akses berikut. Saat menambahkan kebijakan, buat perubahan berikut:

    • Ganti Region dengan Wilayah log Anda.

    • Ganti account-ARN dengan ARN dari akun yang memiliki kunci KMS.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" } ] }
  2. Masukkan perintah berikut:

    aws kms create-key --policy file://key_policy.json

    Berikut ini adalah contoh output dari perintah ini:

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-2:account-ARN:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false }
  3. Gunakan editor teks untuk membuat file yang disebut bucketencryption.json dengan konten berikut.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Masukkan perintah berikut, ganti amzn-s3-demo-bucket dengan nama bucket tempat Anda mengekspor log.

    aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration file://bucketencryption.json

    Jika perintah tidak mengembalikan kesalahan, prosesnya berhasil.

Buat tugas ekspor (CLI)

Gunakan perintah berikut untuk membuat tugas ekspor. Setelah Anda membuatnya, tugas ekspor mungkin memakan waktu dari beberapa detik hingga beberapa jam, tergantung pada ukuran data yang akan diekspor.

Untuk mengekspor data ke Amazon S3 menggunakan AWS CLI
  1. Masuk dengan izin yang memadai seperti yang didokumentasikanMenyiapkan izin akses (CLI).

  2. Di jendela perintah, gunakan perintah create-export-task berikut untuk membuat tugas ekspor.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "amzn-s3-demo-bucket" --destination-prefix "export-task-output"

    Berikut ini adalah output contoh.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }

Cross-account ekspor (CLI)

Jika bucket Amazon S3 berada di akun yang berbeda dari log yang sedang diekspor, gunakan petunjuk di bagian ini.

Buat bucket S3 untuk ekspor lintas akun (CLI)

Sebaiknya gunakan bucket yang dibuat khusus untuk CloudWatch Log. Namun, jika Anda ingin menggunakan bucket yang sudah ada, Anda dapat melompat ke langkah 2.

catatan

Bucket S3 harus berada di Wilayah yang sama dengan data log untuk diekspor. CloudWatch Log tidak mendukung pengekspor data ke bucket S3 di Wilayah yang berbeda.

Untuk membuat bucket S3 menggunakan AWS CLI

Di jendela perintah, jalankan perintah create-bucket berikut, di mana LocationConstraint adalah Wilayah tempat Anda mengekspor data log.

aws s3api create-bucket --bucket amzn-s3-demo-bucket --create-bucket-configuration LocationConstraint=us-east-2

Berikut ini adalah output contoh.

{ "Location": "/amzn-s3-demo-bucket" }

Menyiapkan izin akses untuk ekspor lintas akun (CLI)

Pertama, Anda harus membuat kebijakan IAM baru untuk mengaktifkan CloudWatch Log agar memiliki s3:PutObject tindakan untuk bucket Amazon S3 tujuan di akun tujuan.

Seiring dengan s3:PutObject tindakan, tindakan tambahan yang disertakan dalam kebijakan bergantung pada apakah bucket tujuan menggunakan AWS KMS enkripsi atau mengaktifkan ACL menggunakan setelan Kepemilikan Objek S3.

  • Jika menggunakan enkripsi KMS, tambahkan kms:Decrypt tindakan kms:GenerateDataKey dan untuk sumber daya kunci

  • Jika ACL diaktifkan pada bucket tambahkan s3:PutObjectAcl tindakan untuk sumber daya bucket

U amzn-s3-demo-bucket bah nama bucket S3 tujuan Anda dalam kebijakan berikut.

Kebijakan yang Anda buat tergantung pada apakah bucket tujuan menggunakan AWS KMS enkripsi. Jika tidak menggunakan AWS KMS enkripsi, buat kebijakan dengan konten berikut.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Jika bucket tujuan menggunakan AWS KMS enkripsi, buat kebijakan dengan konten berikut.

JSON
{ "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

Jika ACL diaktifkan pada bucket tujuan maka tambahkan s3: PutObjectAcl ke s3: Blok PutObject tindakan dalam kebijakan di atas.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Untuk membuat tugas ekspor, Anda harus masuk dengan peran IAM yang dilampirkan kebijakan terkel AmazonS3ReadOnlyAccess ola, kebijakan IAM yang dibuat di atas, dan juga dengan izin berikut:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda:

Menetapkan izin pada bucket S3 untuk ekspor lintas akun (CLI)

Secara default, semua bucket dan objek S3 bersifat pribadi. Hanya pemilik sumber daya, akun yang membuat bucket, yang dapat mengakses bucket dan objek yang ada di dalamnya. Namun, pemilik sumber daya dapat memilih untuk memberikan izin akses kepada sumber daya dan pengguna lain dengan menulis kebijakan akses.

penting

Untuk membuat ekspor ke bucket S3 lebih aman, kami sekarang meminta Anda untuk menentukan daftar akun sumber yang diizinkan untuk mengekspor data log ke bucket S3 Anda.

Dalam contoh berikut, daftar ID akun dalam aws:SourceAccount kunci akan menjadi akun dari mana pengguna dapat mengekspor data log ke bucket S3 Anda. Kun aws:SourceArn cinya adalah sumber daya di mana tindakan diambil. Anda dapat membatasi ini ke grup log tertentu, atau menggunakan wildcard seperti yang ditunjukkan dalam contoh ini.

Sebaiknya Anda juga menyertakan ID akun akun tempat bucket S3 dibuat, untuk memungkinkan ekspor dalam akun yang sama.

Untuk mengatur izin pada bucket S3
  1. Buat file bernama policy.json dan tambahkan kebijakan akses berikut, mengubah amzn-s3-demo-bucket nama bucket S3 tujuan Anda, Principal ke titik akhir Wilayah tempat Anda mengekspor data log, sepertius-west-1. Gunakan editor teks untuk membuat file kebijakan ini. Jangan gunakan konsol IAM.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::>amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
  2. Tetapkan kebijakan yang baru saja Anda tambahkan sebagai kebijakan akses di bucket Anda dengan menggunakan perintah put-bucket-policy. Kebijakan ini memungkinkan CloudWatch Log untuk mengekspor data log ke bucket S3 Anda. Pemilik bucket akan memiliki izin penuh atas semua objek yang diekspor.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
    Awas

    Jika bucket yang ada sudah memiliki satu atau lebih kebijakan yang dilampirkan, tambahkan pernyataan untuk akses CloudWatch Log ke kebijakan atau kebijakan tersebut. Sebaiknya Anda mengevaluasi hasil rangkaian izin untuk memastikan bahwa itu sesuai untuk pengguna yang akan mengakses bucket.

(Opsional) Mengekspor ke bucket Amazon S3 tujuan yang dienkripsi dengan SSE-KMS untuk ekspor lintas akun (CLI)

Prosedur ini diperlukan hanya jika Anda mengekspor ke bucket S3 yang menggunakan enkripsi sisi server dengan. AWS KMS keys Enkripsi ini dikenal sebagai SSE-KMS.

Untuk mengekspor ke bucket yang dienkripsi dengan SSE-KMS
  1. Gunakan editor teks untuk membuat file bernama key_policy.json dan menambahkan kebijakan akses berikut. Saat menambahkan kebijakan, buat perubahan berikut:

    • Ganti us-east-1 dengan Wilayah log Anda.

    • Ganti account-ARN dengan ARN dari akun yang memiliki kunci KMS.

    • Ganti 123456789012 dengan nomor akun yang memiliki kunci KMS.

    • key_iddengan Id kunci kms.

    • role_namedengan peran yang digunakan untuk membuat tugas ekspor.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCWLServicePrincipalUsage", "Effect": "Allow", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "EnableIAMUserPermissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "EnableIAMRolePermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
  2. Masukkan perintah berikut:

    aws kms create-key --policy file://key_policy.json

    Berikut ini adalah contoh output dari perintah ini:

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-1:123456789012:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false }
  3. Gunakan editor teks untuk membuat file yang disebut bucketencryption.json dengan konten berikut.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Masukkan perintah berikut, ganti amzn-s3-demo-bucket dengan nama bucket tempat Anda mengekspor log.

    aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration file://bucketencryption.json

    Jika perintah tidak mengembalikan kesalahan, prosesnya berhasil.

Membuat tugas ekspor untuk ekspor lintas akun (CLI)

Gunakan perintah berikut untuk membuat tugas ekspor. Setelah Anda membuatnya, tugas ekspor mungkin memakan waktu dari beberapa detik hingga beberapa jam, tergantung pada ukuran data yang akan diekspor.

Untuk mengekspor data ke Amazon S3 menggunakan AWS CLI
  1. Masuk dengan izin yang memadai seperti yang didokumentasikanMenyiapkan izin akses (CLI).

  2. Di jendela perintah, gunakan perintah create-export-task berikut untuk membuat tugas ekspor.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "amzn-s3-demo-bucket" --destination-prefix "export-task-output"

    Berikut ini adalah output contoh.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }