

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

# Contoh kebijakan bucket menggunakan tombol kondisi
<a name="amazon-s3-policy-keys"></a>

Anda dapat menggunakan bahasa kebijakan akses untuk menentukan syarat-syarat saat memberikan izin. Anda dapat menggunakan `Condition` elemen opsional, atau `Condition` memblokir, untuk menentukan kondisi kapan kebijakan diberlakukan. 

Untuk kebijakan yang menggunakan kunci syarat Amazon S3 untuk operasi objek dan bucket, lihat contoh berikut. Untuk informasi lebih lanjut tentang kunci syarat ini, lihat [Kunci kondisi kebijakan untuk Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). *Untuk daftar lengkap tindakan Amazon S3, kunci kondisi, dan sumber daya yang dapat Anda tentukan dalam kebijakan, lihat [Tindakan, sumber daya, dan kunci kondisi untuk Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) di Referensi Otorisasi Layanan.*

Untuk informasi selengkapnya tentang izin operasi S3 API menurut jenis sumber daya S3, lihat. [Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md)

## Contoh: Kunci kondisi Amazon S3 untuk operasi objek
<a name="object-keys-in-amazon-s3-policies"></a>

Contoh berikut menunjukkan bagaimana Anda dapat menggunakan kunci kondisi khusus Amazon S3 untuk operasi objek. *Untuk daftar lengkap tindakan Amazon S3, kunci kondisi, dan sumber daya yang dapat Anda tentukan dalam kebijakan, lihat [Tindakan, sumber daya, dan kunci kondisi untuk Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) di Referensi Otorisasi Layanan.*

Untuk informasi selengkapnya tentang izin operasi S3 API menurut jenis sumber daya S3, lihat. [Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md)

Beberapa contoh kebijakan menunjukkan bagaimana Anda dapat menggunakan kunci kondisi operasi [PUT Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html). Operasi PUT Objek memungkinkan header spesifik daftar kontrol akses (ACL) yang dapat Anda gunakan untuk memberikan izin berbasis ACL. Dengan menggunakan tombol kondisi ini, Anda dapat mengatur kondisi untuk memerlukan izin akses tertentu saat pengguna mengunggah objek. Anda juga dapat memberikan izin berbasis ACL dengan operasi tersebut. PutObjectAcl Untuk informasi lebih lanjut, lihat [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) dalam *Referensi API Layanan Penyimpanan Sederhana Amazon S3 Amazon*. Untuk informasi lebih lanjut tentang ACLs, lihat[Gambaran umum daftar kontrol akses (ACL)](acl-overview.md).

**Topics**
+ [Contoh 1: Memberikan `s3:PutObject` izin yang mengharuskan objek disimpan menggunakan enkripsi sisi server](#putobject-require-sse-2)
+ [Contoh 2: Memberikan `s3:PutObject` izin untuk menyalin objek dengan batasan pada sumber salinan](#putobject-limit-copy-source-3)
+ [Contoh 3: Memberikan akses ke versi objek tertentu](#getobjectversion-limit-access-to-specific-version-3)
+ [Contoh 4: Memberikan izin berdasarkan tag objek](#example-object-tagging-access-control)
+ [Contoh 5: Membatasi akses oleh Akun AWS ID pemilik bucket](#example-object-resource-account)
+ [Contoh 6: Membutuhkan versi TLS minimum](#example-object-tls-version)
+ [Contoh 7: Mengecualikan prinsipal tertentu dari pernyataan `Deny`](#example-exclude-principal-from-deny-statement)
+ [Contoh 8: Menegakkan klien untuk mengunggah objek secara kondisional berdasarkan nama kunci objek atau ETags](#example-conditional-writes-enforce)

### Contoh 1: Memberikan `s3:PutObject` izin yang mengharuskan objek disimpan menggunakan enkripsi sisi server
<a name="putobject-require-sse-2"></a>

Misalkan ketika Akun A memiliki bucket. Administrator akun ingin memberi Jane, pengguna di Akun A, izin untuk mengunggah objek dengan syarat Jane selalu meminta enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3). Administrator Akun A dapat menentukan persyaratan ini dengan menggunakan kunci `s3:x-amz-server-side-encryption` kondisi seperti yang ditunjukkan. Pasangan kunci-nilai di `Condition` blok berikut menentukan kunci `s3:x-amz-server-side-encryption` kondisi dan SSE-S3 () `AES256` sebagai jenis enkripsi:

```
"Condition": {
     "StringNotEquals": {
         "s3:x-amz-server-side-encryption": "AES256"
     }}
```

Saat menguji izin ini dengan menggunakan AWS CLI, Anda harus menambahkan enkripsi yang diperlukan dengan menggunakan `--server-side-encryption` parameter, seperti yang ditunjukkan pada contoh berikut. Untuk menggunakan perintah contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri. 

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountAadmin
```

### Contoh 2: Memberikan `s3:PutObject` izin untuk menyalin objek dengan batasan pada sumber salinan
<a name="putobject-limit-copy-source-3"></a>

Dalam permintaan `PUT` objek, ketika Anda menentukan objek sumber, permintaan adalah operasi salinan (lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)). Oleh karena itu, pemilik bucket dapat memberikan izin kepada pengguna untuk menyalin objek dengan pembatasan pada sumber, misalnya:
+ Izinkan menyalin objek hanya dari bucket sumber yang ditentukan (misalnya,`amzn-s3-demo-source-bucket`).
+ Izinkan menyalin objek dari bucket sumber yang ditentukan dan hanya objek yang awalan nama kuncinya dimulai dengan awalan tertentu, seperti *`public/`* (misalnya,). `amzn-s3-demo-source-bucket/public/*`
+ Izinkan menyalin hanya objek tertentu dari bucket sumber (misalnya,`amzn-s3-demo-source-bucket/example.jpg`).

Kebijakan bucket berikut memberikan `s3:PutObject` izin kepada pengguna (`Dave`). Kebijakan ini memungkinkan dia untuk menyalin objek hanya dengan syarat permintaan menyertakan `s3:x-amz-copy-source` header dan bahwa nilai header menentukan awalan nama `/amzn-s3-demo-source-bucket/public/*` kunci. Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Sid": "cross-account permission to user in your own account",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
        },
        {
            "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
            "Condition": {
                "StringNotLike": {
                    "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/*"
                }
            }
        }
    ]
}
```

------

**Uji kebijakan dengan AWS CLI**  
Anda dapat menguji izin menggunakan AWS CLI `copy-object` perintah. Anda menentukan sumber dengan menambahkan parameter `--copy-source`; prefiks nama kunci harus cocok dengan prefiks yang diperbolehkan dalam kebijakan. Anda perlu memberikan kredensial Dave kepada pengguna dengan menggunakan parameter `--profile`. *Untuk informasi selengkapnya tentang pengaturan AWS CLI, lihat [Mengembangkan dengan Amazon S3 menggunakan AWS CLI di Referensi API](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) Amazon S3.*

```
aws s3api copy-object --bucket amzn-s3-demo-source-bucket --key HappyFace.jpg 
--copy-source amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg --profile AccountADave
```

**Berikan izin untuk menyalin objek tertentu**  
Kebijakan sebelumnya menggunakan kondisi `StringNotLike`. Untuk memberikan izin untuk menyalin hanya objek tertentu, Anda harus mengubah kondisi dari `StringNotLike` ke `StringNotEquals` dan kemudian menentukan kunci objek yang tepat, seperti yang ditunjukkan pada contoh berikut. Untuk menggunakan perintah contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

```
"Condition": {
       "StringNotEquals": {
           "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg"
       }
}
```

### Contoh 3: Memberikan akses ke versi objek tertentu
<a name="getobjectversion-limit-access-to-specific-version-3"></a>

Misalkan Akun A memiliki bucket berkemampuan versi. Bucket tersebut memiliki beberapa versi objek `HappyFace.jpg`. Administrator Akun A sekarang ingin memberikan `Dave` izin kepada pengguna untuk mendapatkan hanya versi objek tertentu. Administrator akun dapat melakukannya dengan memberikan `s3:GetObjectVersion` izin kepada pengguna `Dave` secara kondisional, seperti yang ditunjukkan pada contoh berikut. Pasangan nilai kunci dalam pemblokiran `Condition` menentukan kunci kondisi `s3:VersionId`. Dalam hal ini, untuk mengambil objek dari bucket berkemampuan versi tertentu, `Dave` perlu mengetahui ID versi objek yang tepat. Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) dalam *Referensi API Amazon Simple Storage Service*. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg"
        },
        {
            "Sid": "statement2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg",
            "Condition": {
                "StringNotEquals": {
                    "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e"
                }
            }
        }
    ]
}
```

------

**Uji kebijakan dengan AWS CLI**  
Anda dapat menguji izin dalam kebijakan ini dengan menggunakan AWS CLI `get-object` perintah dengan `--version-id` parameter untuk mengidentifikasi versi objek tertentu yang akan diambil. Perintah mengambil versi objek yang ditentukan dan menyimpannya ke `OutputFile.jpg` file.

```
aws s3api get-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave
```

### Contoh 4: Memberikan izin berdasarkan tag objek
<a name="example-object-tagging-access-control"></a>

Untuk contoh cara menggunakan kunci kondisi penandaan objek dengan operasi Amazon S3, lihat. [Kebijakan pemberian tag dan kontrol akses](tagging-and-policies.md)

### Contoh 5: Membatasi akses oleh Akun AWS ID pemilik bucket
<a name="example-object-resource-account"></a>

Anda dapat menggunakan kunci `aws:ResourceAccount` atau `s3:ResourceAccount` kondisi untuk menulis kebijakan titik akhir IAM atau virtual private cloud (VPC) yang membatasi akses pengguna, peran, atau aplikasi ke bucket Amazon S3 yang dimiliki oleh ID tertentu. Akun AWS Anda dapat menggunakan kunci kondisi ini untuk membatasi klien dalam VPC Anda agar tidak mengakses bucket yang tidak Anda miliki.

Namun, ketahuilah bahwa beberapa AWS layanan bergantung pada akses ke bucket yang AWS dikelola. Oleh karena itu, menggunakan kunci `aws:ResourceAccount` atau `s3:ResourceAccount` dalam kebijakan IAM Anda juga dapat memengaruhi akses ke sumber daya ini. Untuk informasi selengkapnya, lihat sumber daya berikut:
+ [Batasi akses ke bucket dalam Akun AWS yang ditentukan](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#bucket-policies-s3) dalam *Panduan AWS PrivateLink *
+ [Batasi akses ke bucket yang digunakan Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-minimum-s3-perms) dalam *Panduan Amazon ECR*
+ [Menyediakan akses yang diperlukan ke Systems Manager untuk bucket Amazon S3 AWS terkelola](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-minimum-s3-permissions.html) *dalam Panduan AWS Systems Manager *

*Untuk informasi selengkapnya tentang kunci `s3:ResourceAccount` kondisi `aws:ResourceAccount` dan contoh yang menunjukkan cara menggunakannya, lihat [Membatasi akses ke bucket Amazon S3 yang dimiliki oleh spesifik Akun AWS di Blog](https://aws.amazon.com/blogs/storage/limit-access-to-amazon-s3-buckets-owned-by-specific-aws-accounts/) Penyimpanan.AWS *

### Contoh 6: Membutuhkan versi TLS minimum
<a name="example-object-tls-version"></a>

Anda dapat menggunakan tombol `s3:TlsVersion` kondisi untuk menulis IAM, virtual private cloud endpoint (VPCE), atau kebijakan bucket yang membatasi akses pengguna atau aplikasi ke bucket Amazon S3 berdasarkan versi TLS yang digunakan oleh klien. Anda dapat menggunakan kunci syarat ini untuk tulis kebijakan yang memerlukan versi TLS minimum. 

**catatan**  
Ketika AWS layanan melakukan panggilan ke AWS layanan lain atas nama Anda (service-to-service panggilan), konteks otorisasi khusus jaringan tertentu dihapus, termasuk`s3:TlsVersion`,,, dan. `aws:SecureTransport` `aws:SourceIp` `aws:VpcSourceIp` Jika kebijakan Anda menggunakan kunci kondisi ini dengan `Deny` pernyataan, prinsip AWS layanan mungkin diblokir secara tidak sengaja. Untuk memungkinkan AWS layanan berfungsi dengan baik sambil mempertahankan persyaratan keamanan Anda, kecualikan prinsip layanan dari `Deny` pernyataan Anda dengan menambahkan kunci `aws:PrincipalIsAWSService` kondisi dengan nilai. `false` Contoh:  

```
{
  "Effect": "Deny",
  "Action": "s3:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false",
      "aws:PrincipalIsAWSService": "false"
    }
  }
}
```
Kebijakan ini menolak akses ke operasi S3 ketika HTTPS tidak `aws:SecureTransport` digunakan (salah), tetapi hanya untuk prinsipal AWS non-layanan. Ini memastikan pembatasan bersyarat Anda berlaku untuk semua kepala sekolah kecuali kepala sekolah layanan. AWS 

**Example**  
Contoh kebijakan bucket berikut *menolak `PutObject` permintaan* klien yang memiliki versi TLS lebih awal dari 1.2, misalnya 1.1 atau 1.0. Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericLessThan": {
                    "s3:TlsVersion": 1.2
                }
            }
        }
    ]
}
```

**Example**  
Contoh kebijakan bucket berikut *memungkinkan* `PutObject` permintaan oleh klien yang memiliki versi TLS lebih lambat 1.1, misalnya, 1.2, 1.3, atau yang lebih baru:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericGreaterThan": {
                    "s3:TlsVersion": 1.1
                }
            }
        }
    ]
}
```

### Contoh 7: Mengecualikan prinsipal tertentu dari pernyataan `Deny`
<a name="example-exclude-principal-from-deny-statement"></a>

Kebijakan bucket berikut menolak `s3:GetObject` akses ke`amzn-s3-demo-bucket`, kecuali ke kepala sekolah dengan nomor rekening. *`123456789012`* Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessFromPrincipalNotInSpecificAccount",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": [
            "123456789012"
          ]
        }
      }
    }
  ]
}
```

------

### Contoh 8: Menegakkan klien untuk mengunggah objek secara kondisional berdasarkan nama kunci objek atau ETags
<a name="example-conditional-writes-enforce"></a>

Dengan penulisan bersyarat, Anda dapat menambahkan header tambahan ke `WRITE` permintaan Anda untuk menentukan prasyarat untuk operasi S3 Anda. Header ini menentukan kondisi yang, jika tidak terpenuhi, akan mengakibatkan operasi S3 gagal. Misalnya, Anda dapat mencegah penimpaan data yang ada dengan memvalidasi tidak ada objek dengan nama kunci yang sama yang sudah ada di bucket Anda selama pengunggahan objek. Anda juga dapat memeriksa tag entitas objek (ETag) di Amazon S3 sebelum menulis objek.

Untuk contoh kebijakan bucket yang menggunakan kondisi dalam kebijakan bucket guna menerapkan penulisan bersyarat, lihat. [Menegakkan penulisan bersyarat di ember Amazon S3](conditional-writes-enforce.md)

## Contoh: Kunci kondisi Amazon S3 untuk operasi bucket
<a name="bucket-keys-in-amazon-s3-policies"></a>

Contoh kebijakan berikut menunjukkan cara Anda dapat menggunakan kunci kondisi khusus Amazon S3 untuk operasi bucket.

**Topics**
+ [Contoh 1: Memberikan `s3:GetObject` izin dengan syarat pada alamat IP](#AvailableKeys-iamV2)
+ [Contoh 2: Mendapatkan daftar objek di bucket dengan prefiks tertentu](#condition-key-bucket-ops-2)
+ [Contoh 3: Mengatur jumlah kunci maksimum](#example-numeric-condition-operators)

### Contoh 1: Memberikan `s3:GetObject` izin dengan syarat pada alamat IP
<a name="AvailableKeys-iamV2"></a>

Anda dapat memberikan izin kepada pengguna yang diautentikasi untuk menggunakan `s3:GetObject` tindakan jika permintaan berasal dari rentang alamat IP tertentu (misalnya,`192.0.2.*`), kecuali alamat IP adalah salah satu yang ingin Anda kecualikan (misalnya,`192.0.2.188`). Di `Condition` blok, `IpAddress` dan `NotIpAddress` kondisi, dan setiap kondisi disediakan pasangan kunci-nilai untuk evaluasi. Kedua pasangan kunci-nilai dalam contoh ini menggunakan kunci `aws:SourceIp` AWS lebar. Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

**catatan**  
Nilai `IPAddress` dan `NotIpAddress` kunci yang ditentukan dalam `Condition` blok menggunakan notasi CIDR, seperti yang dijelaskan dalam RFC 4632. Untuk informasi lebih lanjut, lihat [http://www.rfc-editor. org/rfc/rfc](http://www.rfc-editor.org/rfc/rfc4632.txt)4632.txt.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action":"s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "192.0.2.0/24" 
                },
                "NotIpAddress" : {
                    "aws:SourceIp": "192.0.2.188/32" 
                } 
            } 
        } 
    ]
}
```

------

Anda juga dapat menggunakan kunci kondisi AWS-wide lainnya dalam kebijakan Amazon S3. Misalnya, Anda dapat menentukan kunci kondisi `aws:SourceVpce` dan `aws:SourceVpc` dalam kebijakan bucket untuk titik akhir VPC. Untuk contoh spesifik, lihat[Megendalikan akses dari titik akhir VPC dengan kebijakan bucket](example-bucket-policies-vpc-endpoint.md).

**catatan**  
Untuk beberapa kunci kondisi AWS global, hanya jenis sumber daya tertentu yang didukung. Oleh karena itu, periksa apakah Amazon S3 mendukung kunci kondisi global dan jenis sumber daya yang ingin Anda gunakan, atau apakah Anda perlu menggunakan kunci kondisi khusus Amazon S3. *Untuk daftar lengkap jenis sumber daya dan kunci kondisi yang didukung untuk Amazon S3, lihat [Tindakan, sumber daya, dan kunci kondisi untuk Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) di Referensi Otorisasi Layanan.*  
Untuk informasi selengkapnya tentang izin operasi S3 API menurut jenis sumber daya S3, lihat. [Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md)

### Contoh 2: Mendapatkan daftar objek di bucket dengan prefiks tertentu
<a name="condition-key-bucket-ops-2"></a>

Anda dapat menggunakan kunci `s3:prefix` kondisi untuk membatasi respons operasi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)API ke nama kunci dengan awalan tertentu. Jika Anda adalah pemilik bucket, Anda dapat menggunakan kunci kondisi ini untuk membatasi pengguna agar mencantumkan konten awalan tertentu di bucket. Kunci `s3:prefix` kondisi berguna jika objek dalam bucket diatur oleh awalan nama kunci. 

Konsol Amazon S3 menggunakan prefiks nama kunci untuk menampilkan konsep folder. Hanya konsol tersebut yang mendukung konsep folder; Amazon S3 API hanya mendukung bucket dan objek. Misalnya, jika Anda memiliki dua objek dengan nama kunci *`public/object1.jpg`* dan*`public/object2.jpg`*, konsol menunjukkan objek di bawah *`public`* folder. Pada Amazon S3 API, objek-objek ini adalah objek dengan prefiks, bukan objek yang ada dalam folder. Untuk informasi lebih lanjut tentang bagaimana menggunakan prefiks dan pembatas untuk memfilter izin akses, lihat [Mengontrol akses ke bucket dengan kebijakan pengguna](walkthrough1.md). 

Dalam skenario berikut, pemilik bucket dan akun induk yang dimiliki pengguna adalah sama. Jadi pemilik bucket dapat menggunakan kebijakan bucket atau kebijakan pengguna untuk memberikan akses. Untuk informasi selengkapnya tentang kunci kondisi lain yang dapat Anda gunakan dengan operasi `ListObjectsV2` API, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html).

**catatan**  
Jika bucket diaktifkan versi, untuk mencantumkan objek di bucket, Anda harus memberikan `s3:ListBucketVersions` izin dalam kebijakan berikut, bukan izin. `s3:ListBucket` `s3:ListBucketVersions`Izin juga mendukung kunci `s3:prefix` kondisi. 

**Kebijakan pengguna**  
Kebijakan pengguna berikut memberikan `s3:ListBucket` izin (lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)) dengan `Condition` pernyataan yang mengharuskan pengguna untuk menentukan awalan dalam permintaan dengan nilai. `projects` Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Action": "s3:ListBucket",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       }         
    ]
}
```

------

`Condition`Pernyataan membatasi pengguna untuk mencantumkan hanya kunci objek yang memiliki `projects` awalan. `Deny`Pernyataan eksplisit yang ditambahkan menyangkal pengguna dari mencantumkan kunci dengan awalan lain, apa pun izin lain yang mungkin dimiliki pengguna. Misalnya, pengguna dapat memperoleh izin untuk membuat daftar kunci objek tanpa batasan apa pun, baik melalui pembaruan pada kebijakan pengguna sebelumnya atau melalui kebijakan bucket. Karena `Deny` pernyataan eksplisit selalu mengesampingkan `Allow` pernyataan, jika pengguna mencoba membuat daftar kunci selain yang memiliki `projects` awalan, permintaan ditolak. 

**Kebijakan bucket**  
Jika Anda menambahkan `Principal` elemen ke kebijakan pengguna di atas, mengidentifikasi pengguna, Anda sekarang memiliki kebijakan bucket, seperti yang ditunjukkan pada contoh berikut. Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action":  "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects"  
             }
          } 
       }         
    ]
}
```

------

**Uji kebijakan dengan AWS CLI**  
Anda dapat menguji kebijakan menggunakan `list-object` AWS CLI perintah berikut. Dalam perintah ini, Anda memberikan kredensial pengguna dengan menggunakan parameter `--profile`. *Untuk informasi selengkapnya tentang pengaturan dan penggunaan AWS CLI, lihat [Mengembangkan dengan Amazon S3 menggunakan AWS CLI di Referensi API](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) Amazon S3.*

```
aws s3api list-objects --bucket amzn-s3-demo-bucket --prefix projects --profile AccountA
```

### Contoh 3: Mengatur jumlah kunci maksimum
<a name="example-numeric-condition-operators"></a>

Anda dapat menggunakan tombol `s3:max-keys` kondisi untuk mengatur jumlah maksimum kunci yang dapat dikembalikan oleh pemohon dalam [https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html)permintaan [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)atau permintaan. Secara default, operasi API ini mengembalikan hingga 1.000 kunci. Untuk daftar operator kondisi numerik yang dapat Anda gunakan dengan `s3:max-keys` dan contoh yang menyertainya, lihat [Operator kondisi Numerik](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Numeric) dalam *Panduan Pengguna IAM*.