View a markdown version of this page

Mengirim log fungsi Lambda ke Amazon S3 - AWS Lambda

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

Mengirim log fungsi Lambda ke Amazon S3

Anda dapat mengonfigurasi fungsi Lambda untuk mengirim log langsung ke Amazon S3 menggunakan konsol Lambda. Fitur ini memberikan solusi hemat biaya untuk penyimpanan log jangka panjang dan memungkinkan opsi analisis yang kuat menggunakan layanan seperti Athena.

catatan

Anda dapat mengonfigurasi log fungsi Lambda untuk dikirim ke Amazon S3 menggunakan konsol Lambda,, AWS CLI AWS CloudFormation, dan semua AWS SDK.

Harga

Untuk detail tentang harga, lihat CloudWatch Harga Amazon.

Izin yang diperlukan untuk tujuan log Amazon S3

Saat menggunakan konsol Lambda untuk mengonfigurasi Amazon S3 sebagai tujuan log fungsi Anda, Anda perlu:

  1. Izin IAM yang diperlukan untuk menggunakan CloudWatch Log dengan Lambda.

  2. UntukMenyiapkan filter langganan CloudWatch Log untuk mengirim log fungsi Lambda ke Amazon S3. Filter ini menentukan peristiwa log mana yang dikirimkan ke bucket Amazon S3 Anda.

Menyiapkan filter langganan CloudWatch Log untuk mengirim log fungsi Lambda ke Amazon S3

Untuk mengirim CloudWatch log dari Log ke Amazon S3, Anda perlu membuat filter langganan. Filter ini menentukan peristiwa log mana yang dikirimkan ke bucket Amazon S3 Anda. Bucket Amazon S3 Anda harus berada di Wilayah yang sama dengan grup log Anda.

Cara membuat filter langganan untuk Amazon S3

  1. Buat bucket Amazon Simple Storage Service (Amazon S3). Sebaiknya gunakan bucket yang dibuat khusus untuk CloudWatch Log. Namun, jika Anda ingin menggunakan bucket yang sudah ada, lewati ke langkah 2.

    Jalankan perintah berikut, dengan mengganti Wilayah placeholder dengan Wilayah yang ingin Anda gunakan:

    aws s3api create-bucket --bucket amzn-s3-demo-bucket2 --create-bucket-configuration LocationConstraint=region
    catatan

    amzn-s3-demo-bucket2adalah contoh nama bucket Amazon S3. Itu dicad angkan. Agar prosedur ini berfungsi, Anda harus menggantinya dengan nama bucket Amazon S3 unik Anda.

    Berikut ini adalah output contoh:

    { "Location": "/amzn-s3-demo-bucket2" }
  2. Buat peran IAM yang memberikan izin CloudWatch Log untuk memasukkan data ke bucket Amazon S3 Anda. Kebijakan ini menyertakan kunci konteks kondisi SourceArn global aws: untuk membantu mencegah masalah keamanan wakil yang membingungkan. Untuk informasi lebih lanjut, lihat Pencegahan wakil yang bingung.

    1. Gunakan editor teks untuk membuat kebijakan kepercayaan dalam file ~/TrustPolicyForCWL.json sebagai berikut:

      { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } }, "Action": "sts:AssumeRole" } }
    2. Gunakan perintah create-role untuk membuat IAM role, dengan menentukan file kebijakan kepercayaan. Catatan Role.Arn nilai yang dikembalikan, karena Anda membutuhkannya di langkah selanjutnya:

      aws iam create-role \ --role-name CWLtoS3Role \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoS3Role", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/CWLtoS3Role" } }
  3. Buat kebijakan izin untuk menentukan tindakan apa yang dapat dilakukan CloudWatch Log pada akun Anda. Pertama, gunakan editor teks untuk membuat kebijakan izin dalam file ~/PermissionsForCWL.json:

    { "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2/*"] } ] }

    Kaitkan kebijakan izin dengan peran menggunakan put-role-policy perintah berikut:

    aws iam put-role-policy --role-name CWLtoS3Role --policy-name Permissions-Policy-For-S3 --policy-document file://~/PermissionsForCWL.json
  4. Buat grup Delivery log atau gunakan grup Delivery log yang ada.

    aws logs create-log-group --log-group-name my-logs --log-group-class DELIVERY --region REGION_NAME
  5. PutSubscriptionFilteruntuk mengatur tujuan

    aws logs put-subscription-filter --log-group-name my-logs --filter-name my-lambda-delivery --filter-pattern "" --destination-arn arn:aws:s3:::amzn-s3-demo-bucket2 --role-arn arn:aws:iam::123456789012:role/CWLtoS3Role --region REGION_NAME

Mengirim log fungsi Lambda ke Amazon S3

Di konsol Lambda, Anda dapat mengirim log fungsi langsung ke Amazon S3 setelah membuat fungsi baru. Untuk melakukan ini, selesaikan langkah-langkah ini:

  1. Masuk ke Konsol AWS Manajemen dan buka konsol Lambda.

  2. Pilih nama fungsi Anda.

  3. Pilih tab Konfigurasi.

  4. Pilih tab Alat Pem antauan dan operasi.

  5. Di bagian “Konfigurasi logging”, pilih Edit.

  6. Di bagian “Konten log”, pilih format log.

  7. Di bagian “Tujuan log”, selesaikan langkah-langkah berikut:

    1. Pilih layanan tujuan.

    2. Pilih untuk Membuat grup log baru atau menggunakan grup log yang ada.

      catatan

      Jika memilih grup log yang ada untuk tujuan Amazon S3, pastikan grup log yang Anda pilih adalah tipe grup Delivery log.

    3. Pilih bucket Amazon S3 untuk menjadi tujuan log fungsi Anda.

    4. Grup CloudWatch Delivery log muncul.

  8. Pilih Simpan.

catatan

Jika peran IAM yang disediakan di konsol tidak memiliki izin yang diperlukan, maka pengaturan tujuan gagal. Untuk memperbaikinya, lihat Izin yang diperlukan untuk tujuan log Amazon S3.

Cross-Account Pencatatan

Anda dapat mengonfigurasi Lambda untuk mengirim log ke bucket Amazon S3 di AWS akun yang berbeda. Ini memerlukan pengaturan tujuan dan konfigurasi izin yang sesuai di kedua akun.

Untuk petunjuk terperinci tentang cara menyiapkan log lintas akun, termasuk peran dan kebijakan IAM yang diperlukan, lihat Men yiapkan langganan lintas-akun baru di dokumentasi CloudWatch Log.