

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

# Konfigurasikan logging untuk HTTP APIs di API Gateway
<a name="http-api-logging"></a>

Anda dapat mengaktifkan logging untuk menulis log ke CloudWatch Log. Anda dapat menggunakan [variabel logging](http-api-logging-variables.md) untuk menyesuaikan konten log Anda.

Untuk meningkatkan postur keamanan Anda, sebaiknya Anda menulis CloudWatch log ke Log untuk semua tahapan API HTTP Anda. Anda mungkin perlu melakukan ini untuk mematuhi berbagai kerangka kerja kepatuhan. Untuk informasi selengkapnya, lihat [kontrol Amazon API Gateway](https://docs.aws.amazon.com/securityhub/latest/userguide/apigateway-controls.html) di *Panduan AWS Security Hub Pengguna*.

Untuk mengaktifkan logging untuk API HTTP, Anda harus melakukan hal berikut.

1. Pastikan bahwa pengguna Anda memiliki izin yang diperlukan untuk mengaktifkan logging.

1. Buat grup CloudWatch log Log.

1. Berikan ARN dari grup CloudWatch log Log untuk tahap API Anda.

## Izin untuk mengaktifkan logging
<a name="http-api-logging.permissions"></a>

Untuk mengaktifkan logging untuk API, pengguna Anda harus memiliki izin berikut.

**Example**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:GetLogEvents",
                "logs:FilterLogEvents"
            ],
            "Resource": "arn:aws:logs:{{us-east-2}}:{{123456789012}}:log-group:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:PutResourcePolicy",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:CreateLogGroup",
                "logs:DescribeResourcePolicies",
                "logs:GetLogDelivery",
                "logs:ListLogDeliveries"
            ],
            "Resource": "*"
        }
    ]
}
```

## Buat grup log dan aktifkan logging untuk HTTP APIs
<a name="http-api-enable-logging"></a>

Anda dapat membuat grup log dan mengaktifkan log akses menggunakan Konsol Manajemen AWS atau AWS CLI.

------
#### [ Konsol Manajemen AWS ]

1.  Membuat sebuah grup log. 

   Untuk mempelajari cara membuat grup log menggunakan konsol, lihat [Membuat Grup Log di Panduan Pengguna CloudWatch Log Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih API HTTP.

1. Di bawah tab **Monitor** di panel navigasi utama, pilih **Logging**.

1. Pilih tahap untuk mengaktifkan logging dan pilih **Pilih**. 

1. Pilih **Edit** untuk mengaktifkan pencatatan akses. 

1. Aktifkan **Pencatatan akses**, masukkan CloudWatch Log, dan pilih format log.

1. Pilih **Simpan**.

------
#### [ AWS CLI ]

[create-log-group](https://docs.aws.amazon.com/cli/latest/reference/logs/create-log-group.html)Perintah berikut membuat grup log:

```
aws logs create-log-group --log-group-name {{my-log-group}}
```

Anda memerlukan Nama Sumber Daya Amazon (ARN) untuk grup log Anda untuk mengaktifkan logging. Format ARN adalah arn:aws:logs: ::log-group:. {{region}} {{account-id}} {{log-group-name}}

Perintah [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html) berikut mengaktifkan logging untuk `$default` tahap HTTP API:

```
aws apigatewayv2 update-stage --api-id {{abcdef}} \
    --stage-name '{{$default}}' \
    --access-log-settings '{"DestinationArn": "arn:aws:logs:{{region}}:{{account-id}}:log-group:{{log-group-name}}", "Format": "$context.identity.sourceIp - - [$context.requestTime] \"$context.httpMethod $context.routeKey $context.protocol\" $context.status $context.responseLength $context.requestId"}'
```

------

## Contoh format log
<a name="http-api-enable-logging.examples"></a>

Contoh beberapa format log akses umum tersedia di konsol API Gateway dan dicantumkan sebagai berikut.
+ `CLF`([Format Log Umum](https://httpd.apache.org/docs/current/logs.html#common)):

  ```
  $context.identity.sourceIp - - [$context.requestTime] "$context.httpMethod $context.routeKey $context.protocol" $context.status $context.responseLength $context.requestId $context.extendedRequestId
  ```
+  `JSON`: 

  ```
  { "requestId":"$context.requestId", "ip": "$context.identity.sourceIp", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod","routeKey":"$context.routeKey", "status":"$context.status","protocol":"$context.protocol", "responseLength":"$context.responseLength", "extendedRequestId": "$context.extendedRequestId" }
  ```
+ `XML`: 

  ```
  <request id="$context.requestId"> <ip>$context.identity.sourceIp</ip> <requestTime>$context.requestTime</requestTime> <httpMethod>$context.httpMethod</httpMethod> <routeKey>$context.routeKey</routeKey> <status>$context.status</status> <protocol>$context.protocol</protocol> <responseLength>$context.responseLength</responseLength> <extendedRequestId>$context.extendedRequestId</extendedRequestId> </request>
  ```
+ `CSV`(nilai yang dipisahkan koma):

  ```
  $context.identity.sourceIp,$context.requestTime,$context.httpMethod,$context.routeKey,$context.protocol,$context.status,$context.responseLength,$context.requestId,$context.extendedRequestId
  ```