

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
<a name="logging-with-s3"></a>

Anda dapat mengonfigurasi fungsi Lambda Anda 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 AWS CLI Lambda,,, dan semuanya. AWS CloudFormation AWS SDKs

## Harga
<a name="logging-s3-pricing"></a>

Untuk detail tentang harga, lihat [ CloudWatch harga Amazon](https://aws.amazon.com/cloudwatch/pricing/#Vended_Logs).

## Izin yang diperlukan untuk tujuan log Amazon S3
<a name="logging-s3-permissions"></a>

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

1. [Izin IAM yang diperlukan](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html#monitoring-cloudwatchlogs-prereqs) untuk menggunakan CloudWatch Log dengan Lambda.

1. Untuk[Siapkan filter langganan CloudWatch Log untuk mengirim log fungsi Lambda ke Amazon S3](#using-cwl-subscription-filter-lambda-s3). Filter ini menentukan peristiwa log mana yang dikirimkan ke bucket Amazon S3 Anda.

## Siapkan filter langganan CloudWatch Log untuk mengirim log fungsi Lambda ke Amazon S3
<a name="using-cwl-subscription-filter-lambda-s3"></a>

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.

### Untuk membuat filter berlangganan untuk Amazon S3
<a name="create-subscription-filter-s3"></a>

1. Buat bucket Amazon Simple Storage Service (Amazon S3). Kami menyarankan Anda menggunakan 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-bucket2`adalah contoh nama bucket Amazon S3. Itu *dicadangkan*. Agar prosedur ini berfungsi, Anda harus menggantinya dengan nama bucket Amazon S3 unik Anda.

   Berikut ini adalah output contoh:

   ```
   {
       "Location": "/amzn-s3-demo-bucket2"
   }
   ```

1. Buat peran IAM yang memberikan izin CloudWatch Log untuk memasukkan data ke dalam bucket Amazon S3 Anda. Kebijakan ini mencakup aws: SourceArn global condition context key untuk membantu mencegah masalah keamanan deputi yang membingungkan. Untuk informasi lebih lanjut, lihat [Pencegahan wakil yang bingung](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions-confused-deputy.html).

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

   1. Gunakan perintah create-role untuk membuat IAM role, dengan menentukan file kebijakan kepercayaan. Perhatikan nilai Role.Arn yang dihasilkan, karena Anda akan membutuhkannya dalam 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"
          }
      }
      ```

1. 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
   ```

1. 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
   ```

1. `PutSubscriptionFilter`untuk 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
<a name="logging-s3-setup"></a>

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.

1. Pilih nama fungsi Anda.

1. Pilih tab **Konfigurasi**.

1. Pilih tab **Alat Pemantauan dan Operasi**.

1. Di bagian “Konfigurasi logging”, pilih **Edit**.

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

1. Di bagian “Log destination”, selesaikan langkah-langkah berikut:

   1. Pilih layanan tujuan.

   1. 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 jenis grup `Delivery` log.

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

   1. Grup CloudWatch `Delivery` log akan muncul.

1. Pilih **Simpan**.

**catatan**  
Jika peran IAM yang disediakan di konsol tidak memiliki izin yang diperlukan, maka pengaturan tujuan akan gagal. Untuk memperbaikinya, lihat [Izin yang diperlukan untuk tujuan log Amazon S3](#logging-s3-permissions).

## Pencatatan Lintas Akun
<a name="cross-account-logging-s3"></a>

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

Untuk petunjuk mendetail tentang pengaturan pencatatan lintas akun, termasuk peran dan kebijakan IAM yang diperlukan, lihat [Menyiapkan langganan lintas akun baru](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CrossAccountSubscriptions.html) di dokumentasi Log. CloudWatch 