

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

# Analisis log akses bucket dengan Amazon Athena di Lightsail
Gunakan log akses

Dalam panduan ini, kami menunjukkan cara mengidentifikasi permintaan ke bucket menggunakan log akses. Untuk informasi selengkapnya, lihat [Log akses Bucket](amazon-lightsail-bucket-access-logs.md).

**Daftar Isi**
+ [Log akses kueri untuk permintaan menggunakan Amazon Athena](#querying-access-logs-for-requests)
+ [Identifikasi permintaan akses objek menggunakan log akses Amazon S3](#identifying-object-access-requests)

## Log akses kueri untuk permintaan menggunakan Amazon Athena


Anda dapat menggunakan Amazon Athena untuk menanyakan dan mengidentifikasi permintaan ke bucket di log akses.

Lightsail menyimpan log akses sebagai objek dalam ember Lightsail. Seringkali lebih mudah menggunakan alat yang dapat menganalisis log. Athena mendukung analisis objek dan dapat digunakan untuk query log akses.

**Contoh**

Contoh berikut menunjukkan bagaimana Anda dapat melakukan kueri log akses server bucket di Amazon Athena.

**catatan**  
Untuk menentukan lokasi bucket dalam kueri Athena, Anda perlu memformat nama bucket target dan awalan target tempat log Anda dikirimkan sebagai URI S3, sebagai berikut: `s3://amzn-s3-demo-bucket1-logs/prefix/`

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. Di **Query Editor**, jalankan perintah yang mirip dengan berikut ini.

   ```
   create database bucket_access_logs_db
   ```
**catatan**  
Ini adalah praktik terbaik untuk membuat database yang AWS Region sama dengan bucket S3 Anda.

1. Di **Query Editor**, jalankan perintah yang mirip dengan berikut ini untuk membuat skema tabel dalam database yang Anda buat di langkah 2. Nilai tipe data `STRING` dan `BIGINT` adalah properti log akses. Anda dapat mencari properti ini di Athena. Untuk`LOCATION`, masukkan bucket dan jalur awalan seperti yang disebutkan sebelumnya.

   ```
   CREATE EXTERNAL TABLE `s3_access_logs_db.amzn-s3-demo-bucket_logs`(
     `bucketowner` STRING, 
     `bucket_name` STRING, 
     `requestdatetime` STRING, 
     `remoteip` STRING, 
     `requester` STRING, 
     `requestid` STRING, 
     `operation` STRING, 
     `key` STRING, 
     `request_uri` STRING, 
     `httpstatus` STRING, 
     `errorcode` STRING, 
     `bytessent` BIGINT, 
     `objectsize` BIGINT, 
     `totaltime` STRING, 
     `turnaroundtime` STRING, 
     `referrer` STRING, 
     `useragent` STRING, 
     `versionid` STRING, 
     `hostid` STRING, 
     `sigv` STRING, 
     `ciphersuite` STRING, 
     `authtype` STRING, 
     `endpoint` STRING, 
     `tlsversion` STRING)
   ROW FORMAT SERDE 
     'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
     'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
     'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
     's3://amzn-s3-demo-bucket1-logs/prefix/'
   ```

1. Dalam panel navigasi, pada **Basis Data**, pilih basis data Anda.

1. Pada **Tabel**, pilih **Tabel pratinjau** di sebelah nama tabel Anda.

   Di panel **Hasil**, Anda akan melihat data dari log akses server, seperti `bucketowner`, `bucket`, `requestdatetime`, dan sebagainya. Ini berarti Anda berhasil membuat tabel Athena. Anda sekarang dapat menanyakan log akses server bucket.

**Contoh - Tampilkan siapa yang menghapus objek dan kapan (stempel waktu, alamat IP, dan pengguna IAM)**

```
SELECT RequestDateTime, RemoteIP, Requester, Key 
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs 
WHERE key = 'images/picture.jpg' AND operation like '%DELETE%';
```

**Contoh - Tampilkan semua operasi yang dilakukan oleh pengguna IAM**

```
SELECT * 
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs 
WHERE requester='arn:aws:iam::123456789123:user/user_name';
```

**Contoh - Tampilkan semua operasi yang dilakukan pada objek dalam periode waktu tertentu**

```
SELECT *
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs
WHERE Key='prefix/images/picture.jpg' 
    AND parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
    BETWEEN parse_datetime('2017-02-18:07:00:00','yyyy-MM-dd:HH:mm:ss')
    AND parse_datetime('2017-02-18:08:00:00','yyyy-MM-dd:HH:mm:ss');
```

**Contoh - Menunjukkan berapa banyak data yang ditransfer oleh alamat IP tertentu dalam periode waktu tertentu**

```
SELECT SUM(bytessent) AS uploadTotal,
      SUM(objectsize) AS downloadTotal,
      SUM(bytessent + objectsize) AS Total
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs
WHERE RemoteIP='1.2.3.4'
AND parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2017-06-01','yyyy-MM-dd')
AND parse_datetime('2017-07-01','yyyy-MM-dd');
```

## Identifikasi permintaan akses objek menggunakan log akses Amazon S3


Anda dapat menggunakan kueri pada log akses untuk mengidentifikasi permintaan akses objek, untuk operasi seperti *GET*, *PUT*, dan *DELETE*, dan menemukan informasi lebih lanjut tentang permintaan tersebut.

Contoh kueri Amazon Athena berikut menunjukkan cara mendapatkan semua permintaan `PUT` objek untuk bucket dari log akses server.

**Contoh - Tampilkan semua pemohon yang mengirim permintaan objek PUT dalam periode tertentu**

```
SELECT Bucket, Requester, RemoteIP, Key, HTTPStatus, ErrorCode, RequestDateTime
FROM s3_access_logs_db
WHERE Operation='REST.PUT.OBJECT' AND
parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND 
parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

Contoh kueri Amazon Athena berikut menunjukkan cara mendapatkan semua permintaan objek GET untuk Amazon S3 dari log akses server.

**Contoh - Tampilkan semua pemohon yang mengirim permintaan objek GET dalam periode tertentu**

```
SELECT Bucket, Requester, RemoteIP, Key, HTTPStatus, ErrorCode, RequestDateTime
FROM s3_access_logs_db
WHERE Operation='REST.GET.OBJECT' AND
parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND 
parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

Contoh kueri Amazon Athena berikut menunjukkan cara mendapatkan semua permintaan anonim ke bucket S3 Anda dari log akses server.

**Contoh - Tampilkan semua pemohon anonim yang membuat permintaan ke bucket dalam periode tertentu**

```
SELECT Bucket, Requester, RemoteIP, Key, HTTPStatus, ErrorCode, RequestDateTime
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs
WHERE Requester IS NULL AND
parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND 
parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

**catatan**  
Anda dapat memodifikasi rentang tanggal sesuai dengan kebutuhan Anda.
Contoh kueri ini juga dapat berguna untuk pemantauan keamanan. Anda dapat meninjau hasil untuk `PutObject` atau `GetObject` panggilan dari IP yang tidak terduga atau tidak sah addresses/requesters dan untuk mengidentifikasi permintaan anonim apa pun ke bucket Anda.
Kueri ini hanya mengambil informasi dari waktu saat pencatatan log diaktifkan.