

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

# Mengubah objek dengan S3 Lambda Objek
<a name="transforming-objects"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Dengan Lambda Objek Amazon S3, Anda dapat menambahkan kode Anda sendiri ke `GET`, `LIST`, dan `HEAD` Amazon S3 dan meminta untuk mengubah dan memproses data saat dikembalikan ke aplikasi. Anda dapat menggunakan kode khusus untuk memodifikasi data yang dikembalikan oleh permintaan `GET` S3 untuk melakukan filter baris, mengubah ukuran dan watermark gambar secara dinamis, menyamarkan data rahasia, dan banyak lagi. Anda juga dapat menggunakan S3 Lambda Objek untuk memodifikasi output permintaan `LIST` S3 untuk membuat tampilan kustom dari semua objek dalam bucket dan permintaan `HEAD` S3 untuk memodifikasi metadata objek, seperti nama objek dan ukuran. Anda dapat menggunakan S3 Object Lambda sebagai asal distribusi CloudFront Amazon Anda untuk menyesuaikan data bagi pengguna akhir, seperti mengubah ukuran gambar secara otomatis, mentranskode format lama (seperti dari JPEG ke WebP), atau menghapus metadata. Untuk informasi selengkapnya, lihat posting AWS Blog [Menggunakan Amazon S3 Object Lambda](https://aws.amazon.com/blogs/aws/new-use-amazon-s3-object-lambda-with-amazon-cloudfront-to-tailor-content-for-end-users/) dengan Amazon. CloudFront Didukung oleh fungsi AWS Lambda, kode Anda berjalan pada infrastruktur yang sepenuhnya dikelola oleh. AWS Menggunakan S3 Lambda Objek mengurangi kebutuhan untuk membuat dan menyimpan salinan turunan data Anda atau menjalankan proksi, semuanya tanpa perlu mengubah aplikasi Anda.

**Bagaimana S3 Lambda Objek bekerja**  
S3 Object Lambda AWS Lambda menggunakan fungsi untuk secara otomatis memproses output standar `GET` S3`LIST`,, atau permintaan. `HEAD` AWS Lambda adalah layanan komputasi tanpa server yang menjalankan kode yang ditentukan pelanggan tanpa memerlukan pengelolaan sumber daya komputasi yang mendasarinya. Anda dapat melakukan otorisasi dan menjalankan fungsi Lambda kustom Anda sendiri, menyesuaikan transformasi data untuk kasus penggunaan tertentu Anda. 

Setelah Anda mengonfigurasi fungsi Lambda, Anda melampirkannya ke S3 Lambda Objek titik akhir layanan, yang dikenal sebagai *Titik Akses Objek Lambda*. Object Lambda Access Point menggunakan titik akses S3 standar, yang dikenal sebagai *titik akses pendukung, untuk mengakses* data.

Saat Anda mengirim permintaan ke Titik Akses Lambda Objek, Amazon S3 secara otomatis memanggil fungsi Lambda Anda. Data yang diambil dengan menggunakan permintaan S3 `GET`, `LIST`, atau `HEAD` melalui Titik Akses Lambda Objek mengembalikan hasil berubah kembali ke aplikasi. Semua permintaan lainnya diproses seperti biasa, seperti yang digambarkan dalam diagram berikut. 



![\[Diagram, menunjukkan cara kerja S3 Object Lambda.\]](http://docs.aws.amazon.com/id_id/AmazonS3/latest/userguide/images/ObjectLamdaDiagram.png)


Topik di bagian ini menjelaskan cara bekerja dengan S3 Lambda Objek.

**Topics**
+ [

# Membuat Titik Akses Objek Lambda
](olap-create.md)
+ [

# Menggunakan Titik Akses Lambda Objek Amazon S3
](olap-use.md)
+ [

# Pertimbangan keamanan untuk Titik Akses S3 Lambda Objek
](olap-security.md)
+ [

# Menulis fungsi Lambda untuk Titik Akses S3 Lambda Objek
](olap-writing-lambda.md)
+ [

# Menggunakan fungsi Lambda yang AWS dibangun
](olap-examples.md)
+ [

# Praktik terbaik dan pedoman untuk S3 Lambda Objek
](olap-best-practices.md)
+ [

# Tutorial S3 Lambda Objek
](olap-tutorials.md)
+ [

# Debugging dan pemecahan masalah S3 Object Lambda
](olap-debugging-lambda.md)

# Membuat Titik Akses Objek Lambda
<a name="olap-create"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Titik Akses Objek Lambda dikaitkan dengan tepat satu titik akses standar, yang Anda tentukan selama pembuatan. Untuk membuat titik akses Lambda Objek, Anda memerlukan sumber daya berikut:
+ **Titik akses standar S3.** Saat Anda bekerja dengan Object Lambda Access Points, titik akses standar ini dikenal sebagai *titik akses pendukung* dan dilampirkan ke bucket S3 atau Amazon FSx untuk volume OpenZFS. Untuk informasi selengkapnya tentang cara membuat titik akses standar, lihat [Membuat titik akses](creating-access-points.md).
+ **Sebuah AWS Lambda fungsi.** Anda dapat membuat fungsi Lambda Anda sendiri, atau Anda juga dapat menggunakan fungsi bawaan. Untuk informasi selengkapnya tentang membuat fungsi Lambda, lihat [Menulis fungsi Lambda untuk Titik Akses S3 Lambda Objek](olap-writing-lambda.md). Untuk informasi lebih lanjut tentang fungsi bawaan, lihat [Menggunakan fungsi Lambda yang AWS dibangun](olap-examples.md).
+ **(Opsional) Kebijakan AWS Identity and Access Management (IAM).** Titik akses Amazon S3 mendukung kebijakan sumber daya IAM yang dapat Anda gunakan untuk mengontrol penggunaan titik akses berdasarkan sumber daya, pengguna, atau ketentuan lainnya. Untuk informasi selengkapnya tentang pembuatan kebijakan ini, lihat [Mengonfigurasi kebijakan IAM untuk Titik Akses Lambda Objek](olap-policies.md).

Bagian berikut menjelaskan cara membuat Titik Akses Lambda Objek dengan menggunakan:
+ The Konsol Manajemen AWS
+  AWS Command Line Interface (AWS CLI)
+  AWS CloudFormation Template
+ The AWS Cloud Development Kit (AWS CDK)

Untuk informasi lebih lanjut tentang cara membuat Titik Akses Lambda Objek menggunakan API REST, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html) dalam *Referensi API Amazon Simple Storage Service*.

## Membuat Titik Akses Lambda Object
<a name="create-olap"></a>

Gunakan salah satu dari prosedur berikut ini untuk membuat Titik Akses Lambda Object Anda. 

### Menggunakan konsol S3
<a name="olap-create-console"></a>

**Untuk membuat Titik Akses Lambda Objek menggunakan konsol**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di bilah navigasi, pilih nama yang saat ini ditampilkan Wilayah AWS. Selanjutnya, pilih Wilayah yang ingin Anda alihkan. 

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Pada halaman **Titik Akses Lambda Objek**, pilih **Buat Titik Akses Lambda Objek**.

1. Untuk **Nama Titik Akses Lambda Objek**, masukkan nama yang ingin Anda gunakan untuk titik aksesnya. 

   Seperti halnya titik akses standar, ada aturan untuk penamaan Titik Akses Lambda Objek. Untuk informasi selengkapnya, lihat [Aturan penamaan untuk titik akses](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. Untuk **Titik Akses Dukungan**, masukkan atau telusuri titik akses standar yang ingin Anda gunakan. Titik akses harus Wilayah AWS sama dengan objek yang ingin Anda ubah. Untuk informasi selengkapnya tentang cara membuat titik akses standar, lihat [Membuat titik akses](creating-access-points.md).

1. Di bawah **Konfigurasi transformasi**, Anda dapat menambahkan fungsi yang mengubah data untuk Titik Akses Lambda Objek Anda. Lakukan salah satu tindakan berikut:
   + Jika Anda sudah memiliki AWS Lambda fungsi di akun Anda, Anda dapat memilihnya di bawah fungsi **Invoke Lambda**. Di sini Anda dapat memasukkan Nama Sumber Daya Amazon (ARN) dari fungsi Lambda di Anda atau Akun AWS memilih fungsi Lambda dari menu tarik-turun.
   + Jika Anda ingin menggunakan fungsi yang AWS dibangun pilih nama fungsi di bawah fungsi yang **AWS dibangun dan pilih Buat fungsi** **Lambda**. Ini akan membawa Anda ke konsol Lambda di mana Anda dapat menerapkan fungsi bawaan ke dalam konsol Anda. Akun AWS Untuk informasi lebih lanjut tentang fungsi bawaan, lihat [Menggunakan fungsi Lambda yang AWS dibangun](olap-examples.md).

   Di bawah **S3 APIs**, pilih satu atau beberapa operasi API untuk dipanggil. Untuk setiap API yang dipilih, Anda harus menentukan fungsi Lambda yang akan dipanggil. 

1. (Opsional) Di bawah **Muatan**, tambahkan teks JSON yang ingin Anda berikan ke fungsi Lambda Anda sebagai input. Anda dapat mengonfigurasi muatan dengan parameter berbeda untuk Titik Akses Lambda Objek berbeda yang menginvokasi fungsi Lambda yang sama, sehingga memperluas fleksibilitas fungsi Lambda Anda.
**penting**  
Saat menggunakan Titik Akses Lambda Objek, pastikan muatan tidak berisi informasi rahasia apa pun.

1. (Opsional) Untuk **Rentang dan nomor bagian**, Anda harus mengaktifkan opsi ini jika Anda ingin memproses permintaan `GET` dan `HEAD` dengan header rentang dan nomor bagian. Mengaktifkan opsi ini mengonfirmasi bahwa fungsi Lambda Anda dapat mengenali dan memproses permintaan ini. Untuk informasi lebih lanjut tentang berbagai header dan nomor bagian, lihat [Bekerja dengan header Range dan partNumber](range-get-olap.md).

1. (Opsional) Untuk **Metrik permintaan**, pilih **Aktifkan** atau **Nonaktifkan** untuk menambahkan pemantauan Amazon S3 ke Titik Akses Lambda Objek Anda. Metrik permintaan ditagih dengan tarif Amazon CloudWatch standar.

1. (Opsional) Di bawah **Kebijakan Titik Akses Lambda**, buat pengaturan kebijakan sumber daya. Kebijakan sumber daya memberikan izin untuk Titik Akses Lambda Objek yang ditentukan dan dapat mengontrol penggunaan titik akses berdasarkan sumber daya, pengguna, atau ketentuan lainnya. Untuk informasi selengkapnya tentang kebijakan sumber daya Titik Akses Lambda Object, lihat, [Mengonfigurasi kebijakan IAM untuk Titik Akses Lambda Objek](olap-policies.md).

1. Di bagian bawah **Pengaturan Blok Titik Akses untuk Titik Akses Lambda Objek ini**, pilih pengaturan blokir akses publik yang ingin Anda terapkan. Semua pengaturan blokir akses publik diaktifkan secara default untuk Titik Akses Lambda Objek baru, dan kami menyarankan Anda membiarkan pengaturan default diaktifkan. Amazon S3 saat ini tidak mendukung perubahan pengaturan blokir akses publik milik Titik Akses Lambda Objek setelah Titik Akses Lambda Objek dibuat.

   Untuk informasi selengkapnya tentang menggunakan Blokir Akses Publik Amazon S3., lihat [Mengelola akses publik ke titik akses untuk ember tujuan umum](access-points-bpa-settings.md).

1. Pilih **Buat Titik Akses Objek Lambda**.

### Menggunakan AWS CLI
<a name="olap-create-cli"></a>

**Untuk membuat Object Lambda Access Point dengan menggunakan template AWS CloudFormation**
**catatan**  
Untuk menggunakan perintah berikut ini, ganti `user input placeholders` dengan informasi Anda sendiri.

1. Unduh paket penerapan AWS Lambda fungsi `s3objectlambda_deployment_package.zip` di konfigurasi default Objek [Lambda S3](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Jalankan perintah `put-object` berikut untuk mengunggah paket ke bucket Amazon S3.

   ```
   aws s3api put-object --bucket Amazon S3 bucket name --key s3objectlambda_deployment_package.zip --body release/s3objectlambda_deployment_package.zip
   ```

1. Unduh AWS CloudFormation template `s3objectlambda_defaultconfig.yaml` di konfigurasi default [Objek Lambda S3](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Jalankan perintah `deploy` berikut untuk menyebarkan templat ke Akun AWS Anda.

   ```
   aws cloudformation deploy --template-file s3objectlambda_defaultconfig.yaml \
    --stack-name CloudFormation stack name \ 
    --parameter-overrides ObjectLambdaAccessPointName=Object Lambda Access Point name \
     SupportingAccessPointName=Amazon S3 access point S3BucketName=Amazon S3 bucket \
     LambdaFunctionS3BucketName=Amazon S3 bucket containing your Lambda package \ 
     LambdaFunctionS3Key=Lambda object key LambdaFunctionS3ObjectVersion=Lambda object version \ 
     LambdaFunctionRuntime=Lambda function runtime --capabilities capability_IAM
   ```

Anda dapat mengonfigurasi AWS CloudFormation template ini untuk memanggil Lambda `GET` untuk`HEAD`,, `LIST` dan operasi API. Untuk informasi selengkapnya tentang mengubah konfigurasi default templat, lihat [Otomatiskan pengaturan Lambda Objek S3 dengan templat CloudFormation](olap-using-cfn-template.md).<a name="olap-create-cli-specific"></a>

**Untuk membuat Object Lambda Access Point dengan menggunakan AWS CLI**
**catatan**  
Untuk menggunakan perintah berikut ini, ganti `user input placeholders` dengan informasi Anda sendiri.

Contoh berikut membuat Titik Akses Lambda Objek yang diberi nama *`my-object-lambda-ap`* untuk bucket *`amzn-s3-demo-bucket1`* di akun *`111122223333`*. Contoh ini mengasumsikan bahwa titik akses standar bernama *`example-ap`* telah dibuat. Untuk informasi selengkapnya tentang cara membuat titik akses standar, lihat [Membuat titik akses](creating-access-points.md).

Contoh ini menggunakan fungsi AWS `decompress` prebuilt. Untuk informasi lebih lanjut tentang fungsi bawaan, lihat [Menggunakan fungsi Lambda yang AWS dibangun](olap-examples.md).

1. Buat bucket. Dalam contoh ini, kami akan menggunakan *`amzn-s3-demo-bucket1`*. Untuk informasi tentang membuat bucket, lihat [Membuat bucket tujuan umum](create-bucket-overview.md).

1. Buat titik akses standar, dan lampirkan ke bucket Anda. Dalam contoh ini, kami akan menggunakan *`example-ap`*. Untuk informasi selengkapnya tentang cara membuat titik akses standar, lihat [Membuat titik akses](creating-access-points.md).

1. Lakukan salah satu hal berikut ini: 
   + Buat fungsi Lambda di akun Anda yang ingin Anda gunakan untuk mengubah objek Amazon S3 Anda. Untuk informasi selengkapnya tentang membuat fungsi Lambda, lihat [Menulis fungsi Lambda untuk Titik Akses S3 Lambda Objek](olap-writing-lambda.md). Untuk menggunakan fungsi kustom Anda dengan AWS CLI, lihat [Menggunakan Lambda dengan AWS CLI di Panduan AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html) *Pengembang*.
   + Gunakan fungsi Lambda AWS bawaan. Untuk informasi lebih lanjut tentang fungsi bawaan, lihat [Menggunakan fungsi Lambda yang AWS dibangun](olap-examples.md).

1. Buat file konfigurasi JSON bernama `my-olap-configuration.json`. Dalam konfigurasi ini, sediakan titik akses pendukung dan Amazon Resource Name (ARN) untuk fungsi Lambda yang Anda buat pada langkah sebelumnya atau ARN untuk fungsi bawaan yang Anda gunakan.  
**Example**  

   

   ```
   {
       "SupportingAccessPoint" : "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
       "TransformationConfigurations": [{
           "Actions" : ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"],
           "ContentTransformation" : {
               "AwsLambda": {
                   "FunctionPayload" : "{\"compressionType\":\"gzip\"}",
                   "FunctionArn" : "arn:aws:lambda:us-east-1:111122223333:function/compress"
               }
           }
       }]
   }
   ```

1. Jalankan perintah `create-access-point-for-object-lambda` untuk membuat Titik Akses Lambda Objek Anda.

   ```
   aws s3control create-access-point-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --configuration file://my-olap-configuration.json
   ```

1. (Opsional) Buat file kebijakan JSON bernama `my-olap-policy.json`.

   Menambahkan kebijakan sumber daya Titik Akses Lambda Objek dapat mengontrol penggunaan titik akses berdasarkan sumber daya, pengguna, atau kondisi lainnya. Kebijakan sumber daya ini memberikan izin akun `GetObject` *`444455556666`* ke Titik Akses Lambda Object yang telah ditentukan.  
**Example**  

   

   ```
   {
       "Version": "2008-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Grant account 444455556666 GetObject access",
               "Effect": "Allow",
               "Action": "s3-object-lambda:GetObject",
               "Principal": {
                   "AWS": "arn:aws:iam::444455556666:root"
               },
               "Resource": "your-object-lambda-access-point-arn"
           }
       ]
   }
   ```

1. (Opsional) Jalankan perintah `put-access-point-policy-for-object-lambda` untuk mengatur kebijakan sumber daya Anda.

   ```
   aws s3control put-access-point-policy-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --policy file://my-olap-policy.json
   ```

1. (Opsional) Tentukan muatan.

   Payload adalah JSON opsional yang dapat Anda berikan ke AWS Lambda fungsi Anda sebagai input. Anda dapat mengonfigurasi muatan dengan parameter berbeda untuk Titik Akses Lambda Objek berbeda yang menginvokasi fungsi Lambda yang sama, sehingga memperluas fleksibilitas fungsi Lambda Anda.

   Konfigurasi titik akses Lambda Objek berikut menunjukkan muatan dengan dua parameter.

   ```
   {
   	"SupportingAccessPoint": "AccessPointArn",
   	"CloudWatchMetricsEnabled": false,
   	"TransformationConfigurations": [{
   		"Actions": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"],
   		"ContentTransformation": {
   			"AwsLambda": {
   				"FunctionArn": "FunctionArn",
   				"FunctionPayload": "{\"res-x\": \"100\",\"res-y\": \"100\"}"
   			}
   		}
   	}]
   }
   ```

   Konfigurasi Titik Akses Lambda Objek berikut menunjukkan payload dengan satu parameter, dan dengan `GetObject-Range`, `GetObject-PartNumber`, `HeadObject-Range`, dan `HeadObject-PartNumber` diaktifkan.

   ```
   {
       "SupportingAccessPoint":"AccessPointArn",
       "CloudWatchMetricsEnabled": false,
       "AllowedFeatures": ["GetObject-Range", "GetObject-PartNumber", "HeadObject-Range", "HeadObject-PartNumber"],        
       "TransformationConfigurations": [{
           "Action": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"],
           "ContentTransformation": {
               "AwsLambda": {
                   "FunctionArn":"FunctionArn",
                   "FunctionPayload": "{\"compression-amount\": \"5\"}"
               }
           }
       }]
   }
   ```
**penting**  
Saat menggunakan Titik Akses Lambda Objek, pastikan muatan tidak berisi informasi rahasia apa pun.

### Menggunakan AWS CloudFormation konsol dan template
<a name="olap-create-cfn-console"></a>

Anda dapat membuat Titik Akses Lambda Objek dengan menggunakan konfigurasi default yang disediakan oleh Amazon S3. Anda dapat mengunduh AWS CloudFormation template dan kode sumber fungsi Lambda dari [GitHub repositori](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration) dan menyebarkan sumber daya ini untuk menyiapkan Objek Lambda Access Point fungsional.

Untuk informasi tentang memodifikasi konfigurasi default AWS CloudFormation template, lihat[Otomatiskan pengaturan Lambda Objek S3 dengan templat CloudFormation](olap-using-cfn-template.md).

*Untuk informasi tentang mengonfigurasi Titik Akses Objek Lambda dengan CloudFormation menggunakan tanpa templat, [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspoint.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspoint.html)lihat di Panduan Pengguna AWS CloudFormation .*

**Untuk mengunggah paket deployment fungsi Lambda**

1. Unduh paket penerapan AWS Lambda fungsi `s3objectlambda_deployment_package.zip` di konfigurasi default Objek [Lambda S3](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Unggah paket ke bucket Amazon S3.

**Untuk membuat Object Lambda Access Point dengan menggunakan konsol AWS CloudFormation**

1. Unduh AWS CloudFormation template `s3objectlambda_defaultconfig.yaml` di konfigurasi default [Objek Lambda S3](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Masuk ke AWS Management Console dan buka AWS CloudFormation konsol di [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Lakukan salah satu tindakan berikut: 
   + Jika Anda belum pernah menggunakan AWS CloudFormation sebelumnya, di AWS CloudFormation beranda, pilih **Buat tumpukan**.
   + Jika Anda pernah menggunakan AWS CloudFormation sebelumnya, di panel navigasi kiri, pilih **Tumpukan**. Pilih **Buat tumpukan**, lalu pilih **Dengan sumber daya baru (standar)**.

1. Untuk **Prasyarat-Siapkan templat**, pilih **Templat sudah siap**.

1. Untuk **Tentukan templat**, pilih **Unggah file templat** dan unggah`s3objectlambda_defaultconfig.yaml`.

1. Pilih **Berikutnya**.

1. Pada halaman **Tentukan detail tumpukan**, masukkan nama untuk tumpukan.

1. Di bagian **Parameter**, tentukan parameter berikut, yang ditentukan di dalam templat tumpukan:

   1. Untuk **CreateNewSupportingAccessPoint**, lakukan salah satu hal berikut: 
      + Jika Anda sudah memiliki titik akses pendukung untuk bucket S3 tempat Anda mengunggah templat, pilih **false**.
      + Jika Anda ingin membuat titik akses baru untuk bucket ini, pilih **true**. 

   1. Untuk **EnableCloudWatchMonitoring**, pilih **true** atau **false**, tergantung apakah Anda ingin mengaktifkan metrik dan alarm CloudWatch permintaan Amazon. 

   1. (Opsional) Untuk **LambdaFunctionPayload**, tambahkan teks JSON yang ingin Anda berikan ke fungsi Lambda Anda sebagai input. Anda dapat mengonfigurasi muatan dengan parameter berbeda untuk Titik Akses Lambda Objek berbeda yang menginvokasi fungsi Lambda yang sama, sehingga memperluas fleksibilitas fungsi Lambda Anda.
**penting**  
Saat menggunakan Titik Akses Lambda Objek, pastikan muatan tidak berisi informasi rahasia apa pun.

   1. Untuk **LambdaFunctionRuntime**, masukkan runtime pilihan Anda untuk fungsi Lambda. Pilihan yang tersedia adalah `nodejs14.x`, `python3.9`, `java11`.

   1. Untuk **LambdaFunctionS3 BucketName**, masukkan nama bucket Amazon S3 tempat Anda mengunggah paket penerapan.

   1. Untuk **LambdaFunctionS3Key, masukkan kunci** objek Amazon S3 tempat Anda mengunggah paket penerapan.

   1. Untuk **LambdaFunctionS3 ObjectVersion**, masukkan versi objek Amazon S3 tempat Anda mengunggah paket penerapan.

   1. Untuk **ObjectLambdaAccessPointName**, masukkan nama untuk Object Lambda Access Point Anda.

   1. Untuk **S3 BucketName**, masukkan nama bucket Amazon S3 yang akan dikaitkan dengan Titik Akses Objek Lambda Anda.

   1. Untuk **SupportingAccessPointName**, masukkan nama jalur akses pendukung Anda.
**catatan**  
Ini adalah titik akses yang terkait dengan bucket Amazon S3 yang Anda pilih pada langkah sebelumnya. Jika Anda tidak memiliki titik akses yang terkait dengan bucket Amazon S3 Anda, Anda dapat mengonfigurasi template untuk membuatnya untuk Anda dengan memilih **true** for. **CreateNewSupportingAccessPoint**

1. Pilih **Berikutnya**.

1. Pada **Konfigurasikan halaman opsi stack**, pilih **Berikutnya**.

   Untuk informasi selengkapnya tentang pengaturan opsional di halaman ini, lihat [Mengatur AWS CloudFormation opsi tumpukan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html) dalam *AWS CloudFormation Panduan Pengguna*.

1. Di halaman **Tinjau**, pilih **Buat tumpukan**.

### Menggunakan AWS Cloud Development Kit (AWS CDK)
<a name="olap-create-cdk"></a>

*Untuk informasi selengkapnya tentang mengonfigurasi Titik Akses Objek Lambda menggunakan AWS CDK, [`AWS::S3ObjectLambda`lihat Membangun](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3objectlambda-readme.html) Pustaka di AWS Cloud Development Kit (AWS CDK) Referensi API.*

# Otomatiskan pengaturan Lambda Objek S3 dengan templat CloudFormation
<a name="olap-using-cfn-template"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Anda dapat menggunakan AWS CloudFormation template untuk membuat Titik Akses Lambda Objek Amazon S3 dengan cepat. CloudFormationTemplate secara otomatis membuat sumber daya yang relevan, mengonfigurasi peran AWS Identity and Access Management (IAM), dan menyiapkan AWS Lambda fungsi yang secara otomatis menangani permintaan melalui Object Lambda Access Point. Dengan CloudFormation template, Anda dapat menerapkan praktik terbaik, meningkatkan postur keamanan Anda, dan mengurangi kesalahan yang disebabkan oleh proses manual.

[GitHub Repositori](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration) ini berisi CloudFormation template dan kode sumber fungsi Lambda. Untuk petunjuk tentang cara menggunakan templat, lihat [Membuat Titik Akses Objek Lambda](olap-create.md).

Fungsi Lambda yang disediakan dalam templat tidak menjalankan transformasi apa pun. Sebaliknya, ia mengembalikan objek Anda apa adanya dari sumber data yang mendasarinya. Anda dapat mengkloning fungsi dan menambahkan kode transformasi Anda sendiri untuk mengubah dan memproses data saat dikembalikan ke aplikasi. Untuk informasi selengkapnya tentang fungsi Anda, lihat [Memodifikasi fungsi Lambda](#modifying-lambda-function) dan [Menulis fungsi Lambda untuk Titik Akses S3 Lambda Objek](olap-writing-lambda.md). 

## Memodifikasi templat
<a name="modifying-cfn-template"></a>

**Membuat titik akses pendukung baru**  
S3 Lambda Objek menggunakan dua titik akses, Titik Akses Lambda Objek dan titik akses S3 standar, yang disebut sebagai *titik akses pendukung*. Saat Anda membuat permintaan ke Titik Akses Lambda Objek, S3 akan memanggil Lambda atas nama Anda, atau mendelegasikan permintaan tersebut ke titik akses pendukung, bergantung pada konfigurasi Lambda Objek S3. Anda dapat membuat titik akses pendukung baru dengan meneruskan parameter berikut sebagai bagian dari perintah `aws cloudformation deploy` saat mendeploy templat.

```
CreateNewSupportingAccessPoint=true
```

**Mengonfigurasi muatan fungsi**  
Anda dapat mengonfigurasi payload untuk menyediakan data tambahan ke fungsi Lambda dengan meneruskan parameter berikut sebagai bagian dari perintah `aws cloudformation deploy` saat menerapkan templat.

```
LambdaFunctionPayload="format=json"
```

**Mengaktifkan pemantauan Amazon CloudWatch**  
Anda dapat mengaktifkan CloudWatch pemantauan dengan meneruskan parameter berikut sebagai bagian dari `aws cloudformation deploy` perintah saat menerapkan template.

```
EnableCloudWatchMonitoring=true
```

Parameter ini memungkinkan Titik Akses Objek Lambda Anda untuk metrik permintaan Amazon S3 dan membuat CloudWatch dua alarm untuk memantau kesalahan sisi klien dan sisi server.

**catatan**  
 CloudWatch Penggunaan Amazon akan dikenakan biaya tambahan. Untuk informasi lebih lanjut tentang metrik permintaan Amazon S3, lihat [Pemantauan dan pencatatan titik akses](access-points-monitoring-logging.md).  
Untuk detail harganya, lihat [Harga CloudWatch ](https://aws.amazon.com/cloudwatch/pricing/). 

**Mengonfigurasi konkurensi yang tersedia**  
Untuk mengurangi latensi, Anda dapat mengonfigurasi konkurensi yang disediakan untuk fungsi Lambda yang mendukung Titik Akses Lambda Object dengan mengedit templat untuk menyertakan baris berikut di bawah `Resources`.

```
LambdaFunctionVersion:
      Type: AWS::Lambda::Version
      Properties:
        FunctionName: !Ref LambdaFunction
        ProvisionedConcurrencyConfig:
            ProvisionedConcurrentExecutions: Integer
```

**catatan**  
Anda akan dikenakan biaya tambahan untuk penyediaan konkurensi. Untuk informasi selengkapnya tentang konkurensi yang disediakan, lihat [Mengelola konkurensi Lambda yang disediakan](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html) dalam *Panduan Pengembang AWS Lambda *.  
Untuk detail harganya, lihat [Harga AWS Lambda](https://aws.amazon.com/lambda/pricing/).

## Memodifikasi fungsi Lambda
<a name="modifying-lambda-function"></a>

**Mengubah nilai header untuk permintaan `GetObject`**  
Secara default, fungsi Lambda meneruskan semua header, kecuali `Content-Length` dan`ETag`, dari permintaan URL yang telah ditetapkan sebelumnya ke `GetObject` klien. Berdasarkan kode transformasi Anda dalam fungsi Lambda, Anda dapat memilih untuk mengirim nilai header baru ke `GetObject` klien.

Anda dapat memperbarui fungsi Lambda Anda untuk mengirim nilai header baru dengan meneruskannya dalam operasi API `WriteGetObjectResponse`.

Misalnya, jika fungsi Lambda Anda menerjemahkan teks dalam objek Amazon S3 ke bahasa yang berbeda, Anda dapat meneruskan nilai baru di header `Content-Language`. Anda dapat melakukan ini dengan memodifikasi fungsi `writeResponse` sebagai berikut:

```
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer,
  headers: Headers): Promise<PromiseResult<{}, AWSError>> {
  const { algorithm, digest } = getChecksum(transformedObject);

  return s3Client.writeGetObjectResponse({
    RequestRoute: requestContext.outputRoute,
    RequestToken: requestContext.outputToken,
    Body: transformedObject,
    Metadata: {
      'body-checksum-algorithm': algorithm,
      'body-checksum-digest': digest
    },
    ...headers,
    ContentLanguage: 'my-new-language'
  }).promise();
}
```

Untuk daftar lengkap header yang didukung, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax) dalam *Referensi API Amazon Simple Storage Service*.

**Mengembalikan header metadata**  
Anda dapat memperbarui fungsi Lambda Anda untuk mengirim nilai header baru dengan meneruskannya dalam permintaan operasi API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax).

```
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer,
  headers: Headers): Promise<PromiseResult<{}, AWSError>> {
  const { algorithm, digest } = getChecksum(transformedObject);

  return s3Client.writeGetObjectResponse({
    RequestRoute: requestContext.outputRoute,
    RequestToken: requestContext.outputToken,
    Body: transformedObject,
    Metadata: {
      'body-checksum-algorithm': algorithm,
      'body-checksum-digest': digest,
      'my-new-header': 'my-new-value' 
    },
    ...headers
  }).promise();
}
```

**Mengembalikan kode status baru**  
Anda dapat mengembalikan kode status kustom ke klien `GetObject` dengan meneruskannya dalam permintaan operasi API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax).

```
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer,
  headers: Headers): Promise<PromiseResult<{}, AWSError>> {
  const { algorithm, digest } = getChecksum(transformedObject);

  return s3Client.writeGetObjectResponse({
    RequestRoute: requestContext.outputRoute,
    RequestToken: requestContext.outputToken,
    Body: transformedObject,
    Metadata: {
      'body-checksum-algorithm': algorithm,
      'body-checksum-digest': digest
    },
    ...headers,
    StatusCode: Integer
  }).promise();
}
```

Untuk daftar lengkap kode status didukung, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax) dalam *Referensi API Amazon Simple Storage Service*.

**Menerapkan `Range` dan `partNumber` parameter ke objek sumber**  
Secara default, Object Lambda Access Point yang dibuat oleh CloudFormation template dapat menangani parameter `Range` dan`partNumber`. Fungsi Lambda menerapkan rentang atau nomor bagian yang diminta ke objek yang diubah. Untuk melakukannya, fungsi harus mengunduh seluruh objek dan menjalankan transformasi. Dalam beberapa kasus, rentang objek Anda yang diubah mungkin dipetakan tepat ke rentang objek sumber Anda. Artinya, meminta rentang byte A-B pada objek sumber dan menjalankan transformasi mungkin menghasilkan hasil yang sama seperti meminta seluruh objek, menjalankan transformasi, dan mengembalikan rentang byte A-B pada objek yang diubah.

Dalam kasus seperti itu, Anda dapat mengubah implementasi fungsi Lambda untuk menerapkan rentang atau nomor bagian langsung ke objek sumber. Pendekatan ini mengurangi latensi fungsi keseluruhan dan memori yang diperlukan. Untuk informasi selengkapnya, lihat [Bekerja dengan header Range dan partNumber](range-get-olap.md).

**Menonaktifkan penanganan `Range` dan `partNumber`**  
Secara default, Object Lambda Access Point yang dibuat oleh CloudFormation template dapat menangani parameter `Range` dan`partNumber`. Jika Anda tidak memerlukan perilaku ini, Anda dapat menonaktifkannya dengan menghapus baris berikut dari templat:

```
AllowedFeatures:
  - GetObject-Range
  - GetObject-PartNumber
  - HeadObject-Range 
  - HeadObject-PartNumber
```

**Mengubah objek yang berukuran besar**  
Secara default, fungsi Lambda memproses seluruh objek dalam memori sebelum dapat mulai streaming respons ke S3 Lambda Objek. Anda dapat memodifikasi fungsi untuk mengalirkan respons saat melakukan transformasi. Melakukannya akan membantu mengurangi latensi transformasi dan ukuran memori fungsi Lambda. Untuk implementasi contoh tersebut, lihat [Contoh konten terkompresi Stream](olap-writing-lambda.md#olap-getobject-response).

# Menggunakan Titik Akses Lambda Objek Amazon S3
<a name="olap-use"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Membuat permintaan melalui Titik Akses Lambda Objek Amazon S3 berfungsi sama seperti membuat permintaan melalui titik akses lainnya. Untuk informasi selengkapnya tentang cara membuat permintaan melalui titik akses, lihat [Menggunakan jalur akses Amazon S3 untuk bucket tujuan umum](using-access-points.md). Anda dapat membuat permintaan melalui Titik Akses Objek Lambda dengan menggunakan konsol Amazon S3 AWS Command Line Interface ,AWS CLI() AWS SDKs, atau Amazon S3 REST API.

**penting**  
Amazon Resource Names (ARNs) untuk Object Lambda Access Points menggunakan nama layanan. `s3-object-lambda` Dengan demikian, Object Lambda Access Point ARNs dimulai dengan`arn:aws::s3-object-lambda`, bukan`arn:aws::s3`, yang digunakan dengan titik akses lainnya.

## Cara untuk menemukan ARN untuk Titik Akses Lambda Objek Anda
<a name="olap-find-arn"></a>

Untuk menggunakan Object Lambda Access Point dengan AWS CLI atau AWS SDKs, Anda perlu mengetahui Amazon Resource Name (ARN) dari Object Lambda Access Point. Contoh berikut menunjukkan cara untuk menemukan ARN untuk Titik Akses Lambda Objek dengan menggunakan konsol Amazon S3 atau. AWS CLI

### Menggunakan konsol S3
<a name="olap-use-arn-console"></a>

**Untuk menemukan ARN untuk Titik Akses Lambda Objek Anda dengan menggunakan konsol**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Pilih tombol opsi di samping Titik Akses Lambda Objek yang ARN-nya ingin Anda salin.

1. Pilih **Salin ARN**.

### Menggunakan AWS CLI
<a name="olap-use-arn-cli"></a>

**Untuk menemukan ARN untuk Object Lambda Access Point Anda dengan menggunakan AWS CLI**

1. Untuk mengambil daftar Titik Akses Lambda Objek yang terkait dengan Akun AWS Anda, jalankan perintah berikut. Sebelum menjalankan perintah, ganti ID akun *`111122223333`* dengan Akun AWS ID Anda.

   ```
   aws s3control list-access-points-for-object-lambda --account-id 111122223333
   ```

1. Tinjau output perintah untuk menemukan Titik Akses Lambda Objek ARN yang ingin Anda gunakan. Output dari perintah sebelumnya akan terlihat seperti contoh berikut.

   ```
   {
       "ObjectLambdaAccessPointList": [
           {
               "Name": "my-object-lambda-ap",
               "ObjectLambdaAccessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap"
           },
           ...
       ]
   }
   ```

## Cara menggunakan alias gaya bucket untuk bucket S3 Anda Titik Akses Lambda Objek
<a name="ol-access-points-alias"></a>

Saat Anda membuat Titik Akses Lambda Objek, Amazon S3 secara otomatis menghasilkan alias unik untuk Titik Akses Lambda Objek Anda. Anda dapat menggunakan alias ini alih-alih nama bucket Amazon S3 atau Amazon Resource Name (ARN) Titik Akses Lamda Objek dalam permintaan untuk operasi bidang data titik akses. Untuk mengetahui daftar operasi ini, lihat [Kompatibilitas titik akses](access-points-service-api-support.md).

Nama alias Titik Akses Lambda Objek dibuat dalam namespace yang sama dengan bucket Amazon S3. Nama alias ini dibuat secara otomatis, dan tidak dapat diubah. Untuk Titik Akses Lambda Objek yang ada, alias secara otomatis ditetapkan untuk digunakan. Nama alias Titik Akses Lambda Objek memenuhi semua persyaratan nama bucket Amazon S3 yang valid dan terdiri dari bagian-bagian berikut:

`Object Lambda Access Point name prefix-metadata--ol-s3`

**catatan**  
Sufiks `--ol-s3`dicadangkan untuk nama alias Titik Akses Lambda Objek dan tidak dapat digunakan untuk nama bucket atau Titik Akses Lambda Objek. Untuk informasi selengkapnya tentang penamaan bucket di Amazon S3, lihat [Aturan penamaan bucket tujuan umum](bucketnamingrules.md).

Contoh berikut menunjukkan ARN dan alias Titik Akses Lambda Objek untuk Titik Akses Lambda Objek bernama `my-object-lambda-access-point`:
+ **ARN**–`arn:aws:s3-object-lambda:region:account-id:accesspoint/my-object-lambda-access-point`
+ **Alias Titik Akses Lambda Objek**–`my-object-lambda-acc-1a4n8yjrb3kda96f67zwrwiiuse1a--ol-s3`

Bila Anda menggunakan Titik Akses Lambda Objek, Anda dapat menggunakan nama alias Titik Akses Lambda Objek tanpa memerlukan perubahan kode yang ekstensif.

Ketika Anda menghapus Titik Akses Lambda Objek, nama alias Titik Akses Lambda Objek menjadi tidak aktif dan tidak tersedia.

### Cara menemukan alias untuk Titik Akses Lambda Objek Anda
<a name="olap-find-alias"></a>

#### Menggunakan konsol S3
<a name="olap-use-alias-console"></a>

**Untuk menemukan alias untuk Titik Akses Lambda Objek Anda dengan menggunakan konsol**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Untuk Access Point Lambda Objek yang ingin Anda gunakan, salin nilai **Alias Titik Akses Lambda Objek**.

#### Menggunakan AWS CLI
<a name="olap-use-alias-cli"></a>

Saat Anda membuat Titik Akses Lambda Objek, Amazon S3 secara otomatis menghasilkan nama alias Titik Akses Lambda Objek, seperti yang ditunjukkan pada perintah contoh berikut. Untuk menjalankan perintah ini, ganti `user input placeholders` dengan informasi Anda sendiri. Untuk informasi tentang cara membuat Titik Akses Objek Lambda menggunakan AWS CLI, lihat. [Untuk membuat Object Lambda Access Point dengan menggunakan AWS CLI](olap-create.md#olap-create-cli-specific)

```
aws s3control create-access-point-for-object-lambda --account-id 111122223333 --name my-object-lambda-access-point --configuration file://my-olap-configuration.json
{
    "ObjectLambdaAccessPointArn": "arn:aws:s3:region:111122223333:accesspoint/my-access-point",
    "Alias": {
        "Value": "my-object-lambda-acc-1a4n8yjrb3kda96f67zwrwiiuse1a--ol-s3",
        "Status": "READY"
    }
}
```

Nama alias Titik Akses Lambda Objek yang dihasilkan memiliki dua bidang: 
+ Kolom `Value` tersebut adalah nilai alias Titik Akses Lambda Objek. 
+ Bidang `Status` adalah status alias Titik Akses Lambda Objek. Jika statusnya adalah `PROVISIONING`, Amazon S3 menyediakan alias Titik Akses Lambda Objek, dan alias belum siap untuk digunakan. Jika statusnya adalah `READY`, alias Titik Akses Lambda Objek telah berhasil disediakan dan siap digunakan.

Untuk informasi selengkapnya tentang jenis data `ObjectLambdaAccessPointAlias` di API REST, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html)dan [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ObjectLambdaAccessPointAlias.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ObjectLambdaAccessPointAlias.html) dalam *Referensi API Amazon Simple Storage Service*.

### Cara untuk menggunakan alias Titik Akses Lambda Objek alias
<a name="use-olap-alias"></a>

Anda dapat menggunakan alias Titik Akses Lambda Objek, bukan nama bucket Amazon S3 untuk operasi yang tercantum di dalam [Kompatibilitas titik akses](access-points-service-api-support.md).

 AWS CLI Contoh berikut untuk `get-bucket-location` perintah menggunakan alias access point bucket untuk mengembalikan tempat Wilayah AWS bucket berada. Untuk menjalankan perintah ini, ganti `user input placeholders` dengan informasi Anda sendiri.

```
aws s3api get-bucket-location --bucket my-object-lambda-acc-w7i37nq6xuzgax3jw3oqtifiusw2a--ol-s3
            
{
    "LocationConstraint": "us-west-2"
}
```

Jika alias Titik Akses Lambda Object dalam permintaannya tidak valid, kode kesalahan `InvalidAccessPointAliasError` dikembalikan. Untuk informasi selengkapnya tentang `InvalidAccessPointAliasError`, lihat [Daftar Kode Kesalahan](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList) dalam *Referensi API Amazon Simple Storage Service*.

Keterbatasan alias Titik Akses Lambda Objek sama dengan alias titik akses. Untuk informasi lebih lanjut tentang batasan alias titik akses, lihat [Keterbatasan alias titik akses](access-points-naming.md#use-ap-alias-limitations).

# Pertimbangan keamanan untuk Titik Akses S3 Lambda Objek
<a name="olap-security"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Dengan Amazon S3 Object Lambda, Anda dapat melakukan transformasi kustom pada data saat meninggalkan Amazon S3 dengan menggunakan skala dan fleksibilitas sebagai platform komputasi. AWS Lambda S3 dan Lambda tetap aman secara default, namun untuk menjaga keamanan ini, pertimbangan kustom oleh pembuat fungsi Lambda diperlukan. S3 Lambda Objek mengharuskan semua akses dilakukan oleh pengguna utama yang diautentikasi (tidak ada akses anonim) dan melalui HTTPS.

Untuk memitigasi risiko keamanan, kami merekomendasikan hal berikut: 
+ Cakup peran eksekusi Lambda ke kumpulan izin sekecil mungkin.
+ Jika memungkinkan, pastikan fungsi Lambda Anda mengakses Amazon S3 melalui URL yang telah ditentukan sebelumnya. 

## Mengonfigurasi kebijakan IAM
<a name="olap-iam-policies"></a>

Kebijakan sumber daya dukungan titik akses S3 AWS Identity and Access Management (IAM) yang memungkinkan Anda mengontrol penggunaan titik akses berdasarkan sumber daya, pengguna, atau kondisi lainnya. Untuk informasi selengkapnya, lihat [Mengonfigurasi kebijakan IAM untuk Titik Akses Lambda Objek](olap-policies.md).

## Perilaku enkripsi
<a name="olap-encryption"></a>

Karena Titik Akses Objek Lambda menggunakan Amazon S3 AWS Lambda dan, ada perbedaan dalam perilaku enkripsi. Untuk informasi selengkapnya tentang enkripsi default S3, lihat [Mengatur perilaku enkripsi sisi server default untuk bucket Amazon S3](bucket-encryption.md).
+ Saat Anda menggunakan enkripsi di sisi server S3 dengan Titik Akses Lambda Object, objek didekripsi sebelum dikirimkan ke Lambda. Setelah objek dikirim ke Lambda, objek diproses secara tidak terenkripsi (dalam kasus permintaan `GET` atau `HEAD`).
+ Untuk mencegah kunci enkripsi dicatat, S3 menolak permintaan `GET` dan `HEAD` untuk objek yang dienkripsi menggunakan enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C). Namun, fungsi Lambda mungkin masih mengambil objek ini jika memiliki akses ke kunci klien yang disediakan.
+ Saat menggunakan enkripsi di sisi klien S3 dengan Titik Akses Lambda Objeks, pastikan Lambda memiliki akses ke kunci enkripsi sehingga dapat mendekripsi dan mengenkripsi kembali objek.

## Keamanan titik akses
<a name="olap-access-points-security"></a>

S3 Lambda Objek menggunakan dua titik akses, Titik Akses Lambda Objek dan titik akses S3 standar, yang disebut sebagai *titik akses pendukung*. Saat Anda membuat permintaan ke Titik Akses Lambda Objek, S3 akan memanggil Lambda atas nama Anda, atau mendelegasikan permintaan tersebut ke titik akses pendukung, bergantung pada konfigurasi Lambda Objek S3. Ketika Lambda dipanggil untuk permintaan, S3 menghasilkan URL yang telah ditandatangani sebelumnya ke objek Anda atas nama Anda melalui titik akses pendukung. Fungsi Lambda Anda menerima URL ini sebagai input saat fungsi tersebut dipanggil.

Anda dapat mengatur fungsi Lambda Anda untuk menggunakan URL presigned ini untuk mengambil objek asli, alih-alih memanggil S3 secara langsung. Dengan menggunakan model ini, Anda dapat menerapkan batas keamanan yang lebih baik ke objek Anda. Anda dapat membatasi akses objek langsung melalui bucket S3 atau titik akses S3 ke serangkaian peran IAM atau pengguna terbatas. Pendekatan ini juga melindungi fungsi Lambda Anda agar tidak terkena [masalah confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), di mana fungsi yang salah dikonfigurasi dengan izin berbeda dari pemanggil dapat mengizinkan atau menolak akses ke objek, padahal seharusnya tidak demikian.

## Akses publik Titik Akses Lambda Objek
<a name="olap-public-access"></a>

S3 Lambda Objek tidak mengizinkan akses anonim atau publik karena Amazon S3 harus mengotorisasi identitas Anda untuk menyelesaikan permintaan S3 Lambda Objek. Saat memanggil permintaan melalui Titik Akses Lambda Objek, Anda harus memiliki izin untuk fungsi Lambda `lambda:InvokeFunction` yang dikonfigurasi. Demikian pula, saat menjalankan operasi API lainnya melalui Titik Akses Lambda Objek, Anda harus memiliki izin `s3:*` yang diperlukan. 

Tanpa izin ini, permintaan untuk menginvokasi Lambda atau mendelegasikan ke S3 akan gagal dengan kesalahan HTTP 403 (Forbidden). Semua akses harus dilakukan oleh pengguna utama yang diautentikasi. Jika Anda memerlukan akses publik, Anda dapat menggunakan Lambda @Edge sebagai alternatif yang memungkinkan. Untuk informasi selengkapnya, lihat [Menyesuaikan di tepi dengan Lambda](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html) @Edge di Panduan Pengembang * CloudFront Amazon*.

## Alamat IP Titik Akses Lambda Objek
<a name="olap-ips"></a>

Subnet `describe-managed-prefix-lists` mendukung titik akhir gateway cloud privat virtual (VPC), dan terkait dengan tabel perutean titik akhir VPC. Karena Titik Akses Objek Lambda tidak mendukung VPC gateway, rentang IP-nya hilang. Rentang yang hilang adalah milik Amazon S3, namun tidak didukung oleh titik akhir VPC gateway. Untuk informasi selengkapnya`describe-managed-prefix-lists`, lihat [DescribeManagedPrefixLists](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeManagedPrefixLists.html)di *Referensi API Amazon EC2* dan [rentang alamat AWS IP](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html) di. *Referensi Umum AWS*

# Mengonfigurasi kebijakan IAM untuk Titik Akses Lambda Objek
<a name="olap-policies"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Kebijakan sumber daya dukungan titik akses Amazon S3 AWS Identity and Access Management (IAM) yang dapat Anda gunakan untuk mengontrol penggunaan titik akses menurut sumber daya, pengguna, atau kondisi lainnya. Anda dapat mengontrol akses melalui kebijakan sumber daya opsional pada Titik Akses Lambda Objek, atau kebijakan sumber daya untuk mendukung titik akses. Sebagai step-by-step contoh, lihat [Tutorial: Mengubah data untuk aplikasi Anda dengan S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md) dan[Tutorial: Mendeteksi dan menyunting data PII dengan Objek S3 Lambda dan Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md). 

Empat sumber daya berikut harus memiliki izin yang diberikan untuk bekerja dengan Titik Akses Lambda Objek:
+ Identitas IAM, seperti pengguna atau peran. Untuk informasi selengkapnya tentang identitas IAM dan praktik terbaik, lihat [Identitas IAM (pengguna, grup pengguna, dan peran)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) dalam *Panduan Pengguna IAM*.
+ Titik akses standar yang terhubung ke sumber data yang mendasarinya seperti bucket S3 atau Amazon FSx untuk volume OpenZFS. Saat Anda bekerja dengan Titik Akses Lambda Objek, titik akses standar ini dikenal sebagai *titik akses pendukung*.
+ Titik akses Lambda Object.
+  AWS Lambda Fungsinya.

**penting**  
Sebelum menyimpan kebijakan, pastikan untuk menyelesaikan peringatan keamanan, kesalahan, peringatan umum, dan saran dari. AWS Identity and Access Management Access Analyzer Penganalisis Akses IAM menjalankan pemeriksaan kebijakan untuk memvalidasi kebijakan Anda terhadap [tata bahasa kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) IAM dan [praktik terbaik](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html). Pemeriksaan ini menghasilkan temuan dan memberikan rekomendasi yang dapat ditindaklanjuti untuk membantu Anda membuat kebijakan yang fungsional dan sesuai dengan praktik terbaik keamanan.   
Untuk mempelajari validasi kebijakan menggunakan Penganalisis Akses IAM lebih lanjut, lihat [Memvalidasi kebijakan Penganalisis Akses IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) di *Panduan Pengguna IAM*. Untuk melihat daftar peringatan, kesalahan, dan saran yang ditampilkan oleh Penganalisis Akses IAM, lihat referensi pemeriksaan kebijakan [Penganalisis Akses IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Contoh kebijakan berikut mengasumsikan bahwa Anda memiliki sumber daya berikut:
+ Bucket Amazon S3 dengan Amazon Resource Name (ARN) berikut: 

  `arn:aws:s3:::amzn-s3-demo-bucket1`
+ Titik akses Amazon S3 standard pada bucket ini dengan ARN berikut: 

  `arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point`
+ Titik akses Lambda Objek dengan ARN berikut: 

  `arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap`
+  AWS Lambda Fungsi dengan ARN berikut: 

  `arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction`

**catatan**  
Jika Anda menggunakan fungsi Lambda dari akun, Anda harus menyertakan versi fungsi tertentu dalam pernyataan kebijakan Anda. Dalam contoh ARN berikut, versinya ditandai dengan *1*:  
`arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction:1`  
Lambda tidak mendukung penambahan kebijakan IAM ke versi. `$LATEST` Untuk informasi selengkapnya tentang versi fungsi Lambda, lihat [Versi fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) dalam *Panduan Pengembang AWS Lambda *.

**Example – Kebijakan bucket yang mendelegasikan kontrol akses ke titik akses standar**  
Contoh kebijakan bucket S3 berikut mendelegasikan kontrol akses untuk sebuah bucket ke titik akses standar bucket. Kebijakan ini memungkinkan akses penuh ke semua titik akses yang dimiliki oleh akun pemilik bucket. Oleh karena itu, semua akses ke bucket ini dikendalikan oleh kebijakan yang melekat pada titik aksesnya. Pengguna dapat membaca dari bucket hanya melalui titik akses, yang berarti bahwa operasi hanya dapat dipanggil melalui titik akses. Untuk informasi selengkapnya, lihat [Mendelegasikan kontrol akses ke titik akses](access-points-policies.md#access-points-delegating-control).     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement" : [
    {
        "Effect": "Allow",
        "Principal" : { "AWS":"account-ARN"},
        "Action" : "*",
        "Resource" : [
            "arn:aws:s3:::amzn-s3-demo-bucket", 
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
        ],
        "Condition": {
            "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" }
        }
    }]
}
```

**Example — Kebijakan IAM yang memberikan pengguna izin yang diperlukan untuk menggunakan Titik Akses Objek Lambda**  
Kebijakan IAM berikut memberikan izin pengguna ke fungsi Lambda, titik akses standar, dan Titik Akses Lambda Objek.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowLambdaInvocation",
      "Action": [
        "lambda:InvokeFunction"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction:1",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "s3-object-lambda.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "AllowStandardAccessPointAccess",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "s3-object-lambda.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "AllowObjectLambdaAccess",
      "Action": [
        "s3-object-lambda:Get*",
        "s3-object-lambda:List*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap"
    }
  ]
}
```

## Aktifkan izin untuk peran eksekusi Lambda
<a name="olap-execution-role"></a>

Ketika `GET` permintaan dibuat ke Object Lambda Access Point, fungsi Lambda Anda memerlukan izin untuk mengirim data ke S3 Object Lambda Access Point. Izin ini diberikan dengan mengaktifkan izin `s3-object-lambda:WriteGetObjectResponse` pada peran eksekusi fungsi Lambda Anda. Anda dapat membuat peran eksekusi baru atau memperbarui peran yang sudah ada.

**catatan**  
Fungsi Anda memerlukan izin `s3-object-lambda:WriteGetObjectResponse` hanya jika Anda membuat permintaan `GET`.

**Untuk membuat peran eksekusi di konsol IAM**

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

1. Di panel navigasi sebelah kiri, pilih **Peran**. 

1. Pilih **Buat peran**.

1. Di bawah **Kasus penggunaan umum**, pilih **Lambda**.

1. Pilih **Berikutnya**.

1. Pada halaman **Tambahkan izin**, cari kebijakan AWS terkelola [https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy$serviceLevelSummary](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy$serviceLevelSummary), lalu pilih kotak centang di samping nama kebijakan. 

   Kebijakan ini harus berisi Tindakan `s3-object-lambda:WriteGetObjectResponse`.

1. Pilih **Berikutnya**.

1. Pada halaman **Nama, tinjau, dan buat**, untuk **Nama peran**, masukkan **s3-object-lambda-role**.

1. (Opsional) Tambahkan deskripsi dan tag untuk peran ini. 

1. Pilih **Buat peran**.

1. Terapkan **s3-object-lambda-role** yang baru dibuat sebagai peran eksekusi fungsi Lambda Anda. Ini dapat dilakukan selama atau setelah pembuatan fungsi Lambda di konsol Lambda.

Untuk informasi selengkapnya tentang peran eksekusi, lihat Peran [eksekusi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) di *Panduan Pengembang AWS Lambda *.

## Menggunakan kunci konteks dengan Titik Akses Lambda Objek
<a name="olap-keys"></a>

S3 Lambda Objek akan mengevaluasi kunci konteks seperti `s3-object-lambda:TlsVersion` atau `s3-object-lambda:AuthType` yang terkait dengan koneksi atau penandatanganan permintaan. Semua kunci konteks lainnya, seperti `s3:prefix`, dievaluasi oleh Amazon S3. 

## Dukungan CORS Titik Akses Lambda Objek
<a name="olap-cors"></a>

Ketika S3 Lambda Objek menerima permintaan dari browser atau permintaannya menyertakan header `Origin`, S3 Lambda Objek selalu menambahkan bidang header `"AllowedOrigins":"*"`.

Untuk informasi selengkapnya, lihat [Berbagi sumber daya lintas asal (CORS)](cors.md).

# Menulis fungsi Lambda untuk Titik Akses S3 Lambda Objek
<a name="olap-writing-lambda"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Bagian ini merinci cara menulis AWS Lambda fungsi untuk digunakan dengan Amazon S3 Object Lambda Access Points.

Untuk mempelajari tentang end-to-end prosedur lengkap untuk beberapa tugas Lambda Objek S3, lihat berikut ini:
+ [Tutorial: Mengubah data untuk aplikasi Anda dengan S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)
+ [Tutorial: Mendeteksi dan menyunting data PII dengan Objek S3 Lambda dan Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)
+ [Tutorial: Menggunakan S3 Lambda Objek untuk menandai gambar secara dinamis saat gambarnya diambil](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/olap-writing-lambda.html)

**Topics**
+ [

## Bekerja dengan `GetObject` permintaan di Lambda
](#olap-getobject-response)
+ [

## Bekerja dengan permintaan `HeadObject` di Lambda
](#olap-headobject)
+ [

## Bekerja dengan permintaan `ListObjects` di Lambda
](#olap-listobjects)
+ [

## Bekerja dengan permintaan `ListObjectsV2` di Lambda
](#olap-listobjectsv2)
+ [

# Format konteks peristiwa dan penggunaan
](olap-event-context.md)
+ [

# Bekerja dengan header Range dan partNumber
](range-get-olap.md)

## Bekerja dengan `GetObject` permintaan di Lambda
<a name="olap-getobject-response"></a>

Bagian ini mengasumsikan bahwa Titik Akses Lambda Objek Anda dikonfigurasi untuk memanggil fungsi Lambda `GetObject`. S3 Lambda Objek mencakup operasi API Amazon S3, `WriteGetObjectResponse`, yang mengaktifkan fungsi Lambda untuk memberikan data yang disesuaikan dan respons header untuk pemanggil `GetObject`. 

`WriteGetObjectResponse` memberikan Anda kontrol ekstensif atas kode status, header respons, dan badan respons, berdasarkan kebutuhan pemrosesan Anda. Anda dapat menggunakan `WriteGetObjectResponse` untuk menanggapi dengan seluruh objek yang berubah, bagian dari objek yang berubah, atau tanggapan lain berdasarkan konteks aplikasi Anda. Bagian berikut menampilkan contoh-contoh unik penggunaan operasi API `WriteGetObjectResponse`.
+ **Contoh 1:** Menanggapi dengan kode status HTTP 403 (Forbidden) 
+ **Contoh 2:** Merespons dengan citra yang berubah
+ **Contoh 3:** Melakukan streaming konten terkompresi

**Contoh 1: Menanggapi dengan kode status HTTP 403 (Forbidden) **

Anda dapat menggunakan `WriteGetObjectResponse` untuk menanggapi dengan kode status HTTP 403 (Terlarang) berdasarkan isi dari objek.

------
#### [ Java ]



```
package com.amazon.s3.objectlambda;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.WriteGetObjectResponseRequest;

import java.io.ByteArrayInputStream;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example1 {

    public void handleRequest(S3ObjectLambdaEvent event, Context context) throws Exception {
        S3Client s3Client = S3Client.builder().build();

        // Check to see if the request contains all of the necessary information.
        // If it does not, send a 4XX response and a custom error code and message.
        // Otherwise, retrieve the object from S3 and stream it
        // to the client unchanged.
        var tokenIsNotPresent = !event.getUserRequest().getHeaders().containsKey("requiredToken");
        if (tokenIsNotPresent) {
            s3Client.writeGetObjectResponse(WriteGetObjectResponseRequest.builder()
                    .requestRoute(event.outputRoute())
                    .requestToken(event.outputToken())
                    .statusCode(403)
                    .contentLength(0L)
                    .errorCode("MissingRequiredToken")
                    .errorMessage("The required token was not present in the request.")
                    .build(),
                    RequestBody.fromInputStream(new ByteArrayInputStream(new byte[0]), 0L));
            return;
        }

        // Prepare the presigned URL for use and make the request to S3.
        HttpClient httpClient = HttpClient.newBuilder().build();
        var presignedResponse = httpClient.send(
                HttpRequest.newBuilder(new URI(event.inputS3Url())).GET().build(),
                HttpResponse.BodyHandlers.ofInputStream());

        // Stream the original bytes back to the caller.
        s3Client.writeGetObjectResponse(WriteGetObjectResponseRequest.builder()
                .requestRoute(event.outputRoute())
                .requestToken(event.outputToken())
                .build(),
                RequestBody.fromInputStream(presignedResponse.body(),
                    presignedResponse.headers().firstValueAsLong("content-length").orElse(-1L)));
    }
}
```

------
#### [ Python ]



```
import boto3
import requests 

def handler(event, context):
    s3 = boto3.client('s3')

    """
    Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    should be delivered and contains a presigned URL in 'inputS3Url' where we can download the requested object from.
    The 'userRequest' object has information related to the user who made this 'GetObject' request to 
    S3 Object Lambda.
    """
    get_context = event["getObjectContext"]
    user_request_headers = event["userRequest"]["headers"]

    route = get_context["outputRoute"]
    token = get_context["outputToken"]
    s3_url = get_context["inputS3Url"]

    # Check for the presence of a 'CustomHeader' header and deny or allow based on that header.
    is_token_present = "SuperSecretToken" in user_request_headers

    if is_token_present:
        # If the user presented our custom 'SuperSecretToken' header, we send the requested object back to the user.
        response = requests.get(s3_url)
        s3.write_get_object_response(RequestRoute=route, RequestToken=token, Body=response.content)
    else:
        # If the token is not present, we send an error back to the user. 
        s3.write_get_object_response(RequestRoute=route, RequestToken=token, StatusCode=403,
        ErrorCode="NoSuperSecretTokenFound", ErrorMessage="The request was not secret enough.")

    # Gracefully exit the Lambda function.
    return { 'status_code': 200 }
```

------
#### [ Node.js ]



```
const { S3 } = require('aws-sdk');
const axios = require('axios').default;

exports.handler = async (event) => {
    const s3 = new S3();

    // Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    // should be delivered and contains a presigned URL in 'inputS3Url' where we can download the requested object from.
    // The 'userRequest' object has information related to the user who made this 'GetObject' request to S3 Object Lambda.
    const { userRequest, getObjectContext } = event;
    const { outputRoute, outputToken, inputS3Url } = getObjectContext;

    // Check for the presence of a 'CustomHeader' header and deny or allow based on that header.
    const isTokenPresent = Object
        .keys(userRequest.headers)
        .includes("SuperSecretToken");

    if (!isTokenPresent) {
        // If the token is not present, we send an error back to the user. The 'await' in front of the request
        // indicates that we want to wait for this request to finish sending before moving on. 
        await s3.writeGetObjectResponse({
            RequestRoute: outputRoute,
            RequestToken: outputToken,
            StatusCode: 403,
            ErrorCode: "NoSuperSecretTokenFound",
            ErrorMessage: "The request was not secret enough.",
        }).promise();
    } else {
        // If the user presented our custom 'SuperSecretToken' header, we send the requested object back to the user.
        // Again, note the presence of 'await'.
        const presignedResponse = await axios.get(inputS3Url);
        await s3.writeGetObjectResponse({
            RequestRoute: outputRoute,
            RequestToken: outputToken,
            Body: presignedResponse.data,
        }).promise();
    }

    // Gracefully exit the Lambda function.
    return { statusCode: 200 };
}
```

------

**Contoh 2: Merespons dengan citra yang berubah**

Saat melakukan transformasi citra, Anda mungkin memerlukan semua byte objek sumber sebelum Anda dapat mulai memprosesnya. Dalam kasus ini, permintaan `WriteGetObjectResponse` Anda akan mengembalikan seluruh objek ke aplikasi permintaan dalam satu panggilan.

------
#### [ Java ]



```
package com.amazon.s3.objectlambda;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.WriteGetObjectResponseRequest;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.io.ByteArrayOutputStream;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example2V2 {

    private static final int HEIGHT = 250;
    private static final int WIDTH = 250;

    public void handleRequest(S3ObjectLambdaEvent event, Context context) throws Exception {
        S3Client s3Client = S3Client.builder().build();
        HttpClient httpClient = HttpClient.newBuilder().build();

        // Prepare the presigned URL for use and make the request to S3.
        var presignedResponse = httpClient.send(
                HttpRequest.newBuilder(new URI(event.inputS3Url())).GET().build(),
                HttpResponse.BodyHandlers.ofInputStream());

        // The entire image is loaded into memory here so that we can resize it.
        // Once the resizing is completed, we write the bytes into the body
        // of the WriteGetObjectResponse request.
        var originalImage = ImageIO.read(presignedResponse.body());
        var resizingImage = originalImage.getScaledInstance(WIDTH, HEIGHT, Image.SCALE_DEFAULT);
        var resizedImage = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
        resizedImage.createGraphics().drawImage(resizingImage, 0, 0, WIDTH, HEIGHT, null);

        var baos = new ByteArrayOutputStream();
        ImageIO.write(resizedImage, "png", baos);

        // Stream the bytes back to the caller.
        s3Client.writeGetObjectResponse(WriteGetObjectResponseRequest.builder()
                .requestRoute(event.outputRoute())
                .requestToken(event.outputToken())
                .build(), RequestBody.fromBytes(baos.toByteArray()));
    }
}
```

------
#### [ Python ]



```
import boto3
import requests 
import io
from PIL import Image

def handler(event, context):
    """
    Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    should be delivered and has a presigned URL in 'inputS3Url' where we can download the requested object from.
    The 'userRequest' object has information related to the user who made this 'GetObject' request to 
    S3 Object Lambda.
    """
    get_context = event["getObjectContext"]
    route = get_context["outputRoute"]
    token = get_context["outputToken"]
    s3_url = get_context["inputS3Url"]

    """
    In this case, we're resizing .png images that are stored in S3 and are accessible through the presigned URL
    'inputS3Url'.
    """
    image_request = requests.get(s3_url)
    image = Image.open(io.BytesIO(image_request.content))
    image.thumbnail((256,256), Image.ANTIALIAS)

    transformed = io.BytesIO()
    image.save(transformed, "png")

    # Send the resized image back to the client.
    s3 = boto3.client('s3')
    s3.write_get_object_response(Body=transformed.getvalue(), RequestRoute=route, RequestToken=token)

    # Gracefully exit the Lambda function.
    return { 'status_code': 200 }
```

------
#### [ Node.js ]



```
const { S3 } = require('aws-sdk');
const axios = require('axios').default;
const sharp = require('sharp');

exports.handler = async (event) => {
    const s3 = new S3();

    // Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    // should be delivered and has a presigned URL in 'inputS3Url' where we can download the requested object from.
    const { getObjectContext } = event;
    const { outputRoute, outputToken, inputS3Url } = getObjectContext;

    // In this case, we're resizing .png images that are stored in S3 and are accessible through the presigned URL
    // 'inputS3Url'.
    const { data } = await axios.get(inputS3Url, { responseType: 'arraybuffer' });

    // Resize the image.
    const resized = await sharp(data)
        .resize({ width: 256, height: 256 })
        .toBuffer();

    // Send the resized image back to the client.
    await s3.writeGetObjectResponse({
        RequestRoute: outputRoute,
        RequestToken: outputToken,
        Body: resized,
    }).promise();

    // Gracefully exit the Lambda function.
    return { statusCode: 200 };
}
```

------

**Contoh 3: Melakukan streaming konten terkompresi**

Saat Anda mengompresi objek, data terkompresi dihasilkan secara bertahap. Akibatnya, Anda dapat menggunakan permintaan `WriteGetObjectResponse` Anda untuk mengembalikan data terkompresi segera setelah semuanya siap. Seperti yang ditunjukkan dalam contoh ini, Anda tidak perlu mengetahui panjang transformasi yang telah selesai.

------
#### [ Java ]



```
package com.amazon.s3.objectlambda;

import com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent;
import com.amazonaws.services.lambda.runtime.Context;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.WriteGetObjectResponseRequest;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example3 {

    public void handleRequest(S3ObjectLambdaEvent event, Context context) throws Exception {
        S3Client s3Client = S3Client.builder().build();
        HttpClient httpClient = HttpClient.newBuilder().build();

        // Request the original object from S3.
        var presignedResponse = httpClient.send(
                HttpRequest.newBuilder(new URI(event.inputS3Url())).GET().build(),
                HttpResponse.BodyHandlers.ofInputStream());

        // Consume the incoming response body from the presigned request,
        // apply our transformation on that data, and emit the transformed bytes
        // into the body of the WriteGetObjectResponse request as soon as they're ready.
        // This example compresses the data from S3, but any processing pertinent
        // to your application can be performed here.
        var bodyStream = new GZIPCompressingInputStream(presignedResponse.body());

        // Stream the bytes back to the caller.
        s3Client.writeGetObjectResponse(WriteGetObjectResponseRequest.builder()
                .requestRoute(event.outputRoute())
                .requestToken(event.outputToken())
                .build(),
                RequestBody.fromInputStream(bodyStream,
                    presignedResponse.headers().firstValueAsLong("content-length").orElse(-1L)));
    }
}
```

------
#### [ Python ]



```
import boto3
import requests
import zlib
from botocore.config import Config


"""
A helper class to work with content iterators. Takes an interator and compresses the bytes that come from it. It
implements 'read' and '__iter__' so that the SDK can stream the response. 
"""
class Compress:
    def __init__(self, content_iter):
        self.content = content_iter
        self.compressed_obj = zlib.compressobj()

    def read(self, _size):
        for data in self.__iter__()
            return data

    def __iter__(self):
        while True:
            data = next(self.content)
            chunk = self.compressed_obj.compress(data)
            if not chunk:
                break

            yield chunk

        yield self.compressed_obj.flush()


def handler(event, context):
    """
    Setting the 'payload_signing_enabled' property to False allows us to send a streamed response back to the client.
    in this scenario, a streamed response means that the bytes are not buffered into memory as we're compressing them,
    but instead are sent straight to the user.
    """
    my_config = Config(
        region_name='eu-west-1',
        signature_version='s3v4',
        s3={
            "payload_signing_enabled": False
        }
    )
    s3 = boto3.client('s3', config=my_config)

    """
    Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    should be delivered and has a presigned URL in 'inputS3Url' where we can download the requested object from.
    The 'userRequest' object has information related to the user who made this 'GetObject' request to S3 Object Lambda.
    """
    get_context = event["getObjectContext"]
    route = get_context["outputRoute"]
    token = get_context["outputToken"]
    s3_url = get_context["inputS3Url"]

    # Compress the 'get' request stream.
    with requests.get(s3_url, stream=True) as r:
        compressed = Compress(r.iter_content())

        # Send the stream back to the client.
        s3.write_get_object_response(Body=compressed, RequestRoute=route, RequestToken=token, ContentType="text/plain",
                                     ContentEncoding="gzip")

    # Gracefully exit the Lambda function.
    return {'status_code': 200}
```

------
#### [ Node.js ]



```
const { S3 } = require('aws-sdk');
const axios = require('axios').default;
const zlib = require('zlib');

exports.handler = async (event) => {
    const s3 = new S3();

    // Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    // should be delivered and has a presigned URL in 'inputS3Url' where we can download the requested object from.
    const { getObjectContext } = event;
    const { outputRoute, outputToken, inputS3Url } = getObjectContext;

    // Download the object from S3 and process it as a stream, because it might be a huge object and we don't want to
    // buffer it in memory. Note the use of 'await' because we want to wait for 'writeGetObjectResponse' to finish 
    // before we can exit the Lambda function. 
    await axios({
        method: 'GET',
        url: inputS3Url,
        responseType: 'stream',
    }).then(
        // Gzip the stream.
        response => response.data.pipe(zlib.createGzip())
    ).then(
        // Finally send the gzip-ed stream back to the client.
        stream => s3.writeGetObjectResponse({
            RequestRoute: outputRoute,
            RequestToken: outputToken,
            Body: stream,
            ContentType: "text/plain",
            ContentEncoding: "gzip",
        }).promise()
    );

    // Gracefully exit the Lambda function.
    return { statusCode: 200 };
}
```

------

**catatan**  
Meskipun S3 Lambda Objek mengizinkan hingga 60 detik untuk mengirim respons lengkap kepada pemanggil melalui permintaan `WriteGetObjectResponse`, jumlah aktual waktu yang tersedia mungkin kurang. Misalnya, batas waktu fungsi Lambda Anda kemungkinan kurang dari 60 detik. Dalam kasus lain, pemanggil mungkin memiliki batas waktu yang lebih ketat. 

Agar penelepon asli menerima respons selain kode status HTTP 500 (Internal Server Error), panggilan `WriteGetObjectResponse` harus diselesaikan. Jika fungsi Lambda kembali, dengan pengecualian atau sebaliknya, sebelum operasi API `WriteGetObjectResponse` dipanggil, pemanggil asli menerima respons 500 (Internal Server Error). Pengecualian yang diberikan selama waktu yang diperlukan untuk menyelesaikan respons akan mengakibatkan respons terpotong kepada pemanggil. Jika fungsi Lambda menerima respons kode status HTTP 200 (OK) dari panggilan API `WriteGetObjectResponse`, lalu pemanggil asli telah mengirim permintaan lengkap. Respon fungsi Lambda, terlepas dari pengecualian diberikan atau tidak, diabaikan oleh S3 Lambda Objek.

Saat memanggil operasi API `WriteGetObjectResponse`, Amazon S3 membutuhkan rute dan meminta token dari konteks peristiwa. Untuk informasi selengkapnya, lihat [Format konteks peristiwa dan penggunaan](olap-event-context.md).

Parameter rute dan token permintaan diperlukan untuk menghubungkan respons `WriteGetObjectResult` dengan pemanggil asli. Meskipun selalu tepat untuk mencoba kembali respons 500 (Internal Server Error), karena token permintaan adalah token sekali pakai, upaya selanjutnya untuk menggunakannya mungkin menghasilkan respons kode status HTTP 400 (Bad Request). Meskipun panggilan ke `WriteGetObjectResponse` dengan rute dan permintaan token tidak perlu dibuat dari fungsi Lambda yang dipanggil, itu harus dibuat oleh identitas di akun yang sama. Panggilan itu juga harus diselesaikan sebelum fungsi Lambda selesai dieksekusi.

## Bekerja dengan permintaan `HeadObject` di Lambda
<a name="olap-headobject"></a>

Bagian ini mengasumsikan bahwa Titik Akses Lambda Objek Anda telah dikonfigurasi untuk memanggil fungsi Lambda `HeadObject`. Lambda akan menerima payload JSON yang berisi kunci bernama `headObjectContext`. Di dalam konteks, ada properti tunggal yang disebut `inputS3Url`, yang merupakan URL yang telah ditandatangani sebelumnya untuk titik akses pendukung untuk `HeadObject`.

URL yang telah ditandatangani sebelumnya akan menyertakan properti berikut jika ditentukan: 
+ `versionId` (di dalam parameter kueri)
+ `requestPayer` (di dalam header `x-amz-request-payer`)
+ `expectedBucketOwner` (di dalam header `x-amz-expected-bucket-owner`)

Properti lain tidak akan ditandatangani sebelumnya, dan karenanya tidak akan disertakan. Opsi yang tidak ditandatangani yang dikirim sebagai header dapat ditambahkan secara manual ke permintaan saat memanggil URL yang ditandatangani sebelumnya yang ditemukan di header `userRequest`. Opsi enkripsi di sisi server tidak didukung untuk `HeadObject`.

Untuk parameter URI sintaks permintaan, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) di *Referensi API Amazon Simple Storage Service*.

Contoh berikut ini menunjukkan muatan input Lambda JSON untuk `HeadObject`.

```
{
  "xAmzRequestId": "requestId",
  "**headObjectContext**": {
    "**inputS3Url**": "https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/example?X-Amz-Security-Token=<snip>"
  },
  "configuration": {
       "accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap",
       "supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
       "payload": "{}"
  },
  "userRequest": {
       "url": "https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example",
       "headers": {
           "Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
           "Accept-Encoding": "identity",
           "X-Amz-Content-SHA256": "e3b0c44298fc1example"
       }
   },
   "userIdentity": {
       "type": "AssumedRole",
       "principalId": "principalId",
       "arn": "arn:aws:sts::111122223333:assumed-role/Admin/example",       
       "accountId": "111122223333",
       "accessKeyId": "accessKeyId",
       "sessionContext": {
            "attributes": {
            "mfaAuthenticated": "false",
            "creationDate": "Wed Mar 10 23:41:52 UTC 2021"
       },
       "sessionIssuer": {
            "type": "Role",
            "principalId": "principalId",
            "arn": "arn:aws:iam::111122223333:role/Admin",
            "accountId": "111122223333",
            "userName": "Admin"
            }
       }
    },
  "protocolVersion": "1.00"
}
```

Fungsi Lambda Anda harus mengembalikan objek JSON yang berisi header dan nilai yang akan dikembalikan untuk panggilan `HeadObject`.

Contoh berikut ini menunjukkan struktur respons Lambda JSON untuk `HeadObject`.

```
{
    "statusCode": <number>; // Required
    "errorCode": <string>;
    "errorMessage": <string>;
    "headers": {
        "Accept-Ranges": <string>,
        "x-amz-archive-status": <string>,
        "x-amz-server-side-encryption-bucket-key-enabled": <boolean>,
        "Cache-Control": <string>,
        "Content-Disposition": <string>,
        "Content-Encoding": <string>,
        "Content-Language": <string>,
        "Content-Length": <number>, // Required
        "Content-Type": <string>,
        "x-amz-delete-marker": <boolean>,
        "ETag": <string>,
        "Expires": <string>,
        "x-amz-expiration": <string>,
        "Last-Modified": <string>,
        "x-amz-missing-meta": <number>,
        "x-amz-object-lock-mode": <string>,
        "x-amz-object-lock-legal-hold": <string>,
        "x-amz-object-lock-retain-until-date": <string>,
        "x-amz-mp-parts-count": <number>,
        "x-amz-replication-status": <string>,
        "x-amz-request-charged": <string>,
        "x-amz-restore": <string>,
        "x-amz-server-side-encryption": <string>,
        "x-amz-server-side-encryption-customer-algorithm": <string>,
        "x-amz-server-side-encryption-aws-kms-key-id": <string>,
        "x-amz-server-side-encryption-customer-key-MD5": <string>,
        "x-amz-storage-class": <string>,
        "x-amz-tagging-count": <number>,
        "x-amz-version-id": <string>,
        <x-amz-meta-headers>: <string>, // user-defined metadata 
        "x-amz-meta-meta1": <string>, // example of the user-defined metadata header, it will need the x-amz-meta prefix
        "x-amz-meta-meta2": <string>
        ...
    };
}
```

Contoh berikut menunjukkan cara untuk menggunakan URL yang telah ditentukan sebelumnya untuk mengisi respons Anda dengan mengubah nilai header sesuai kebutuhan sebelum mengembalikan JSON.

------
#### [ Python ]



```
import requests

def lambda_handler(event, context):
    print(event)
    
    # Extract the presigned URL from the input.
    s3_url = event["headObjectContext"]["inputS3Url"]

    # Get the head of the object from S3.     
    response = requests.head(s3_url)
    
    # Return the error to S3 Object Lambda (if applicable).           
    if (response.status_code >= 400):
        return {
            "statusCode": response.status_code,
            "errorCode": "RequestFailure",                         
            "errorMessage": "Request to S3 failed"    
    }
    
    # Store the headers in a dictionary.
    response_headers = dict(response.headers)

    # This obscures Content-Type in a transformation, it is optional to add
    response_headers["Content-Type"] = "" 

    # Return the headers to S3 Object Lambda.     
    return {
        "statusCode": response.status_code,
        "headers": response_headers     
        }
```

------

## Bekerja dengan permintaan `ListObjects` di Lambda
<a name="olap-listobjects"></a>

Bagian ini mengasumsikan bahwa Titik Akses Lambda Objek Anda telah dikonfigurasi untuk memanggil fungsi Lambda `ListObjects`. Lambda akan menerima payload JSON dengan objek baru bernama `listObjectsContext`. `listObjectsContext`berisi properti tunggal, `inputS3Url`, yang merupakan URL yang telah ditandatangani sebelumnya untuk titik akses pendukung untuk `ListObjects`.

Berbeda dengan `GetObject` dan `HeadObject`, URL yang telah ditandatangani sebelumnya akan menyertakan properti berikut jika ditentukan:
+ Semua parameter kueri
+ `requestPayer` (di dalam header `x-amz-request-payer`) 
+ `expectedBucketOwner` (di dalam header `x-amz-expected-bucket-owner`)

Untuk parameter URI sintaks permintaan, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html) di *Referensi API Amazon Simple Storage Service*.

**penting**  
Kami menyarankan Anda menggunakan versi yang lebih baru, [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), saat mengembangkan aplikasi. Untuk kompatibilitas mundur, Amazon S3 terus mendukung `ListObjects`.

Contoh berikut ini menunjukkan muatan input Lambda JSON untuk `ListObjects`.

```
{
    "xAmzRequestId": "requestId",
     "**listObjectsContext**": {
     "**inputS3Url**": "https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/?X-Amz-Security-Token=<snip>",
     },
    "configuration": {
        "accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap",
        "supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
        "payload": "{}"
    },
    "userRequest": {
        "url": "https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example",
        "headers": {
            "Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
            "Accept-Encoding": "identity",
            "X-Amz-Content-SHA256": "e3b0c44298fc1example"
        }
    },
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "principalId",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/example",
        "accountId": "111122223333",
        "accessKeyId": "accessKeyId",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "Wed Mar 10 23:41:52 UTC 2021"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "principalId",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            }
        }
    },
  "protocolVersion": "1.00"
}
```

Fungsi Lambda Anda harus mengembalikan objek JSON yang berisi kode status, daftar hasil XML, atau informasi kesalahan yang akan dikembalikan dari S3 Lambda Objek.

S3 Lambda Objek tidak memproses atau memvalidasi `listResultXml`, melainkan meneruskannya ke pemanggil `ListObjects`. Untuk `listBucketResult`, S3 Lambda Objek mengharapkan properti tertentu memiliki jenis tertentu dan akan memunculkan pengecualian jika tidak dapat menguraikannya. `listResultXml` dan `listBucketResult` tidak dapat diberikan secara bersamaan.

Contoh berikut menunjukkan cara menggunakan URL yang telah ditandatangani untuk memanggil Amazon S3, dan menggunakan hasilnya untuk mengisi respons, termasuk pemeriksaan kesalahan.

------
#### [ Python ]

```
import requests 
import xmltodict

def lambda_handler(event, context):
    # Extract the presigned URL from the input.
    s3_url = event["listObjectsContext"]["inputS3Url"]


    # Get the head of the object from Amazon S3.
    response = requests.get(s3_url)

    # Return the error to S3 Object Lambda (if applicable).
    if (response.status_code >= 400):
        error = xmltodict.parse(response.content)
        return {
            "statusCode": response.status_code,
            "errorCode": error["Error"]["Code"],
            "errorMessage": error["Error"]["Message"]
        }

    # Store the XML result in a dict.
    response_dict = xmltodict.parse(response.content)

    # This obscures StorageClass in a transformation, it is optional to add
    for item in response_dict['ListBucketResult']['Contents']:
        item['StorageClass'] = ""

    # Convert back to XML.
    listResultXml = xmltodict.unparse(response_dict)
    
    # Create response with listResultXml.
    response_with_list_result_xml = {
        'statusCode': 200,
        'listResultXml': listResultXml
    }

    # Create response with listBucketResult.
    response_dict['ListBucketResult'] = sanitize_response_dict(response_dict['ListBucketResult'])
    response_with_list_bucket_result = {
        'statusCode': 200,
        'listBucketResult': response_dict['ListBucketResult']
    }

    # Return the list to S3 Object Lambda.
    # Can return response_with_list_result_xml or response_with_list_bucket_result
    return response_with_list_result_xml

# Converting the response_dict's key to correct casing
def sanitize_response_dict(response_dict: dict):
    new_response_dict = dict()
    for key, value in response_dict.items():
        new_key = key[0].lower() + key[1:] if key != "ID" else 'id'
        if type(value) == list:
            newlist = []
            for element in value:
                if type(element) == type(dict()):
                    element = sanitize_response_dict(element)
                newlist.append(element)
            value = newlist
        elif type(value) == dict:
            value = sanitize_response_dict(value)
        new_response_dict[new_key] = value
    return new_response_dict
```

------

Contoh berikut ini menunjukkan struktur respons Lambda JSON untuk `ListObjects`.

```
{ 
  "statusCode": <number>; // Required
  "errorCode": <string>;
  "errorMessage": <string>;
  "listResultXml": <string>; // This can also be Error XML string in case S3 returned error response when calling the pre-signed URL

  "listBucketResult": {  // listBucketResult can be provided instead of listResultXml, however they can not both be provided in the JSON response  
        "name": <string>,  // Required for 'listBucketResult'
        "prefix": <string>,  
        "marker": <string>, 
        "nextMarker": <string>, 
        "maxKeys": <int>,   // Required for 'listBucketResult'
        "delimiter": <string>, 
        "encodingType": <string>  
        "isTruncated": <boolean>,  // Required for 'listBucketResult'
        "contents": [  { 
            "key": <string>,  // Required for 'content'
            "lastModified": <string>,  
            "eTag": <string>,  
            "checksumAlgorithm": <string>,   // CRC32,  CRC32C,  SHA1,  SHA256
            "size": <int>,   // Required for 'content'
            "owner": {  
                "displayName": <string>,  // Required for 'owner'
                "id": <string>,  // Required for 'owner'
            },  
            "storageClass": <string>  
            },  
        ...  
        ],  
        "commonPrefixes": [  {  
            "prefix": <string>   // Required for 'commonPrefix'
        },  
        ...  
        ],  
    }
}
```

## Bekerja dengan permintaan `ListObjectsV2` di Lambda
<a name="olap-listobjectsv2"></a>

Bagian ini mengasumsikan bahwa Titik Akses Lambda Objek Anda telah dikonfigurasi untuk memanggil fungsi Lambda `ListObjectsV2`. Lambda akan menerima payload JSON dengan objek baru bernama `listObjectsV2Context`. `listObjectsV2Context`berisi properti tunggal, `inputS3Url`, yang merupakan URL yang telah ditandatangani sebelumnya untuk titik akses pendukung untuk `ListObjectsV2`.

Berbeda dengan `GetObject` dan `HeadObject`, URL yang telah ditandatangani sebelumnya akan menyertakan properti berikut jika ditentukan: 
+ Semua parameter kueri
+ `requestPayer` (di dalam header `x-amz-request-payer`) 
+ `expectedBucketOwner` (di dalam header `x-amz-expected-bucket-owner`)

Untuk parameter URI sintaks permintaan, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) di *Referensi API Amazon Simple Storage Service*.

Contoh berikut ini menunjukkan muatan input Lambda JSON untuk `ListObjectsV2`.

```
{
    "xAmzRequestId": "requestId",
     "**listObjectsV2Context**": {
     "**inputS3Url**": "https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/?list-type=2&X-Amz-Security-Token=<snip>",
     },
    "configuration": {
        "accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap",
        "supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
        "payload": "{}"
    },
    "userRequest": {
        "url": "https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example",
        "headers": {
            "Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
            "Accept-Encoding": "identity",
            "X-Amz-Content-SHA256": "e3b0c44298fc1example"
        }
    },
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "principalId",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/example",
        "accountId": "111122223333",
        "accessKeyId": "accessKeyId",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "Wed Mar 10 23:41:52 UTC 2021"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "principalId",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            }
        }
    },
  "protocolVersion": "1.00" 
}
```

Fungsi Lambda Anda harus mengembalikan objek JSON yang berisi kode status, daftar hasil XML, atau informasi kesalahan yang akan dikembalikan dari S3 Lambda Objek.

S3 Lambda Objek tidak memproses atau memvalidasi `listResultXml`, melainkan meneruskannya ke pemanggil `ListObjectsV2`. Untuk `listBucketResult`, S3 Lambda Objek mengharapkan properti tertentu memiliki jenis tertentu dan akan memunculkan pengecualian jika tidak dapat menguraikannya. `listResultXml` dan `listBucketResult` tidak dapat diberikan secara bersamaan.

Contoh berikut menunjukkan cara menggunakan URL yang telah ditandatangani untuk memanggil Amazon S3, dan menggunakan hasilnya untuk mengisi respons, termasuk pemeriksaan kesalahan.

------
#### [ Python ]

```
import requests 
import xmltodict

def lambda_handler(event, context):
    # Extract the presigned URL from the input.
    s3_url = event["listObjectsV2Context"]["inputS3Url"]


    # Get the head of the object from Amazon S3.
    response = requests.get(s3_url)

    # Return the error to S3 Object Lambda (if applicable).
    if (response.status_code >= 400):
        error = xmltodict.parse(response.content)
        return {
            "statusCode": response.status_code,
            "errorCode": error["Error"]["Code"],
            "errorMessage": error["Error"]["Message"]
        }

    # Store the XML result in a dict.
    response_dict = xmltodict.parse(response.content)

    # This obscures StorageClass in a transformation, it is optional to add
    for item in response_dict['ListBucketResult']['Contents']:
        item['StorageClass'] = ""

    # Convert back to XML.
    listResultXml = xmltodict.unparse(response_dict)
    
    # Create response with listResultXml.
    response_with_list_result_xml = {
        'statusCode': 200,
        'listResultXml': listResultXml
    }

    # Create response with listBucketResult.
    response_dict['ListBucketResult'] = sanitize_response_dict(response_dict['ListBucketResult'])
    response_with_list_bucket_result = {
        'statusCode': 200,
        'listBucketResult': response_dict['ListBucketResult']
    }

    # Return the list to S3 Object Lambda.
    # Can return response_with_list_result_xml or response_with_list_bucket_result
    return response_with_list_result_xml

# Converting the response_dict's key to correct casing
def sanitize_response_dict(response_dict: dict):
    new_response_dict = dict()
    for key, value in response_dict.items():
        new_key = key[0].lower() + key[1:] if key != "ID" else 'id'
        if type(value) == list:
            newlist = []
            for element in value:
                if type(element) == type(dict()):
                    element = sanitize_response_dict(element)
                newlist.append(element)
            value = newlist
        elif type(value) == dict:
            value = sanitize_response_dict(value)
        new_response_dict[new_key] = value
    return new_response_dict
```

------

Contoh berikut ini menunjukkan struktur respons Lambda JSON untuk `ListObjectsV2`.

```
{  
    "statusCode": <number>; // Required  
    "errorCode": <string>;  
    "errorMessage": <string>;  
    "listResultXml": <string>; // This can also be Error XML string in case S3 returned error response when calling the pre-signed URL  
  
    "listBucketResult": {  // listBucketResult can be provided instead of listResultXml, however they can not both be provided in the JSON response 
        "name": <string>, // Required for 'listBucketResult'  
        "prefix": <string>,  
        "startAfter": <string>,  
        "continuationToken": <string>,  
        "nextContinuationToken": <string>,
        "keyCount": <int>, // Required for 'listBucketResult'  
        "maxKeys": <int>, // Required for 'listBucketResult'  
        "delimiter": <string>,  
        "encodingType": <string>  
        "isTruncated": <boolean>, // Required for 'listBucketResult'  
        "contents": [ {  
            "key": <string>, // Required for 'content'  
            "lastModified": <string>,  
            "eTag": <string>,  
            "checksumAlgorithm": <string>, // CRC32, CRC32C, SHA1, SHA256  
            "size": <int>, // Required for 'content'  
            "owner": {  
                "displayName": <string>, // Required for 'owner'  
                "id": <string>, // Required for 'owner'  
            },  
            "storageClass": <string>  
            },  
            ...  
        ],  
        "commonPrefixes": [ {  
            "prefix": <string> // Required for 'commonPrefix'  
            },  
        ...  
        ],  
    }  
}
```

# Format konteks peristiwa dan penggunaan
<a name="olap-event-context"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Amazon S3 Object Lambda menyediakan konteks tentang permintaan yang sedang dibuat jika diteruskan ke fungsi Anda. AWS Lambda Berikut adalah contoh permintaannya. Deskripsi bidang disertakan setelah contoh.

```
{
    "xAmzRequestId": "requestId",
    "getObjectContext": {
        "inputS3Url": "https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/example?X-Amz-Security-Token=<snip>",
        "outputRoute": "io-use1-001",
        "outputToken": "OutputToken"
    },
    "configuration": {
        "accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap",
        "supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
        "payload": "{}"
    },
    "userRequest": {
        "url": "https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example",
        "headers": {
            "Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
            "Accept-Encoding": "identity",
            "X-Amz-Content-SHA256": "e3b0c44298fc1example"
        }
    },
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "principalId",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/example",
        "accountId": "111122223333",
        "accessKeyId": "accessKeyId",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "Wed Mar 10 23:41:52 UTC 2021"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "principalId",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            }
        }
    },
    "protocolVersion": "1.00"
}
```

Kolom permintaan disertakan dalam permintaan berikut:
+ `xAmzRequestId`–ID permintaan Amazon S3 untuk permintaan ini. Kami merekomendasikan agar Anda mencatat nilai ini untuk membantu dengan debugging.
+ `getObjectContext`–Detail input dan output untuk koneksi ke Amazon S3 dan S3 Lambda Objek.
  + `inputS3Url`–URL yang telah ditandatangani sebelumnya, yang dapat digunakan untuk mengambil objek asli dari Amazon S3. URL ditandatangani dengan menggunakan identitas pemanggil asli, dan izin pengguna tersebut akan berlaku saat URL tersebut digunakan. Jika ada header ditandatangani di URL, fungsi Lambda harus menyertakan header ini dalam panggilan ke Amazon S3, kecuali untuk header `Host`.
  + `outputRoute`–Token perutean yang ditambahkan ke URL S3 Lambda Objek ketika fungsi Lambda memanggil `WriteGetObjectResponse`.
  + `outputToken`–Token buram yang digunakan oleh S3 Lambda Objek untuk mencocokkan panggilan `WriteGetObjectResponse` dengan pemanggil asli.
+ `configuration`–Informasi konfigurasi tentang Titik Akses Lambda Objek.
  + `accessPointArn`–Amazon Resource Name (ARN) dari Titik Akses Lambda Objek yang menerima permintaan ini.
  + `supportingAccessPointArn`–ARN dari titik akses pendukung yang ditentukan dalam konfigurasi Titik Akses Lambda Objek.
  + `payload`–Data kustom yang diterapkan pada konfigurasi Titik Akses Lambda Objek. S3 Lambda Objek memperlakukan data ini sebagai string buram, sehingga mungkin perlu diterjemahkan sebelum digunakan.
+ `userRequest`–Informasi tentang panggilan asli untuk S3 Lambda Objek.
  + `url`–URL permintaan yang didekodekan seperti yang diterima oleh S3 Lambda Objek, tidak termasuk parameter kueri terkait otorisasi.
  + `headers`–Peta string ke string yang berisi header HTTP serta nilai dari panggilan aslinya, tidak termasuk header terkait otorisasi. Jika header yang sama muncul beberapa kali, nilai dari setiap instans header yang sama digabungkan ke dalam daftar yang dibatasi koma. Kasus header asli dipertahankan dalam peta ini.
+ `userIdentity`–Detail tentang identitas yang melakukan panggilan ke S3 Lambda Objek. Untuk informasi lebih lanjut, lihat [Peristiwa Pencatatan Data untuk Pelacakan](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) dalam *AWS CloudTrail Panduan Pengguna*.
  + `type`–Jenis identitas.
  + `accountId`— Akun AWS yang menjadi milik identitas.
  + `userName`–Nama ramah dari identitas yang melakukan panggilan.
  + `principalId`–Pengidentifikasi unik untuk identitas yang melakukan panggilan.
  + `arn`–ARN pengguna utama yang melakukan panggilan. Bagian terakhir ARN berisi pengguna atau peran yang melakukan panggilan.
  + `sessionContext`–Jika permintaan dibuat dengan kredensial keamanan sementara, elemen ini memberikan informasi tentang sesi yang dibuat untuk kredensial tersebut.
  + `invokedBy`— Nama Layanan AWS yang membuat permintaan, seperti Amazon EC2 Auto AWS Elastic Beanstalk Scaling atau.
  + `sessionIssuer`–Jika permintaan dibuat dengan kredensial keamanan sementara, elemen ini memberikan informasi tentang bagaimana kredensial tersebut diperoleh.
+ `protocolVersion`–ID Versi dari konteks yang disediakan. Format bidang ini adalah `{Major Version}.{Minor Version}`. Nomor versi minor selalu berupa angka dua digit. Penghapusan atau perubahan apa pun pada semantik suatu bidang memerlukan perubahan versi utama dan memerlukan keikutsertaan aktif. Amazon S3 dapat menambahkan kolom baru kapan saja, sehingga Anda mungkin mengalami peningkatan versi kecil. Karena sifat peluncuran perangkat lunak, Anda mungkin melihat beberapa versi minor digunakan sekaligus.

# Bekerja dengan header Range dan partNumber
<a name="range-get-olap"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Saat bekerja dengan objek besar di Lambda Objek Amazon S3, Anda dapat menggunakan header HTTP `Range` untuk mengunduh rentang byte tertentu dari sebuah objek. Untuk mengambil rentang byte berbeda dari dalam objek yang sama, Anda dapat menggunakan koneksi bersamaan ke Amazon S3. Anda juga dapat menentukan parameter `partNumber` (integer antara 1 dan 10.000), yang melakukan permintaan berkisar untuk bagian objek tertentu.

Karena ada beberapa cara yang mungkin Anda inginkan untuk menangani permintaan yang menyertakan parameter `Range` atau `partNumber`, S3 Lambda Objek tidak menerapkan parameter ini ke objek yang ditransformasi. Sebagai gantinya, AWS Lambda fungsi Anda harus mengimplementasikan fungsi ini sesuai kebutuhan untuk aplikasi Anda.

Untuk menggunakan parameter `Range` dan `partNumber` dengan S3 Lambda Objek, Anda melakukan hal berikut ini: 
+ Aktifkan parameter ini di konfigurasi Titik Akses Lambda Objek.
+ Tulis fungsi Lambda yang dapat menangani permintaan yang menyertakan parameter ini.

Langkah-langkah berikut menjelaskan cara untuk mencapai hal ini.

## Langkah 1: Mengonfigurasi Titik Akses Lambda Objek Anda
<a name="range-get-olap-step-1"></a>

Secara default, Titik Akses Objek Lambda merespons dengan kesalahan kode status HTTP 501 (Tidak Diimplementasikan) terhadap permintaan `GetObject` atau `HeadObject` yang berisi parameter `Range` atau `partNumber`, baik di header atau parameter kueri. 

Untuk mengaktifkan Titik Akses Lambda Objek untuk menerima permintaan tersebut, Anda harus menyertakan `GetObject-Range`, `GetObject-PartNumber`, `HeadObject-Range`, atau `HeadObject-PartNumber` dalam bagian `AllowedFeatures` konfigurasi Titik Akses Lambda Objek Anda. Untuk informasi selengkapnya tentang memperbarui konfigurasi Titik Akses Lambda Objek, lihat [Membuat Titik Akses Objek Lambda](olap-create.md). 

## Langkah 2: Menerapkan penanganan `Range` atau `partNumber` di dalam fungsi Lambda Anda
<a name="range-get-olap-step-2"></a>

Saat Titik Akses Lambda Object Anda menginvokasi fungsi Lambda Anda dengan rentang permintaan `GetObject` atau `HeadObject`, parameter `Range` atau `partNumber` disertakan dalam konteks peristiwa. Lokasi parameter dalam konteks peristiwa tergantung pada parameter mana yang digunakan dan bagaimana itu dimasukkan dalam permintaan asli ke Titik Akses Lambda Object, seperti yang dijelaskan dalam tabel berikut. 


| Parameter | Lokasi konteks peristiwa | 
| --- | --- | 
|  `Range` (header)  |  `userRequest.headers.Range`  | 
|  `Range` (parameter kueri)  |  `userRequest.url` (parameter kueri `Range`)  | 
|  `partNumber`  |  `userRequest.url` (parameter kueri `partNumber`)  | 

**penting**  
URL presigned yang disediakan untuk Titik Akses Lambda Objek Anda tidak berisi parameter `Range` atau `partNumber` dari permintaan asli. Lihat opsi berikut tentang cara menangani parameter ini dalam AWS Lambda fungsi Anda.

Setelah Anda mengekstrak nilai `Range` atau `partNumber`, Anda dapat mengambil salah satu pendekatan berikut ini, berdasarkan kebutuhan aplikasi Anda:

1. **Petakan `Range` yang diminta atau `partNumber` ke objek yang diubah (disarankan).** 

   Cara yang paling dapat diandalkan untuk menangani permintaan `Range` atau `partNumber` adalah dengan melakukan hal berikut ini: 
   + Mengambil objek lengkap dari Amazon S3.
   + Mengubah objek tersebut.
   + Terapkan parameter `Range` atau `partNumber` yang diminta ke objek yang diubah.

   Untuk melakukan ini, gunakan URL yang telah ditandatangani sebelumnya untuk mengambil seluruh objek dari Amazon S3, dan kemudian memproses objek tersebut sesuai kebutuhan. Untuk contoh fungsi Lambda yang memproses `Range` parameter dengan cara ini, lihat [sampel ini](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration/blob/main/function/nodejs_20_x/src/response/range_mapper.ts) di repositori AWS Sampel GitHub .

1. **Petakan `Range` yang diminta ke URL yang telah ditandatangani sebelumnya.**

   Dalam beberapa kasus, fungsi Lambda Anda dapat memetakan permintaan `Range` langsung ke URL yang telah ditentukan sebelumnya untuk mengambil hanya sebagian objek dari Amazon S3. Pendekatan ini hanya sesuai jika transformasi Anda memenuhi kedua kriteria berikut:

   1. Fungsi transformasi Anda dapat diterapkan ke sebagian rentang objek.

   1. Menerapkan parameter `Range` sebelum atau sesudah fungsi transformasi menghasilkan objek yang ditransformasikan yang sama.

   Misalnya, fungsi transformasi yang mengubah semua karakter dalam objek berkode ASCII menjadi huruf besar memenuhi kedua kriteria sebelumnya. Transformasi dapat diterapkan pada bagian dari suatu objek, dan menerapkan parameter `Range` sebelum transformasi mencapai hasil yang sama seperti menerapkannya setelah transformasi.

   Sebaliknya, fungsi yang membalikkan karakter dalam objek yang dikodekan ASCII tidak memenuhi kriteria ini. Fungsi seperti itu memenuhi kriteria 1, karena dapat diterapkan pada rentang objek sebagian. Namun, itu tidak memenuhi kriteria 2, karena menerapkan parameter `Range` sebelum transformasi mencapai hasil yang berbeda daripada menerapkan parameter setelah transformasi. 

   Pertimbangkan permintaan untuk menerapkan fungsi ke tiga karakter pertama dari suatu objek dengan isinya `abcdefg`. Menerapkan parameter `Range` sebelum transformasi hanya mengambil `abc` dan kemudian membalikkan data, mengembalikan `cba`. Tetapi jika parameter diterapkan setelah transformasi, fungsi mengambil seluruh objek, membalikkannya, lalu menerapkan parameter `Range`, mengembalikan `gfe`. Karena hasil ini berbeda, fungsi ini tidak boleh menerapkan parameter `Range` saat mengambil objek dari Amazon S3. Sebaliknya, itu harus mengambil seluruh objek, melakukan transformasi, dan hanya kemudian menerapkan parameter `Range`. 
**Awas**  
Dalam banyak kasus, menerapkan parameter `Range` ke URL yang telah ditandatangani sebelumnya akan menghasilkan perilaku tak terduga oleh fungsi Lambda atau klien yang meminta. Kecuali Anda yakin bahwa aplikasi Anda akan berfungsi dengan baik ketika hanya mengambil sebagian objek dari Amazon S3, kami menyarankan Anda mengambil dan mengubah objek penuh seperti yang dijelaskan sebelumnya dalam pendekatan A. 

   Jika aplikasi Anda memenuhi kriteria yang dijelaskan sebelumnya dalam pendekatan B, Anda dapat menyederhanakan AWS Lambda fungsi Anda dengan mengambil hanya rentang objek yang diminta dan kemudian menjalankan transformasi Anda pada rentang tersebut. 

   Contoh kode Java berikut mendemonstrasikan cara untuk melakukan hal berikut ini: 
   + Ambil header `Range` dari permintaan `GetObject`.
   + Tambahkan header `Range` ke URL yang telah ditandatangani sebelumnya, yang dapat digunakan oleh Lambda untuk mengambil rentang yang diminta dari Amazon S3.

   ```
   private HttpRequest.Builder applyRangeHeader(ObjectLambdaEvent event, HttpRequest.Builder presignedRequest) {
       var header = event.getUserRequest().getHeaders().entrySet().stream()
               .filter(e -> e.getKey().toLowerCase(Locale.ROOT).equals("range"))
               .findFirst();
   
       // Add check in the query string itself.
       header.ifPresent(entry -> presignedRequest.header(entry.getKey(), entry.getValue()));
       return presignedRequest;
   }
   ```

# Menggunakan fungsi Lambda yang AWS dibangun
<a name="olap-examples"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

AWS menyediakan beberapa AWS Lambda fungsi bawaan yang dapat Anda gunakan dengan Amazon S3 Object Lambda untuk mendeteksi dan menyunting informasi identitas pribadi (PII) dan mendekompresi objek S3. Fungsi Lambda ini tersedia di AWS Serverless Application Repository. Anda dapat memilih fungsi-fungsi ini melalui Konsol Manajemen AWS ketika Anda membuat Titik Akses Lambda Objek Anda. 

*Untuk informasi selengkapnya tentang cara menerapkan aplikasi tanpa server dari AWS Serverless Application Repository, lihat [Menerapkan Aplikasi](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-consuming-applications.html) di Panduan Pengembang.AWS Serverless Application Repository *

**catatan**  
Contoh berikut hanya dapat digunakan dengan permintaan `GetObject`.

## Contoh 1: Kontrol akses PII
<a name="olap-examples-1"></a>

Fungsi Lambda ini menggunakan Amazon Comprehend, layanan pemrosesan bahasa alami (NLP) yang menggunakan machine learning untuk menemukan wawasan dan hubungan dalam teks. Fungsi ini secara otomatis mendeteksi informasi pengenal pribadi (PII), seperti nama, alamat, tanggal, nomor kartu kredit, dan nomor jaminan sosial dalam dokumen di bucket Amazon S3 Anda. Jika Anda memiliki dokumen di bucket Anda yang menyertakan PII, Anda dapat mengonfigurasi fungsi Kontrol Akses PII untuk mendeteksi jenis entitas PII ini dan membatasi akses ke pengguna yang tidak sah.

Untuk memulai, terapkan fungsi Lambda berikut di akun Anda dan tambahkan Amazon Resource Name (ARN) untuk fungsi tersebut ke konfigurasi Titik Akses Lambda Objek Anda.

Berikut adalah contoh ARN untuk fungsi ini:

```
arn:aws:serverlessrepo:us-east-1:111122223333:applications/ComprehendPiiAccessControlS3ObjectLambda
```

Anda dapat menambahkan atau melihat fungsi ini pada Konsol Manajemen AWS dengan menggunakan AWS Serverless Application Repository link berikut: [ComprehendPiiAccessControlS3 ObjectLambda](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiAccessControlS3ObjectLambda).

Untuk melihat fungsi ini aktif GitHub, lihat [Amazon Comprehend S3 Object Lambda](https://github.com/aws-samples/amazon-comprehend-s3-object-lambdas).

## Contoh 2: Penyamaran PII
<a name="olap-examples-2"></a>

Fungsi Lambda ini menggunakan Amazon Comprehend, layanan pemrosesan bahasa alami (NLP) yang menggunakan machine learning untuk menemukan wawasan dan hubungan dalam teks. Fungsi ini secara otomatis menyunting informasi pengenal pribadi (PII), seperti nama, alamat, tanggal, nomor kartu kredit, dan nomor jaminan sosial dari dokumen di bucket Amazon S3 Anda. 

Jika Anda memiliki dokumen di bucket Anda yang menyertakan informasi seperti nomor kartu kredit atau informasi rekening bank, Anda dapat mengonfigurasi fungsi Lambda PII Redaction S3 Object untuk mendeteksi PII dan kemudian mengembalikan salinan dokumen ini di mana jenis entitas PII disunting.

Untuk memulai, deploy fungsi Lambda berikut ini di akun Anda, dan tambahkan ARN untuk fungsi tersebut ke konfigurasi Titik Akses Lambda Objek Anda.

Berikut adalah contoh ARN untuk fungsi ini:

```
arn:aws:serverlessrepo:us-east-1:111122223333::applications/ComprehendPiiRedactionS3ObjectLambda
```

Anda dapat menambahkan atau melihat fungsi ini pada Konsol Manajemen AWS dengan menggunakan AWS Serverless Application Repository link berikut: [ComprehendPiiRedactionS3 ObjectLambda](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiRedactionS3ObjectLambda).

Untuk melihat fungsi ini aktif GitHub, lihat [Amazon Comprehend S3 Object Lambda](https://github.com/aws-samples/amazon-comprehend-s3-object-lambdas).

Untuk mempelajari tentang end-to-end prosedur lengkap untuk beberapa tugas Lambda Objek S3 dalam redaksi PII, lihat. [Tutorial: Mendeteksi dan menyunting data PII dengan Objek S3 Lambda dan Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)

## Contoh 3: Dekompresi
<a name="olap-examples-3"></a>

Fungsi Lambda `S3ObjectLambdaDecompression` dapat mendekompresi objek yang disimpan di Amazon S3 dalam salah satu dari enam format file terkompresi: `bzip2`, `gzip`, `snappy`, `zlib`, `zstandard`, dan `ZIP`. 

Untuk memulai, deploy fungsi Lambda berikut ini di akun Anda, dan tambahkan ARN untuk fungsi tersebut ke konfigurasi Titik Akses Lambda Objek Anda.

Berikut adalah contoh ARN untuk fungsi ini:

```
arn:aws:serverlessrepo:us-east-1:111122223333::applications/S3ObjectLambdaDecompression
```

Anda dapat menambahkan atau melihat fungsi ini pada Konsol Manajemen AWS dengan menggunakan AWS Serverless Application Repository link berikut: [S3 ObjectLambdaDecompression](https://eu-west-1.console.aws.amazon.com/lambda/home?region=eu-west-1#/create/app?applicationId=arn:aws:serverlessrepo:eu-west-1:123065155563:applications/S3ObjectLambdaDecompression).

Untuk melihat fungsi ini aktif GitHub, lihat Dekompresi [Lambda Objek S3](https://github.com/aws-samples/amazon-s3-object-lambda-decompression).

# Praktik terbaik dan pedoman untuk S3 Lambda Objek
<a name="olap-best-practices"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Saat menggunakan S3 Lambda Objek, ikuti praktik terbaik dan pedoman ini untuk mengoptimalkan operasi dan performanya.

**Topics**
+ [

## Bekerja dengan S3 Lambda Objek
](#olap-working-with)
+ [

## Layanan AWS digunakan sehubungan dengan S3 Object Lambda
](#olap-services)
+ [

## Header `Range` dan `partNumber`
](#olap-managing-range-part)
+ [

## Mengubah `expiry-date`
](#olap-console-download)
+ [

## Bekerja dengan AWS CLI dan AWS SDKs
](#olap-cli-sdk)

## Bekerja dengan S3 Lambda Objek
<a name="olap-working-with"></a>

S3 Lambda Objek hanya mendukung pemrosesan permintaan `GET`, `LIST`, dan `HEAD`. Permintaan lain apa pun tidak memanggil AWS Lambda dan sebagai gantinya mengembalikan respons API standar yang tidak diubah. Anda dapat membuat maksimum 1.000 Titik Akses Objek Lambda Akun AWS per Wilayah. AWS Lambda Fungsi yang Anda gunakan harus sama Akun AWS dan Region sebagai Object Lambda Access Point.

S3 Lambda Objek memungkinkan hingga 60 detik untuk mengalirkan respons lengkap ke pemanggilnya. Fungsi Anda juga tunduk pada kuota AWS Lambda default. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *. 

Saat S3 Lambda Objek menginvokasi fungsi Lambda yang Anda tentukan, Anda bertanggung jawab untuk memastikan bahwa data apa pun yang ditimpa atau dihapus dari Amazon S3 oleh fungsi atau aplikasi Lambda yang Anda tentukan memang tepat dan benar.

Anda hanya dapat menggunakan S3 Lambda Objek untuk melakukan operasi pada objek. Anda tidak dapat menggunakan Lambda Objek S3 untuk melakukan operasi Amazon S3 lainnya, seperti memodifikasi atau menghapus bucket. Untuk mengetahui daftar lengkap pengoperasian S3 yang mendukung titik akses, lihat [Kompatibilitas titik akses dengan operasi S3](access-points-service-api-support.md#access-points-operations-support).

Selain daftar ini, Titik Akses Lambda Objek tidak mendukung [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) (sebagai sumber), dan operasi API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html).

## Layanan AWS digunakan sehubungan dengan S3 Object Lambda
<a name="olap-services"></a>

S3 Object Lambda menghubungkan Amazon S3 AWS Lambda, dan secara opsional, pilihan Layanan AWS lain yang Anda pilih untuk mengirimkan objek yang relevan dengan aplikasi yang meminta. Semua yang Layanan AWS digunakan dengan S3 Object Lambda diatur oleh Perjanjian Tingkat Layanan masing-masing (). SLAs Misalnya, jika ada yang Layanan AWS tidak memenuhi Komitmen Layanannya, Anda berhak menerima Kredit Layanan, sebagaimana didokumentasikan dalam SLA layanan.

## Header `Range` dan `partNumber`
<a name="olap-managing-range-part"></a>

Saat bekerja dengan objek besar, Anda dapat menggunakan header HTTP `Range` untuk mengunduh rentang byte tertentu dari suatu objek. Saat Anda menggunakan header `Range`, permintaan Anda hanya mengambil bagian tertentu dari objek. Anda juga dapat menggunakan header `partNumber` untuk melakukan permintaan berkisar untuk bagian tertentu dari objek.

Untuk informasi selengkapnya, lihat [Bekerja dengan header Range dan partNumber](range-get-olap.md).

## Mengubah `expiry-date`
<a name="olap-console-download"></a>

Anda dapat membuka atau mengunduh objek yang diubah dari Titik Akses Objek Lambda Anda di file. Konsol Manajemen AWS Benda-benda ini harus berupa non-kedaluwarsa. Jika fungsi Lambda Anda mengubah `expiry-date` dari objek Anda, Anda mungkin melihat objek kedaluwarsa yang tidak dapat dibuka atau diunduh. Perilaku ini hanya berlaku untuk objek yang dipulihkan S3 Glacier Fleksibel Retrieval dan S3 Glacier Deep Archive.

## Bekerja dengan AWS CLI dan AWS SDKs
<a name="olap-cli-sdk"></a>

AWS Command Line Interface (AWS CLI) Subperintah S3 (`cp`,`mv`, dan`sync`) dan penggunaan AWS SDK untuk Java `TransferManager` kelas tidak didukung untuk digunakan dengan S3 Object Lambda.

# Tutorial S3 Lambda Objek
<a name="olap-tutorials"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Tutorial berikut menyajikan end-to-end prosedur lengkap untuk beberapa tugas Lambda Objek S3.

Dengan S3 Object Lambda, Anda dapat menambahkan kode Anda sendiri untuk memproses data yang diambil dari S3 sebelum mengembalikannya ke aplikasi. Masing-masing tutorial berikut akan memodifikasi data karena diambil dari Amazon S3, tanpa mengubah objek yang ada atau mempertahankan beberapa salinan data. Tutorial pertama akan membahas cara menambahkan AWS Lambda fungsi ke permintaan S3 GET untuk memodifikasi objek yang diambil dari S3. Tutorial kedua menunjukkan cara menggunakan fungsi Lambda bawaan yang didukung oleh Amazon Comprehend untuk melindungi informasi identitas pribadi (PII) yang diambil dari S3 sebelum mengembalikannya ke aplikasi. Tutorial ketiga menggunakan S3 Object Lambda untuk menambahkan tanda air ke gambar karena diambil dari Amazon S3.
+ [Tutorial: Mengubah data untuk aplikasi Anda dengan S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)
+ [Tutorial: Mendeteksi dan menyunting data PII dengan Objek S3 Lambda dan Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)
+ [Tutorial: Menggunakan S3 Lambda Objek untuk menandai gambar secara dinamis saat gambarnya diambil](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/olap-tutorials.html)

# Tutorial: Mengubah data untuk aplikasi Anda dengan S3 Object Lambda
<a name="tutorial-s3-object-lambda-uppercase"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Saat Anda menyimpan data di Amazon S3, Anda dapat dengan mudah membagikannya untuk digunakan oleh beberapa aplikasi. Namun, setiap aplikasi mungkin memiliki persyaratan format data yang unik, dan mungkin memerlukan modifikasi atau pemrosesan data Anda untuk kasus penggunaan tertentu. Misalnya, kumpulan data yang dibuat oleh aplikasi e-niaga mungkin termasuk informasi identitas pribadi (PII). Ketika data yang sama diproses untuk analitik, PII ini tidak diperlukan dan harus disunting. Namun, jika dataset yang sama digunakan untuk kampanye pemasaran, Anda mungkin perlu memperkaya data dengan detail tambahan, seperti informasi dari database loyalitas pelanggan.

Dengan [S3 Object Lambda](https://aws.amazon.com/s3/features/object-lambda), Anda dapat menambahkan kode Anda sendiri untuk memproses data yang diambil dari S3 sebelum mengembalikannya ke aplikasi. Secara khusus, Anda dapat mengonfigurasi AWS Lambda fungsi dan melampirkannya ke Titik Akses Lambda Objek S3. Saat aplikasi mengirimkan [permintaan GET S3 standar](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) melalui Titik Akses Lambda Objek S3, fungsi Lambda yang ditentukan dipanggil untuk memproses data apa pun yang diambil dari sumber data yang mendasarinya melalui jalur akses S3 pendukung. Kemudian, Titik Akses Lambda Objek S3 mengembalikan hasil yang diubah kembali ke aplikasi. Anda dapat membuat dan menjalankan fungsi Lambda kustom Anda sendiri, menyesuaikan transformasi data Lambda Objek S3 dengan kasus penggunaan spesifik Anda, semua tanpa perubahan yang diperlukan untuk aplikasi Anda.

![\[Ini adalah diagram alur kerja Objek Lambda S3.\]](http://docs.aws.amazon.com/id_id/AmazonS3/latest/userguide/images/ol-example-image-global.png)


**Tujuan**  
Dalam tutorial ini, Anda mempelajari cara menambahkan kode kustom ke permintaan GET S3 standar untuk memodifikasi objek yang diminta diambil dari S3 sehingga objek sesuai dengan kebutuhan klien atau aplikasi yang meminta. Secara khusus, Anda mempelajari cara mengubah semua teks dalam objek asli yang disimpan dalam bucket S3 menjadi huruf besar melalui S3 Object Lambda. 

**catatan**  
Tutorial ini menggunakan kode Python untuk mengubah data, misalnya menggunakan lainnya AWS SDKs lihat [Transform data untuk aplikasi Anda dengan S3 Object Lambda](https://docs.aws.amazon.com/code-library/latest/ug/lambda_example_cross_ServerlessS3DataTransformation_section.html) di SDK Code Examples Library. AWS 

**Topics**
+ [

## Prasyarat
](#ol-upper-prerequisites)
+ [

## Langkah 1: Buat ember S3
](#ol-upper-step1)
+ [

## Langkah 2: Unggah file ke bucket S3
](#ol-upper-step2)
+ [

## Langkah 3: Buat titik akses S3
](#ol-upper-step3)
+ [

## Langkah 4: Buat fungsi Lambda
](#ol-upper-step4)
+ [

## Langkah 5: Konfigurasikan kebijakan IAM untuk peran eksekusi fungsi Lambda Anda
](#ol-upper-step5)
+ [

## Langkah 6: Buat Titik Akses Lambda Objek S3
](#ol-upper-step6)
+ [

## Langkah 7: Lihat data yang diubah
](#ol-upper-step7)
+ [

## Langkah 8: Membersihkan
](#ol-upper-step8)
+ [

## Langkah selanjutnya
](#ol-upper-next-steps)

## Prasyarat
<a name="ol-upper-prerequisites"></a>

Sebelum Anda memulai tutorial ini, Anda harus memiliki Akun AWS yang dapat Anda masuki sebagai pengguna AWS Identity and Access Management (IAM) dengan izin yang benar. Anda juga harus menginstal Python versi 3.8 atau yang lebih baru.

**Topics**
+ [

### Buat pengguna IAM dengan izin di Akun AWS (konsol) Anda
](#ol-upper-prerequisites-account)
+ [

### Instal Python 3.8 atau yang lebih baru di komputer lokal Anda
](#ol-upper-prerequisites-python)

### Buat pengguna IAM dengan izin di Akun AWS (konsol) Anda
<a name="ol-upper-prerequisites-account"></a>

Anda dapat membuat pengguna IAM untuk tutorial. Untuk menyelesaikan tutorial ini, pengguna IAM Anda harus melampirkan kebijakan IAM berikut untuk mengakses AWS sumber daya yang relevan dan melakukan tindakan tertentu. Untuk informasi selengkapnya tentang cara membuat pengguna IAM, lihat [Membuat pengguna IAM (konsol) di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) *IAM*.

Pengguna IAM Anda memerlukan kebijakan berikut:
+ [AmazonS3 FullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor) - Memberikan izin untuk semua tindakan Amazon S3, termasuk izin untuk membuat dan menggunakan Titik Akses Lambda Objek. 
+ [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess$jsonEditor)— Memberikan izin untuk semua tindakan Lambda. 
+ [IAMFullAkses](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMFullAccess$jsonEditor) - Memberikan izin untuk semua tindakan IAM. 
+ [IAMAccessAnalyzerReadOnlyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess$jsonEditor)— Memberikan izin untuk membaca semua informasi akses yang disediakan oleh IAM Access Analyzer. 
+ [CloudWatchLogsFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLogsFullAccess$jsonEditor)— Memberikan akses penuh ke CloudWatch Log. 

**catatan**  
Untuk kesederhanaan, tutorial ini membuat dan menggunakan pengguna IAM. Setelah menyelesaikan tutorial ini, ingatlah untuk[Hapus pengguna IAM](#ol-upper-step8-delete-user). Untuk penggunaan produksi, kami menyarankan Anda mengikuti [praktik terbaik Keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam *Panduan Pengguna IAM*. Praktik terbaik mengharuskan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses AWS dengan kredensi sementara. Praktik terbaik lainnya adalah meminta beban kerja untuk menggunakan kredensil sementara dengan peran IAM untuk mengakses. AWS Untuk mempelajari cara menggunakan AWS IAM Identity Center untuk membuat pengguna dengan kredensial sementara, lihat [Memulai](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) di *AWS IAM Identity Center Panduan Pengguna*.   
Tutorial ini juga menggunakan kebijakan AWS terkelola akses penuh. Untuk penggunaan produksi, sebaiknya Anda hanya memberikan izin minimum yang diperlukan untuk kasus penggunaan Anda, sesuai dengan [praktik terbaik keamanan](security-best-practices.md#security-best-practices-prevent).

### Instal Python 3.8 atau yang lebih baru di komputer lokal Anda
<a name="ol-upper-prerequisites-python"></a>

Gunakan prosedur berikut untuk menginstal Python 3.8 atau yang lebih baru pada mesin lokal Anda. Untuk petunjuk penginstalan lainnya, lihat halaman [Mengunduh Python](https://wiki.python.org/moin/BeginnersGuide/Download) di Panduan Pemula *Python*.

1. Buka terminal atau shell lokal Anda dan jalankan perintah berikut untuk menentukan apakah Python sudah diinstal, dan jika demikian, versi mana yang diinstal. 

   ```
   python --version
   ```

1. Jika Anda tidak memiliki Python 3.8 atau yang lebih baru, unduh [penginstal resmi](https://www.python.org/downloads/) Python 3.8 atau yang lebih baru yang cocok untuk mesin lokal Anda. 

1. Jalankan penginstal dengan mengklik dua kali file yang diunduh, dan ikuti langkah-langkah untuk menyelesaikan instalasi. 

   **Untuk **pengguna Windows**, pilih **Tambahkan Python 3.X ke PATH** di wizard instalasi sebelum memilih Instal Sekarang.** 

1. Mulai ulang terminal Anda dengan menutup dan membukanya kembali. 

1. Jalankan perintah berikut untuk memverifikasi bahwa Python 3.8 atau yang lebih baru diinstal dengan benar. 

   Untuk **pengguna macOS**, jalankan perintah ini: 

   ```
   python3 --version
   ```

   Untuk **pengguna Windows**, jalankan perintah ini: 

   ```
   python --version
   ```

1. Jalankan perintah berikut untuk memverifikasi bahwa manajer paket pip3 diinstal. Jika Anda melihat nomor versi pip dan python 3.8 atau yang lebih baru dalam respons perintah, itu berarti manajer paket pip3 berhasil diinstal.

   ```
   pip --version
   ```

## Langkah 1: Buat ember S3
<a name="ol-upper-step1"></a>

Buat bucket untuk menyimpan data asli yang Anda rencanakan untuk diubah. 

**catatan**  
Titik akses dapat dilampirkan untuk sumber data lain, seperti Amazon FSx untuk volume OpenZFS, namun tutorial ini menggunakan titik akses pendukung yang terpasang pada bucket S3.

**Untuk membuat bucket**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket**.

1. Pilih **Buat bucket**. 

   Halaman **Buat bucket** terbuka.

1. Untuk **nama Bucket**, masukkan nama (misalnya,**tutorial-bucket**) untuk bucket Anda. 

   Untuk informasi selengkapnya tentang penamaan bucket di Amazon S3, lihat. [Aturan penamaan bucket tujuan umum](bucketnamingrules.md)

1. Untuk **Wilayah**, pilih Wilayah AWS tempat Anda ingin ember berada. 

   Untuk informasi selengkapnya tentang Wilayah bucket, lihat[Ikhtisar bucket tujuan umum](UsingBucket.md).

1. Untuk **pengaturan Blokir Akses Publik untuk bucket ini**, pertahankan pengaturan default (**Blokir *semua* akses publik** diaktifkan). 

   Kami menyarankan agar Anda tetap mengaktifkan semua pengaturan Blokir Akses Publik kecuali Anda perlu menonaktifkan satu atau beberapa pengaturan tersebut untuk kasus penggunaan Anda. Untuk informasi lebih lanjut tentang pemblokiran akses publik, lihat [Melakukan blok akses publik ke penyimpanan Amazon S3 Anda](access-control-block-public-access.md).

1. Untuk pengaturan yang tersisa, pertahankan default. 

   (Opsional) Jika Anda ingin mengonfigurasi pengaturan bucket tambahan untuk kasus penggunaan spesifik Anda, lihat[Membuat bucket tujuan umum](create-bucket-overview.md).

1. Pilih **Buat bucket**.

## Langkah 2: Unggah file ke bucket S3
<a name="ol-upper-step2"></a>

Unggah file teks ke bucket S3. File teks ini berisi data asli yang akan Anda ubah menjadi huruf besar nanti dalam tutorial ini. 

Misalnya, Anda dapat mengunggah `tutorial.txt` file yang berisi teks berikut:

```
Amazon S3 Object Lambda Tutorial:
You can add your own code to process data retrieved from S3 before 
returning it to an application.
```

**Untuk mengunggah file ke ember**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket**.

1. Dalam daftar **Bucket**, pilih nama bucket yang Anda buat di [Langkah 1](#ol-upper-step1) (misalnya,**tutorial-bucket**) untuk mengunggah file Anda.

1. Di tab **Objek** untuk bucket Anda, pilih **Unggah**.

1. Pada halaman **Unggah**, di bawah **File dan folder**, pilih **Tambahkan file**.

1. Pilih file yang akan diunggah, lalu pilih **Buka.** Misalnya, Anda dapat mengunggah contoh `tutorial.txt` file yang disebutkan sebelumnya.

1. Pilih **Unggah**.

## Langkah 3: Buat titik akses S3
<a name="ol-upper-step3"></a>

[Untuk menggunakan Titik Akses Lambda Objek S3 untuk mengakses dan mengubah data asli, Anda harus membuat titik akses S3 dan mengaitkannya dengan bucket S3 yang Anda buat di Langkah 1.](#ol-upper-step1) Titik akses harus Wilayah AWS sama dengan objek yang ingin Anda ubah.

Kemudian dalam tutorial ini, Anda akan menggunakan titik akses ini sebagai titik akses pendukung untuk Object Lambda Access Point Anda. 

**Untuk membuat titik akses**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Pada panel navigasi di kiri, pilih **Titik Akses**.

1. Pada halaman **Titik Akses**, pilih **Buat titik akses**.

1. Di bidang **Nama titik akses**, masukkan nama (misalnya,**tutorial-access-point**) untuk titik akses.

   Untuk informasi lebih lanjut tentang penamaan titik akses, lihat [Aturan penamaan untuk titik akses](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. Di bidang **Sumber data**, masukkan nama bucket yang Anda buat di [Langkah 1](#ol-upper-step1) (misalnya,**tutorial-bucket**). S3 melampirkan titik akses ke bucket ini. 

   (Opsional) Anda dapat memilih **Browse S3** untuk menelusuri dan mencari bucket di akun Anda. Jika Anda memilih **Browse S3**, pilih bucket yang diinginkan, lalu pilih **Pilih jalur** untuk mengisi bidang **nama Bucket** dengan nama bucket tersebut.

1. Untuk **asal Jaringan**, pilih **Internet**. 

   Untuk informasi lebih lanjut tentang asal jaringan untuk titik akses, lihat [Membuat titik akses terbatas pada cloud privat virtual](access-points-vpc.md).

1. Secara default, semua pengaturan Blokir Akses Publik diaktifkan untuk titik akses Anda. Kami menyarankan agar Anda tetap mengaktifkan **Blokir *semua* akses publik**.

   Untuk informasi selengkapnya, lihat [Mengelola akses publik ke titik akses untuk ember tujuan umum](access-points-bpa-settings.md).

1. Untuk semua pengaturan titik akses lainnya, pertahankan pengaturan default.

   (Opsional) Anda dapat mengubah pengaturan titik akses untuk mendukung kasus penggunaan Anda. Untuk tutorial ini, kami sarankan untuk menjaga pengaturan default. 

   (Opsional) Jika Anda perlu mengelola akses ke titik akses Anda, Anda dapat menentukan kebijakan titik akses. Untuk informasi selengkapnya, lihat [Contoh kebijakan untuk titik akses](access-points-policies.md#access-points-policy-examples). 

1. Pilih **Buat titik akses**.

## Langkah 4: Buat fungsi Lambda
<a name="ol-upper-step4"></a>

Untuk mengubah data asli, buat fungsi Lambda untuk digunakan dengan Titik Akses Lambda Objek S3 Anda. 

**Topics**
+ [

### Tulis kode fungsi Lambda dan buat paket penyebaran dengan lingkungan virtual
](#ol-upper-step4-write-lambda)
+ [

### Buat fungsi Lambda dengan peran eksekusi (konsol)
](#ol-upper-step4-create-function)
+ [

### Terapkan kode fungsi Lambda Anda dengan arsip file.zip dan konfigurasikan fungsi Lambda (konsol)
](#ol-upper-step4-deploy-function)

### Tulis kode fungsi Lambda dan buat paket penyebaran dengan lingkungan virtual
<a name="ol-upper-step4-write-lambda"></a>

1. Pada mesin lokal Anda, buat folder dengan nama folder `object-lambda` untuk lingkungan virtual untuk digunakan nanti dalam tutorial ini.

1. Di `object-lambda` folder, buat file dengan fungsi Lambda yang mengubah semua teks di objek asli menjadi huruf besar. Misalnya, Anda dapat menggunakan fungsi berikut yang ditulis dengan Python. Simpan fungsi ini dalam file bernama`transform.py`. 

   ```
   import boto3
   import requests
   from botocore.config import Config
   
   # This function capitalizes all text in the original object
   def lambda_handler(event, context):
       object_context = event["getObjectContext"]
       # Get the presigned URL to fetch the requested original object 
       # from S3
       s3_url = object_context["inputS3Url"]
       # Extract the route and request token from the input context
       request_route = object_context["outputRoute"]
       request_token = object_context["outputToken"]
       
       # Get the original S3 object using the presigned URL
       response = requests.get(s3_url)
       original_object = response.content.decode("utf-8")
   
       # Transform all text in the original object to uppercase
       # You can replace it with your custom code based on your use case
       transformed_object = original_object.upper()
   
       # Write object back to S3 Object Lambda
       s3 = boto3.client('s3', config=Config(signature_version='s3v4'))
       # The WriteGetObjectResponse API sends the transformed data
       # back to S3 Object Lambda and then to the user
       s3.write_get_object_response(
           Body=transformed_object,
           RequestRoute=request_route,
           RequestToken=request_token)
   
       # Exit the Lambda function: return the status code  
       return {'status_code': 200}
   ```
**catatan**  
Contoh sebelumnya fungsi Lambda memuat seluruh objek yang diminta ke dalam memori sebelum mengubahnya dan mengembalikannya ke klien. Atau, Anda dapat melakukan streaming objek dari S3 untuk menghindari memuat seluruh objek ke dalam memori. Pendekatan ini dapat berguna saat bekerja dengan benda besar. Untuk informasi selengkapnya tentang respons streaming dengan Titik Akses Objek Lambda, lihat contoh streaming di. [Bekerja dengan `GetObject` permintaan di Lambda](olap-writing-lambda.md#olap-getobject-response)

   Saat Anda menulis fungsi Lambda untuk digunakan dengan Titik Akses Lambda Objek S3, fungsi ini didasarkan pada konteks peristiwa masukan yang disediakan S3 Object Lambda ke fungsi Lambda. Konteks acara memberikan informasi tentang permintaan yang dibuat dalam acara yang diteruskan dari S3 Object Lambda ke Lambda. Ini berisi parameter yang Anda gunakan untuk membuat fungsi Lambda.

   Bidang yang digunakan untuk membuat fungsi Lambda sebelumnya adalah sebagai berikut: 

   Bidang `getObjectContext` berarti rincian input dan output untuk koneksi ke Amazon S3 dan S3 Object Lambda. Ini memiliki bidang-bidang berikut:
   + `inputS3Url`— URL presigned yang dapat digunakan fungsi Lambda untuk mengunduh objek asli dari titik akses pendukung. Dengan menggunakan URL yang telah ditetapkan sebelumnya, fungsi Lambda tidak perlu memiliki izin baca Amazon S3 untuk mengambil objek asli dan hanya dapat mengakses objek yang diproses oleh setiap pemanggilan.
   + `outputRoute`— Token routing yang ditambahkan ke URL Lambda Objek S3 saat fungsi Lambda memanggil `WriteGetObjectResponse` untuk mengirim kembali objek yang diubah.
   + `outputToken`— Token yang digunakan oleh S3 Object Lambda untuk `WriteGetObjectResponse` mencocokkan panggilan dengan penelepon asli saat mengirim kembali objek yang diubah.

   Untuk informasi selengkapnya tentang semua bidang dalam konteks acara, lihat [Format konteks peristiwa dan penggunaan](olap-event-context.md) dan[Menulis fungsi Lambda untuk Titik Akses S3 Lambda Objek](olap-writing-lambda.md).

1. Di terminal lokal Anda, masukkan perintah berikut untuk menginstal `virtualenv` paket:

   ```
   python -m pip install virtualenv
   ```

1. Di terminal lokal Anda, buka `object-lambda` folder yang Anda buat sebelumnya, lalu masukkan perintah berikut untuk membuat dan menginisialisasi lingkungan virtual yang disebut`venv`.

   ```
   python -m virtualenv venv
   ```

1. Untuk mengaktifkan lingkungan virtual, masukkan perintah berikut untuk menjalankan `activate` file dari folder lingkungan:

   Untuk **pengguna macOS**, jalankan perintah ini:

   ```
   source venv/bin/activate
   ```

   Untuk **pengguna Windows**, jalankan perintah ini:

   ```
   .\venv\Scripts\activate
   ```

   Sekarang, prompt perintah Anda berubah menjadi show **(venv)**, menunjukkan bahwa lingkungan virtual aktif.

1. Untuk menginstal pustaka yang diperlukan, jalankan perintah berikut baris demi baris di lingkungan `venv` virtual.

   Perintah ini menginstal versi terbaru dari dependensi fungsi Lambda `lambda_handler` Anda. Dependensi ini adalah AWS SDK untuk Python (Boto3) dan modul request.

   ```
   pip3 install boto3
   ```

   ```
   pip3 install requests
   ```

1. Untuk menonaktifkan lingkungan virtual, jalankan perintah berikut:

   ```
   deactivate
   ```

1. Untuk membuat paket penyebaran dengan pustaka yang diinstal sebagai `.zip` file bernama `lambda.zip` di root `object-lambda` direktori, jalankan perintah berikut baris demi baris di terminal lokal Anda.
**Tip**  
Perintah berikut mungkin perlu disesuaikan untuk bekerja di lingkungan khusus Anda. Misalnya, pustaka mungkin muncul di `site-packages` atau`dist-packages`, dan folder pertama mungkin `lib` atau`lib64`. Juga, `python` folder mungkin diberi nama dengan versi Python yang berbeda. Untuk menemukan paket tertentu, gunakan `pip show` perintah.

   Untuk **pengguna macOS**, jalankan perintah ini:

   ```
   cd venv/lib/python3.8/site-packages 
   ```

   ```
   zip -r ../../../../lambda.zip .
   ```

   Untuk **pengguna Windows**, jalankan perintah ini:

   ```
   cd .\venv\Lib\site-packages\ 
   ```

   ```
   powershell Compress-Archive * ../../../lambda.zip
   ```

   Perintah terakhir menyimpan paket deployment ke akar direktori `object-lambda`.

1. Tambahkan file kode fungsi `transform.py` ke root paket penyebaran Anda.

   Untuk **pengguna macOS**, jalankan perintah ini:

   ```
   cd ../../../../ 
   ```

   ```
   zip -g lambda.zip transform.py
   ```

   Untuk **pengguna Windows**, jalankan perintah ini: 

   ```
   cd ..\..\..\
   ```

   ```
   powershell Compress-Archive -update transform.py lambda.zip
   ```

   Setelah menyelesaikan langkah ini, struktur direktori Anda adalah sebagai berikut:

   ```
   lambda.zip$
     │ transform.py
     │ __pycache__
     | boto3/
     │ certifi/
     │ pip/
     │ requests/
     ...
   ```

### Buat fungsi Lambda dengan peran eksekusi (konsol)
<a name="ol-upper-step4-create-function"></a>

1. Masuk ke Konsol Manajemen AWS dan buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

   

1. Di panel navigasi kiri, pilih **Fungsi**.

1. Pilih **Buat fungsi**.

1. Pilih **Penulis dari scratch**.

1. Di bagian **Informasi dasar**, lakukan hal berikut:

   1. Untuk **Nama fungsi**, masukkan **tutorial-object-lambda-function**.

   1. Untuk **Runtime**, pilih **Python** 3.8 atau versi yang lebih baru.

1. Perluas bagian **Ubah peran eksekusi default**. Di bawah **Peran eksekusi**, pilih **Buat peran baru dengan izin Lambda dasar**.

   Pada [Langkah 5](#ol-upper-step5) nanti dalam tutorial ini, Anda melampirkan **AmazonS3 ke peran eksekusi ObjectLambdaExecutionRolePolicy** fungsi Lambda ini. 

1. Pertahankan pengaturan yang tersisa disetel ke default.

1. Pilih **Buat fungsi**.

### Terapkan kode fungsi Lambda Anda dengan arsip file.zip dan konfigurasikan fungsi Lambda (konsol)
<a name="ol-upper-step4-deploy-function"></a>

1. Di AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), pilih **Fungsi** di panel navigasi kiri. 

1. Pilih fungsi Lambda yang Anda buat sebelumnya (misalnya,**tutorial-object-lambda-function**). 

1. Pada halaman detail fungsi Lambda, pilih tab **Kode**. Di bagian **Sumber Kode**, pilih **Unggah dari** dan kemudian **file.zip**.

1. Pilih **Unggah** untuk memilih `.zip` file lokal Anda.

1. Pilih `lambda.zip` file yang Anda buat sebelumnya, lalu pilih **Buka**.

1. Pilih **Simpan**.

1. Di bagian **Pengaturan waktu proses**, pilih **Edit**. 

1. Pada halaman **Edit pengaturan runtime**, konfirmasikan bahwa **Runtime** diatur ke **Python 3.8** atau versi yang lebih baru. 

1. **Untuk memberi tahu runtime Lambda metode handler mana dalam kode fungsi Lambda Anda yang akan dipanggil, masukkan untuk Handler. **transform.lambda\$1handler****

   Ketika Anda mengonfigurasi fungsi di Python, nilai pengaturan handler adalah nama file dan nama modul handler, yang dipisahkan oleh titik. Misalnya, `transform.lambda_handler` memanggil `lambda_handler` metode yang didefinisikan dalam `transform.py` file.

1. Pilih **Simpan**.

1. (Opsional) Pada halaman detail fungsi Lambda Anda, pilih tab **Konfigurasi**. Di panel navigasi kiri, pilih **Konfigurasi umum**, lalu pilih **Edit**. Di bidang **Timeout**, masukkan **1** min **0** sec. **Pertahankan pengaturan yang tersisa disetel ke default, dan pilih Simpan.**

   **Timeout** adalah jumlah waktu yang memungkinkan Lambda menjalankan fungsi untuk pemanggilan sebelum menghentikannya. Default-nya adalah 3 detik. Durasi maksimum untuk fungsi Lambda yang digunakan oleh S3 Object Lambda adalah 60 detik. Harga didasarkan pada jumlah memori yang dikonfigurasi dan jumlah waktu yang digunakan selama kode Anda berjalan.

## Langkah 5: Konfigurasikan kebijakan IAM untuk peran eksekusi fungsi Lambda Anda
<a name="ol-upper-step5"></a>

Untuk mengaktifkan fungsi Lambda Anda untuk menyediakan data yang disesuaikan dan header respons kepada `GetObject` pemanggil, peran eksekusi fungsi Lambda Anda harus memiliki izin IAM untuk memanggil API. `WriteGetObjectResponse`

**Untuk melampirkan kebijakan IAM ke peran fungsi Lambda**



1. Di AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), pilih **Fungsi** di panel navigasi kiri. 

1. Pilih fungsi yang Anda buat di [Langkah 4](#ol-upper-step4) (misalnya,**tutorial-object-lambda-function**).

1. Pada halaman detail fungsi Lambda Anda, pilih tab **Konfigurasi**, lalu pilih **Izin di panel** navigasi kiri. 

1. Di bawah **Peran eksekusi**, pilih tautan **nama Peran**. Konsol IAM terbuka. 

1. **Pada halaman **Ringkasan** konsol IAM untuk peran eksekusi fungsi Lambda Anda, pilih tab Izin.** Kemudian, dari menu **Tambahkan Izin**, pilih **Lampirkan kebijakan**.

1. Pada halaman **Lampirkan Izin**, masukkan **AmazonS3ObjectLambdaExecutionRolePolicy** di kotak pencarian untuk memfilter daftar kebijakan. Pilih kotak centang di sebelah nama kebijakan **AmazonS3 ObjectLambdaExecutionRolePolicy**. 

1. Pilih **Lampirkan kebijakan**. 

## Langkah 6: Buat Titik Akses Lambda Objek S3
<a name="ol-upper-step6"></a>

Titik Akses Lambda Objek S3 memberikan fleksibilitas untuk memanggil fungsi Lambda langsung dari permintaan S3 GET sehingga fungsi tersebut dapat memproses data yang diambil dari titik akses S3. Saat membuat dan mengonfigurasi Titik Akses Lambda Objek S3, Anda harus menentukan fungsi Lambda untuk memanggil dan menyediakan konteks acara dalam format JSON sebagai parameter khusus untuk digunakan Lambda.

**Untuk membuat Objek S3 Lambda Access Point**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Pada halaman **Titik Akses Lambda Objek**, pilih **Buat Titik Akses Lambda Objek**.

1. Untuk **nama Object Lambda Access Point**, masukkan nama yang ingin Anda gunakan untuk Object Lambda Access Point (misalnya,). **tutorial-object-lambda-accesspoint** 

1. Untuk **Mendukung Titik Akses**, masukkan atau telusuri ke titik akses standar yang Anda buat di [Langkah 3](#ol-upper-step3) (misalnya,**tutorial-access-point**), lalu pilih **Pilih Titik Akses pendukung**. 

1. Untuk **S3 APIs**, untuk mengambil objek dari bucket S3 agar fungsi Lambda dapat diproses, pilih. **GetObject**

1. Untuk fungsi **Invoke Lambda**, Anda dapat memilih salah satu dari dua opsi berikut untuk tutorial ini. 
   + Pilih **Pilih dari fungsi di akun Anda**, lalu pilih fungsi Lambda yang Anda buat di [Langkah 4](#ol-upper-step4) (misalnya,**tutorial-object-lambda-function**) dari daftar dropdown fungsi **Lambda**.
   + [Pilih **Masukkan ARN**, lalu masukkan Nama Sumber Daya Amazon (ARN) dari fungsi Lambda yang Anda buat di Langkah 4.](#ol-upper-step4)

1. [Untuk **versi fungsi Lambda**, pilih **\$1LATEST** (versi terbaru dari fungsi Lambda yang Anda buat di Langkah 4).](#ol-upper-step4)

1. (Opsional) Jika Anda memerlukan fungsi Lambda Anda untuk mengenali dan memproses permintaan GET dengan header rentang dan nomor bagian, pilih Fungsi **Lambda mendukung permintaan menggunakan rentang dan fungsi **Lambda** mendukung permintaan menggunakan** nomor bagian. Jika tidak, kosongkan dua kotak centang ini.

   Untuk informasi selengkapnya tentang cara menggunakan nomor rentang atau bagian dengan S3 Object Lambda, lihat. [Bekerja dengan header Range dan partNumber](range-get-olap.md)

1. (Opsional) Di bawah **Payload - *opsional***, tambahkan teks JSON untuk menyediakan fungsi Lambda Anda dengan informasi tambahan.

   Payload adalah teks JSON opsional yang dapat Anda berikan ke fungsi Lambda Anda sebagai masukan untuk semua pemanggilan yang berasal dari Titik Akses Lambda Objek S3 tertentu. Untuk menyesuaikan perilaku untuk beberapa Titik Akses Lambda Objek yang menjalankan fungsi Lambda yang sama, Anda dapat mengonfigurasi muatan dengan parameter yang berbeda, sehingga memperluas fleksibilitas fungsi Lambda Anda.

   Untuk informasi selengkapnya tentang payload, lihat[Format konteks peristiwa dan penggunaan](olap-event-context.md).

1. (Opsional) Untuk **metrik Permintaan - *opsional***, pilih **Nonaktifkan** atau **Aktifkan** untuk menambahkan pemantauan Amazon S3 ke Titik Akses Lambda Objek Anda. Metrik permintaan ditagih dengan tarif Amazon CloudWatch standar. Untuk informasi selengkapnya, lihat [harga CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

1. Di bawah **kebijakan Titik Akses Objek Lambda - *opsional***, pertahankan pengaturan default. 

   (Opsional) Anda dapat menetapkan kebijakan sumber daya. Kebijakan resource ini memberikan izin `GetObject` API  untuk menggunakan Object Lambda Access Point yang ditentukan.

1. Pertahankan pengaturan yang tersisa disetel ke default, dan pilih Buat **Objek Lambda** Access Point.

## Langkah 7: Lihat data yang diubah
<a name="ol-upper-step7"></a>

Sekarang, S3 Object Lambda siap untuk mengubah data Anda untuk kasus penggunaan Anda. Dalam tutorial ini, S3 Object Lambda mengubah semua teks dalam objek Anda menjadi huruf besar.

**Topics**
+ [

### Lihat data yang diubah di Titik Akses Lambda Objek S3 Anda
](#ol-upper-step7-check-data)
+ [

### Jalankan skrip Python untuk mencetak data asli dan diubah
](#ol-upper-step7-python-print)

### Lihat data yang diubah di Titik Akses Lambda Objek S3 Anda
<a name="ol-upper-step7-check-data"></a>

Saat Anda meminta untuk mengambil file melalui Titik Akses Lambda Objek S3, Anda membuat panggilan `GetObject` API ke S3 Object Lambda. S3 Object Lambda memanggil fungsi Lambda untuk mengubah data Anda, dan kemudian mengembalikan data yang diubah sebagai respons terhadap panggilan API S3 standar. `GetObject`

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Pada halaman **Titik Akses Objek Lambda, pilih Titik Akses** Lambda Objek S3 yang Anda buat di [Langkah 6](#ol-upper-step6) (misalnya,). **tutorial-object-lambda-accesspoint**

1. [Pada tab **Objek** pada Titik Akses Lambda Objek S3 Anda, pilih file yang memiliki nama yang sama (misalnya`tutorial.txt`,) dengan file yang Anda unggah ke bucket S3 di Langkah 2.](#ol-upper-step2) 

   File ini harus berisi semua data yang diubah.

1. Untuk melihat data yang diubah, pilih **Buka** atau **Unduh**.

### Jalankan skrip Python untuk mencetak data asli dan diubah
<a name="ol-upper-step7-python-print"></a>

Anda dapat menggunakan S3 Object Lambda dengan aplikasi yang ada. Untuk melakukannya, perbarui konfigurasi aplikasi Anda untuk menggunakan ARN Titik Akses Lambda Objek S3 baru yang Anda buat [di Langkah](#ol-upper-step6) 6 untuk mengambil data dari S3. 

Contoh skrip Python berikut mencetak data asli dari bucket S3 dan data yang diubah dari S3 Object Lambda Access Point. 

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Pada halaman **Titik Akses Objek Lambda**, pilih tombol radio di sebelah kiri Titik Akses Lambda Objek S3 yang Anda buat di [Langkah 6](#ol-upper-step6) (misalnya,). **tutorial-object-lambda-accesspoint**

1. Pilih **Salin ARN**.

1. Simpan ARN untuk digunakan nanti.

1. Tulis skrip Python di mesin lokal Anda untuk mencetak data asli (misalnya,`tutorial.txt`) dari Bucket S3 Anda dan data yang diubah (misalnya,`tutorial.txt`) dari Titik Akses Lambda Objek S3 Anda). Anda dapat menggunakan contoh script berikut. 

   ```
   import boto3
   from botocore.config import Config
   
   s3 = boto3.client('s3', config=Config(signature_version='s3v4'))
   
   def getObject(bucket, key):
       objectBody = s3.get_object(Bucket = bucket, Key = key)
       print(objectBody["Body"].read().decode("utf-8"))
       print("\n")
   
   print('Original object from the S3 bucket:')
   # Replace the two input parameters of getObject() below with 
   # the S3 bucket name that you created in Step 1 and 
   # the name of the file that you uploaded to the S3 bucket in Step 2
   getObject("tutorial-bucket", 
             "tutorial.txt")
   
   print('Object transformed by S3 Object Lambda:')
   # Replace the two input parameters of getObject() below with 
   # the ARN of your S3 Object Lambda Access Point that you saved earlier and
   # the name of the file with the transformed data (which in this case is
   # the same as the name of the file that you uploaded to the S3 bucket 
   # in Step 2)
   getObject("arn:aws:s3-object-lambda:us-west-2:111122223333:accesspoint/tutorial-object-lambda-accesspoint",
             "tutorial.txt")
   ```

1. Simpan skrip Python Anda dengan nama khusus (misalnya,`tutorial_print.py`) di folder (misalnya,`object-lambda`) yang Anda buat di [Langkah 4 di mesin](#ol-upper-step4) lokal Anda.

1. Di terminal lokal Anda, jalankan perintah berikut dari root direktori (misalnya,`object-lambda`) yang Anda buat di [Langkah 4](#ol-upper-step4).

   ```
   python3 tutorial_print.py
   ```

   Anda akan melihat data asli dan data yang diubah (semua teks sebagai huruf besar) melalui terminal. Misalnya, Anda akan melihat sesuatu seperti teks berikut.

   ```
   Original object from the S3 bucket:
   Amazon S3 Object Lambda Tutorial:
   You can add your own code to process data retrieved from S3 before 
   returning it to an application.
   
   Object transformed by S3 Object Lambda:
   AMAZON S3 OBJECT LAMBDA TUTORIAL:
   YOU CAN ADD YOUR OWN CODE TO PROCESS DATA RETRIEVED FROM S3 BEFORE 
   RETURNING IT TO AN APPLICATION.
   ```

## Langkah 8: Membersihkan
<a name="ol-upper-step8"></a>

Jika Anda mengubah data Anda melalui S3 Object Lambda hanya sebagai latihan pembelajaran, hapus AWS sumber daya yang Anda alokasikan sehingga Anda tidak lagi menambah biaya. 

**Topics**
+ [

### Hapus Titik Akses Objek Lambda
](#ol-upper-step8-delete-olap)
+ [

### Hapus titik akses S3
](#ol-upper-step8-delete-ap)
+ [

### Hapus peran eksekusi untuk fungsi Lambda Anda
](#ol-upper-step8-delete-lambda-role)
+ [

### Hapus fungsi Lambda
](#ol-upper-step8-delete-lambda-function)
+ [

### Hapus grup CloudWatch log
](#ol-upper-step8-delete-cloudwatch)
+ [

### Hapus file asli di bucket sumber S3
](#ol-upper-step8-delete-file)
+ [

### Hapus bucket sumber S3
](#ol-upper-step8-delete-bucket)
+ [

### Hapus pengguna IAM
](#ol-upper-step8-delete-user)

### Hapus Titik Akses Objek Lambda
<a name="ol-upper-step8-delete-olap"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Pada halaman **Titik Akses Objek Lambda**, pilih tombol radio di sebelah kiri Titik Akses Lambda Objek S3 yang Anda buat di [Langkah 6](#ol-upper-step6) (misalnya,). **tutorial-object-lambda-accesspoint**

1. Pilih **Hapus**.

1. **Konfirmasikan bahwa Anda ingin menghapus Titik Akses Objek Lambda Anda dengan memasukkan namanya di bidang teks yang muncul, lalu pilih Hapus.**

### Hapus titik akses S3
<a name="ol-upper-step8-delete-ap"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Pada panel navigasi di kiri, pilih **Titik Akses**.

1. Arahkan ke titik akses yang Anda buat di [Langkah 3](#ol-upper-step3) (misalnya,**tutorial-access-point**), dan pilih tombol radio di sebelah nama titik akses.

1. Pilih **Hapus**.

1. Konfirmasikan bahwa Anda ingin menghapus jalur akses Anda dengan memasukkan namanya di bidang teks yang muncul, lalu pilih **Hapus**.

### Hapus peran eksekusi untuk fungsi Lambda Anda
<a name="ol-upper-step8-delete-lambda-role"></a>

1. Masuk ke Konsol Manajemen AWS dan buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Di panel navigasi kiri, pilih **Fungsi**.

1. Pilih fungsi yang Anda buat di [Langkah 4](#ol-upper-step4) (misalnya,**tutorial-object-lambda-function**).

1. Pada halaman detail fungsi Lambda Anda, pilih tab **Konfigurasi**, lalu pilih **Izin di panel** navigasi kiri. 

1. Di bawah **Peran eksekusi**, pilih tautan **nama Peran**. Konsol IAM terbuka.

1. Pada halaman **Ringkasan** konsol IAM tentang peran eksekusi fungsi Lambda Anda, **pilih** Hapus peran.

1. Di kotak dialog **Hapus peran**, pilih **Ya, hapus**.

### Hapus fungsi Lambda
<a name="ol-upper-step8-delete-lambda-function"></a>

1. Di AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), pilih **Fungsi** di panel navigasi kiri. 

1. Pilih kotak centang di sebelah kiri nama fungsi yang Anda buat di [Langkah 4](#ol-upper-step4) (misalnya,**tutorial-object-lambda-function**).

1. Pilih **Tindakan**, lalu pilih **Hapus**.

1. Di kotak dialog **Hapus fungsi**, pilih **Hapus**.

### Hapus grup CloudWatch log
<a name="ol-upper-step8-delete-cloudwatch"></a>

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

1. Pada panel navigasi kiri, pilih **Grup log**.

1. Temukan grup log yang namanya diakhiri dengan fungsi Lambda yang Anda buat di [Langkah 4](#ol-upper-step4) (misalnya,**tutorial-object-lambda-function**).

1. Pilih kotak centang di sebelah kiri nama grup log.

1. Pilih **Tindakan**, lalu pilih **Hapus grup log**.

1. Di kotak dialog **Hapus grup log**, pilih **Hapus**.

### Hapus file asli di bucket sumber S3
<a name="ol-upper-step8-delete-file"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket**.

1. Dalam daftar **nama Bucket**, pilih nama bucket tempat Anda mengunggah file asli di [Langkah 2](#ol-upper-step2) (misalnya,**tutorial-bucket**).

1. Pilih kotak centang di sebelah kiri nama objek yang ingin Anda hapus (misalnya,`tutorial.txt`).

1. Pilih **Hapus**.

1. Pada halaman **Hapus objek**, di **objek Hapus secara permanen?** bagian, konfirmasikan bahwa Anda ingin menghapus objek ini dengan memasukkan **permanently delete** di kotak teks.

1. Pilih **Hapus objek**.

### Hapus bucket sumber S3
<a name="ol-upper-step8-delete-bucket"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket**.

1. Dalam daftar **Bucket**, pilih tombol radio di sebelah nama bucket yang Anda buat di [Langkah 1](#ol-upper-step1) (misalnya,**tutorial-bucket**).

1. Pilih **Hapus**.

1. Di halaman **Hapus bucket**, konfirmasikan bahwa Anda ingin menghapus bucket dengan memasukkan nama bucket ke dalam bidang teks, lalu pilih **Hapus bucket**.

### Hapus pengguna IAM
<a name="ol-upper-step8-delete-user"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi kiri, pilih **Pengguna**, lalu pilih kotak centang di sebelah nama pengguna yang ingin Anda hapus.

1. Pilih **Hapus** di bagian atas halaman.

1. Di **Hapus*user name*?** kotak dialog, masukkan nama pengguna di bidang input teks untuk mengonfirmasi penghapusan pengguna. Pilih **Hapus**.

## Langkah selanjutnya
<a name="ol-upper-next-steps"></a>

Setelah menyelesaikan tutorial ini, Anda dapat menyesuaikan fungsi Lambda untuk kasus penggunaan Anda untuk memodifikasi data yang dikembalikan oleh permintaan GET S3 standar.

Berikut ini adalah daftar kasus penggunaan umum untuk S3 Object Lambda:
+ Menyembunyikan data sensitif untuk keamanan dan kepatuhan.

  Untuk informasi selengkapnya, lihat [Tutorial: Mendeteksi dan menyunting data PII dengan Objek S3 Lambda dan Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md).
+ Memfilter baris data tertentu untuk memberikan informasi spesifik.
+ Menambah data dengan informasi dari layanan atau database lain.
+ Mengonversi seluruh format data, seperti mengonversi XHTML ke JSON untuk kompatibilitas aplikasi.
+ Mengompresi atau mendekompresi file saat sedang diunduh.
+ Mengubah ukuran dan menandai gambar.

  Untuk informasi lebih lanjut, lihat [Tutorial: Menggunakan S3 Object Lambda untuk menandai gambar secara dinamis](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/tutorial-s3-object-lambda-uppercase.html) saat diambil.
+ Menerapkan aturan otorisasi khusus untuk mengakses data.

Untuk informasi selengkapnya tentang S3 Lambda Objek, lihat [Mengubah objek dengan S3 Lambda Objek](transforming-objects.md).

# Tutorial: Mendeteksi dan menyunting data PII dengan Objek S3 Lambda dan Amazon Comprehend
<a name="tutorial-s3-object-lambda-redact-pii"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Saat Anda menggunakan Amazon S3 untuk kumpulan data bersama untuk beberapa aplikasi dan pengguna untuk mengakses, penting untuk membatasi informasi istimewa, seperti informasi identitas pribadi (PII), hanya untuk entitas yang berwenang. Misalnya, ketika aplikasi pemasaran menggunakan beberapa data yang mengandung PII, mungkin perlu terlebih dahulu menutupi data PII untuk memenuhi persyaratan privasi data. Juga, ketika aplikasi analitik menggunakan kumpulan data inventaris pesanan produksi, mungkin perlu terlebih dahulu menyunting informasi kartu kredit pelanggan untuk mencegah kebocoran data yang tidak diinginkan.

Dengan [S3 Object Lambda](https://aws.amazon.com/s3/features/object-lambda) dan fungsi AWS Lambda bawaan yang didukung oleh Amazon Comprehend, Anda dapat melindungi data PII yang diambil dari S3 sebelum mengembalikannya ke aplikasi. Secara khusus, Anda dapat menggunakan fungsi [Lambda bawaan sebagai fungsi penyuntingan](https://aws.amazon.com/lambda/) dan melampirkannya ke Titik Akses Lambda Objek S3. Ketika aplikasi (misalnya, aplikasi analitik) mengirimkan [permintaan GET S3 standar, permintaan](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) ini dibuat melalui Titik Akses Lambda Objek S3 memanggil fungsi Lambda penyuntingan bawaan untuk mendeteksi dan menyunting data PII yang diambil dari sumber data yang mendasarinya melalui jalur akses S3 pendukung. Kemudian, Titik Akses Lambda Objek S3 mengembalikan hasil yang disunting kembali ke aplikasi.

![\[Ini adalah diagram alur kerja Objek Lambda S3.\]](http://docs.aws.amazon.com/id_id/AmazonS3/latest/userguide/images/ol-comprehend-image-global.png)


Dalam prosesnya, fungsi Lambda bawaan menggunakan [Amazon Comprehend](https://aws.amazon.com/comprehend/), layanan pemrosesan bahasa alami (NLP), untuk menangkap variasi dalam bagaimana PII direpresentasikan, terlepas dari bagaimana PII ada dalam teks (seperti numerik atau sebagai kombinasi kata dan angka). Amazon Comprehend bahkan dapat menggunakan konteks dalam teks untuk mengetahui apakah angka 4 digit adalah PIN, empat angka terakhir dari nomor Jaminan Sosial (SSN), atau satu tahun. Amazon Comprehend memproses file teks apa pun dalam format UTF-8 dan dapat melindungi PII dalam skala besar tanpa memengaruhi akurasi. Untuk informasi selengkapnya, lihat [Apa itu Amazon Comprehend?](https://docs.aws.amazon.com/comprehend/latest/dg/what-is.html) di Panduan Pengembang *Amazon Comprehend*.

**Tujuan**  
Dalam tutorial ini, Anda belajar cara menggunakan S3 Object Lambda dengan fungsi Lambda prebuilt. `ComprehendPiiRedactionS3ObjectLambda` Fungsi ini menggunakan Amazon Comprehend untuk mendeteksi entitas PII. Kemudian menyunting entitas ini dengan menggantinya dengan tanda bintang. Dengan menyunting PII, Anda menyembunyikan data sensitif, yang dapat membantu keamanan dan kepatuhan.

Anda juga mempelajari cara menggunakan dan mengonfigurasi AWS Lambda fungsi bawaan [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/)untuk bekerja sama dengan S3 Object Lambda untuk penyebaran yang mudah. 

**Topics**
+ [

## Prasyarat: Buat pengguna IAM dengan izin
](#ol-pii-prerequisites)
+ [

## Langkah 1: Buat ember S3
](#ol-pii-step1)
+ [

## Langkah 2: Unggah file ke bucket S3
](#ol-pii-step2)
+ [

## Langkah 3: Buat titik akses S3
](#ol-pii-step3)
+ [

## Langkah 4: Konfigurasikan dan terapkan fungsi Lambda bawaan
](#ol-pii-step4)
+ [

## Langkah 5: Buat Titik Akses Lambda Objek S3
](#ol-pii-step5)
+ [

## Langkah 6: Gunakan S3 Object Lambda Access Point untuk mengambil file yang disunting
](#ol-pii-step6)
+ [

## Langkah 7: Bersihkan
](#ol-pii-step7)
+ [

## Langkah selanjutnya
](#ol-pii-next-steps)

## Prasyarat: Buat pengguna IAM dengan izin
<a name="ol-pii-prerequisites"></a>

Sebelum memulai tutorial ini, Anda harus memiliki AWS akun yang dapat Anda masuki sebagai AWS Identity and Access Management pengguna (pengguna IAM) dengan izin yang benar.

Anda dapat membuat pengguna IAM untuk tutorial. Untuk menyelesaikan tutorial ini, pengguna IAM Anda harus melampirkan kebijakan IAM berikut untuk mengakses AWS sumber daya yang relevan dan melakukan tindakan tertentu. 

**catatan**  
Untuk kesederhanaan, tutorial ini membuat dan menggunakan pengguna IAM. Setelah menyelesaikan tutorial ini, ingatlah untuk[Hapus pengguna IAM](#ol-pii-step8-delete-user). Untuk penggunaan produksi, kami menyarankan Anda mengikuti [praktik terbaik Keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam *Panduan Pengguna IAM*. Praktik terbaik mengharuskan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses AWS dengan kredensi sementara. Praktik terbaik lainnya adalah meminta beban kerja untuk menggunakan kredensil sementara dengan peran IAM untuk mengakses. AWS Untuk mempelajari cara menggunakan AWS IAM Identity Center untuk membuat pengguna dengan kredensial sementara, lihat [Memulai](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) di *AWS IAM Identity Center Panduan Pengguna*.   
Tutorial ini juga menggunakan kebijakan akses penuh. Untuk penggunaan produksi, sebaiknya Anda hanya memberikan izin minimum yang diperlukan untuk kasus penggunaan Anda, sesuai dengan [praktik terbaik keamanan](security-best-practices.md#security-best-practices-prevent).

Pengguna IAM Anda memerlukan kebijakan AWS terkelola berikut:
+ [AmazonS3 FullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor) - Memberikan izin untuk semua tindakan Amazon S3, termasuk izin untuk membuat dan menggunakan Titik Akses Lambda Objek. 
+ [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess$jsonEditor)— Memberikan izin untuk semua tindakan Lambda. 
+ [AWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AWSCloudFormationFullAccess$serviceLevelSummary)— Memberikan izin untuk semua AWS CloudFormation tindakan.
+ [IAMFullAkses](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMFullAccess$jsonEditor) - Memberikan izin untuk semua tindakan IAM. 
+ [IAMAccessAnalyzerReadOnlyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess$jsonEditor)— Memberikan izin untuk membaca semua informasi akses yang disediakan oleh IAM Access Analyzer. 

Anda dapat langsung melampirkan kebijakan yang ada saat membuat pengguna IAM. Untuk informasi selengkapnya tentang cara membuat pengguna IAM, lihat [Membuat pengguna IAM (konsol) di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) *IAM*.

Selain itu, pengguna IAM Anda memerlukan kebijakan yang dikelola pelanggan. Untuk memberikan izin pengguna IAM ke semua AWS Serverless Application Repository sumber daya dan tindakan, Anda harus membuat kebijakan IAM dan melampirkan kebijakan tersebut ke pengguna IAM.

**Untuk membuat dan melampirkan kebijakan IAM ke pengguna IAM Anda**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi di sebelah kiri, pilih **Kebijakan**.

1. Pilih **Buat kebijakan**. 

1. Pada tab **Editor visual**, untuk **Layanan**, pilih **Pilih layanan**. Kemudian, pilih **Serverless Application Repository**. 

1. Untuk **Tindakan**, di bawah **tindakan Manual**, pilih **Semua tindakan Repositori Aplikasi Tanpa Server (serverlessrepo: \$1) untuk tutorial** ini.

   Sebagai praktik keamanan terbaik, Anda harus mengizinkan izin hanya untuk tindakan dan sumber daya yang dibutuhkan pengguna, berdasarkan kasus penggunaan Anda. Untuk informasi selengkapnya, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) di *Panduan Pengguna IAM*.

1. Untuk **Sumber Daya**, pilih **Semua sumber daya** untuk tutorial ini.

   Sebagai praktik terbaik, Anda harus menentukan izin hanya untuk sumber daya tertentu di akun tertentu. Atau, Anda dapat memberikan hak istimewa paling sedikit menggunakan kunci kondisi. Untuk informasi selengkapnya, lihat [Berikan hak istimewa paling sedikit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) di *Panduan Pengguna IAM*.

1. Pilih **Berikutnya: Tanda**.

1. Pilih **Berikutnya: Tinjau**.

1. Pada halaman **Kebijakan ulasan**, masukkan **Nama** (misalnya,**tutorial-serverless-application-repository**) dan **Deskripsi** (opsional) untuk kebijakan yang Anda buat. Tinjau ringkasan kebijakan untuk memastikan bahwa Anda telah memberikan izin yang dimaksud, lalu pilih **Buat kebijakan** untuk menyimpan kebijakan baru Anda.

1. Pada panel navigasi kiri, pilih **Pengguna**. Kemudian, pilih pengguna IAM untuk tutorial ini. 

1. Pada halaman **Ringkasan** pengguna yang dipilih, pilih tab Izin, lalu pilih **Tambahkan **izin****.

1. Di bawah **Izin hibah**, pilih **Lampirkan kebijakan yang ada secara langsung**.

1. Pilih kotak centang di samping kebijakan yang baru saja Anda buat (misalnya,**tutorial-serverless-application-repository**) lalu pilih **Berikutnya: Tinjau**. 

1. Di bawah **ringkasan Izin**, tinjau ringkasan untuk memastikan bahwa Anda melampirkan kebijakan yang dimaksud. Kemudian, pilih **Tambahkan izin**.

## Langkah 1: Buat ember S3
<a name="ol-pii-step1"></a>

Buat bucket untuk menyimpan data asli yang Anda rencanakan untuk diubah. 

**catatan**  
Titik akses dapat dilampirkan untuk sumber data lain, seperti Amazon FSx untuk volume OpenZFS, namun tutorial ini menggunakan titik akses pendukung yang terpasang pada bucket S3.

**Untuk membuat bucket**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket**.

1. Pilih **Buat bucket**. 

   Halaman **Buat bucket** terbuka.

1. Untuk **nama Bucket**, masukkan nama (misalnya,**tutorial-bucket**) untuk bucket Anda. 

   Untuk informasi selengkapnya tentang penamaan bucket di Amazon S3, lihat. [Aturan penamaan bucket tujuan umum](bucketnamingrules.md)

1. Untuk **Wilayah**, pilih Wilayah AWS tempat Anda ingin bucket berada. 

   Untuk informasi selengkapnya tentang Wilayah bucket, lihat[Ikhtisar bucket tujuan umum](UsingBucket.md).

1. Untuk **pengaturan Blokir Akses Publik untuk bucket ini**, pertahankan pengaturan default (**Blokir *semua* akses publik** diaktifkan). 

   Kami menyarankan agar Anda tetap mengaktifkan semua pengaturan Blokir Akses Publik kecuali Anda perlu menonaktifkan satu atau beberapa pengaturan tersebut untuk kasus penggunaan Anda. Untuk informasi lebih lanjut tentang pemblokiran akses publik, lihat [Melakukan blok akses publik ke penyimpanan Amazon S3 Anda](access-control-block-public-access.md).

1. Untuk pengaturan yang tersisa, pertahankan default. 

   (Opsional) Jika Anda ingin mengonfigurasi pengaturan bucket tambahan untuk kasus penggunaan spesifik Anda, lihat[Membuat bucket tujuan umum](create-bucket-overview.md).

1. Pilih **Buat bucket**.

## Langkah 2: Unggah file ke bucket S3
<a name="ol-pii-step2"></a>

Unggah file teks yang berisi data PII yang dikenal dari berbagai jenis, seperti nama, informasi perbankan, nomor telepon, dan SSNs, ke bucket S3 sebagai data asli yang akan Anda edit PII nanti dalam tutorial ini. 

Misalnya, Anda dapat mengunggah `tutorial.txt` file berikut. Ini adalah contoh file input dari Amazon Comprehend.

```
Hello Zhang Wei, I am John. Your AnyCompany Financial Services, 
LLC credit card account 1111-0000-1111-0008 has a minimum payment 
of $24.53 that is due by July 31st. Based on your autopay settings, 
we will withdraw your payment on the due date from your 
bank account number XXXXXX1111 with the routing number XXXXX0000. 

Your latest statement was mailed to 100 Main Street, Any City, 
WA 98121. 
After your payment is received, you will receive a confirmation 
text message at 206-555-0100. 
If you have questions about your bill, AnyCompany Customer Service 
is available by phone at 206-555-0199 or 
email at support@anycompany.com.
```

**Untuk mengunggah file ke ember**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket**.

1. Dalam daftar **Bucket**, pilih nama bucket yang Anda buat di [Langkah 1](#ol-pii-step1) (misalnya,**tutorial-bucket**) untuk mengunggah file Anda.

1. Di tab **Objek** untuk bucket Anda, pilih **Unggah**.

1. Pada halaman **Unggah**, di bawah **File dan folder**, pilih **Tambahkan file**.

1. Pilih file yang akan diunggah, lalu pilih **Buka.** Misalnya, Anda dapat mengunggah contoh `tutorial.txt` file yang disebutkan sebelumnya.

1. Pilih **Unggah**.

## Langkah 3: Buat titik akses S3
<a name="ol-pii-step3"></a>

[Untuk menggunakan Titik Akses Lambda Objek S3 untuk mengakses dan mengubah data asli, Anda harus membuat titik akses S3 dan mengaitkannya dengan bucket S3 yang Anda buat di Langkah 1.](#ol-pii-step1) Titik akses harus Wilayah AWS sama dengan objek yang ingin Anda ubah.

Kemudian dalam tutorial ini, Anda akan menggunakan titik akses ini sebagai titik akses pendukung untuk Object Lambda Access Point Anda. 

**Untuk membuat titik akses**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Pada panel navigasi di kiri, pilih **Titik Akses**.

1. Pada halaman **Titik Akses**, pilih **Buat titik akses**.

1. Di bidang **Nama titik akses**, masukkan nama (misalnya,**tutorial-pii-access-point**) untuk titik akses.

   Untuk informasi lebih lanjut tentang penamaan titik akses, lihat [Aturan penamaan untuk titik akses](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. Di bidang **Sumber data**, masukkan nama bucket yang Anda buat di [Langkah 1](#ol-pii-step1) (misalnya,**tutorial-bucket**). S3 melampirkan titik akses ke bucket ini. 

   (Opsional) Anda dapat memilih **Browse S3** untuk menelusuri dan mencari bucket di akun Anda. Jika Anda memilih **Browse S3**, pilih bucket yang diinginkan, lalu pilih **Pilih jalur** untuk mengisi bidang **nama Bucket** dengan nama bucket tersebut.

1. Untuk **asal Jaringan**, pilih **Internet**. 

   Untuk informasi lebih lanjut tentang asal jaringan untuk titik akses, lihat [Membuat titik akses terbatas pada cloud privat virtual](access-points-vpc.md).

1. Secara default, semua pengaturan akses publik blok diaktifkan untuk titik akses Anda. Kami menyarankan agar Anda tetap mengaktifkan **Blokir *semua* akses publik**. Untuk informasi selengkapnya, lihat [Mengelola akses publik ke titik akses untuk ember tujuan umum](access-points-bpa-settings.md).

1. Untuk semua pengaturan titik akses lainnya, pertahankan pengaturan default.

   (Opsional) Anda dapat mengubah pengaturan titik akses untuk mendukung kasus penggunaan Anda. Untuk tutorial ini, kami sarankan untuk menjaga pengaturan default. 

   (Opsional) Jika Anda perlu mengelola akses ke titik akses Anda, Anda dapat menentukan kebijakan titik akses. Untuk informasi selengkapnya, lihat [Contoh kebijakan untuk titik akses](access-points-policies.md#access-points-policy-examples). 

1. Pilih **Buat titik akses**.

## Langkah 4: Konfigurasikan dan terapkan fungsi Lambda bawaan
<a name="ol-pii-step4"></a>

Untuk menyunting data PII, konfigurasikan dan terapkan AWS Lambda fungsi bawaan `ComprehendPiiRedactionS3ObjectLambda` untuk digunakan dengan Titik Akses Lambda Objek S3 Anda.

**Untuk mengkonfigurasi dan menyebarkan fungsi Lambda**

1. Masuk ke Konsol Manajemen AWS dan lihat [https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiRedactionS3ObjectLambda](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiRedactionS3ObjectLambda)fungsi di AWS Serverless Application Repository.

1. Untuk **pengaturan Aplikasi**, di bawah **Nama aplikasi**, pertahankan nilai default (`ComprehendPiiRedactionS3ObjectLambda`) untuk tutorial ini.

   (Opsional) Anda dapat memasukkan nama yang ingin Anda berikan ke aplikasi ini. Anda mungkin ingin melakukan ini jika Anda berencana untuk mengonfigurasi beberapa fungsi Lambda untuk kebutuhan akses yang berbeda untuk kumpulan data bersama yang sama.

1. Untuk **MaskCharacter**, pertahankan nilai default (`*`). Karakter topeng menggantikan setiap karakter dalam entitas PII yang disunting. 

1. Untuk **MaskMode**, pertahankan nilai default (**MASK**). **MaskMode**Nilai menentukan apakah entitas PII disunting dengan `MASK` karakter atau nilai. `PII_ENTITY_TYPE`

1. Untuk menyunting tipe data yang ditentukan, untuk **PiiEntityTypes**, pertahankan nilai default **SEMUA**. **PiiEntityTypes**Nilai menentukan jenis entitas PII yang akan dipertimbangkan untuk redaksi. 

   *Untuk informasi selengkapnya tentang daftar jenis entitas PII yang didukung, lihat [Mendeteksi Informasi Identifikasi Pribadi (PII)](https://docs.aws.amazon.com/comprehend/latest/dg/how-pii.html) di Panduan Pengembang Amazon Comprehend.*

1. Pertahankan pengaturan yang tersisa disetel ke default.

   (Opsional) Jika Anda ingin mengonfigurasi pengaturan tambahan untuk kasus penggunaan spesifik Anda, lihat bagian **File Readme** di sisi kiri halaman.

1. Pilih kotak centang di sebelah **Saya mengakui bahwa aplikasi ini membuat peran IAM khusus**.

1. Pilih **Deploy**.

1. Pada halaman aplikasi baru, di bawah **Resources**, pilih **ID Logis** dari fungsi Lambda yang Anda gunakan untuk meninjau fungsi pada halaman fungsi Lambda.

## Langkah 5: Buat Titik Akses Lambda Objek S3
<a name="ol-pii-step5"></a>

Titik Akses Lambda Objek S3 memberikan fleksibilitas untuk menjalankan fungsi Lambda langsung dari permintaan S3 GET sehingga fungsi tersebut dapat menyunting data PII yang diambil dari titik akses S3. Saat membuat dan mengonfigurasi Titik Akses Lambda Objek S3, Anda harus menentukan fungsi Lambda penyuntingan untuk memanggil dan menyediakan konteks acara dalam format JSON sebagai parameter khusus untuk digunakan Lambda. 

Konteks acara memberikan informasi tentang permintaan yang dibuat dalam acara yang diteruskan dari S3 Object Lambda ke Lambda. Untuk informasi selengkapnya tentang semua bidang dalam konteks acara, lihat[Format konteks peristiwa dan penggunaan](olap-event-context.md).

**Untuk membuat Objek S3 Lambda Access Point**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Pada halaman **Titik Akses Lambda Objek**, pilih **Buat Titik Akses Lambda Objek**.

1. Untuk **nama Object Lambda Access Point**, masukkan nama yang ingin Anda gunakan untuk Object Lambda Access Point (misalnya,). **tutorial-pii-object-lambda-accesspoint** 

1. Untuk **Mendukung Titik Akses**, masukkan atau telusuri ke titik akses standar yang Anda buat di [Langkah 3](#ol-pii-step3) (misalnya,**tutorial-pii-access-point**), lalu pilih **Pilih Titik Akses pendukung**. 

1. Untuk **S3 APIs**, untuk mengambil objek dari bucket S3 agar fungsi Lambda dapat diproses, pilih. **GetObject**

1. Untuk fungsi **Invoke Lambda**, Anda dapat memilih salah satu dari dua opsi berikut untuk tutorial ini. 
   + Pilih **Pilih dari fungsi di akun Anda** dan pilih fungsi Lambda yang Anda gunakan di [Langkah 4](#ol-pii-step4) (misalnya,**serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**) dari daftar dropdown fungsi **Lambda**.
   + [Pilih **Masukkan ARN**, lalu masukkan Nama Sumber Daya Amazon (ARN) dari fungsi Lambda yang Anda buat di Langkah 4.](#ol-pii-step4)

1. [Untuk **versi fungsi Lambda**, pilih **\$1LATEST** (versi terbaru dari fungsi Lambda yang Anda gunakan di Langkah 4).](#ol-pii-step4)

1. (Opsional) Jika Anda memerlukan fungsi Lambda Anda untuk mengenali dan memproses permintaan GET dengan header rentang dan nomor bagian, pilih Fungsi **Lambda mendukung permintaan menggunakan rentang dan fungsi **Lambda** mendukung permintaan menggunakan** nomor bagian. Jika tidak, kosongkan dua kotak centang ini.

   Untuk informasi selengkapnya tentang cara menggunakan nomor rentang atau bagian dengan S3 Object Lambda, lihat. [Bekerja dengan header Range dan partNumber](range-get-olap.md)

1. (Opsional) Di bawah **Payload - *opsional***, tambahkan teks JSON untuk menyediakan fungsi Lambda Anda dengan informasi tambahan.

   Payload adalah teks JSON opsional yang dapat Anda berikan ke fungsi Lambda Anda sebagai masukan untuk semua pemanggilan yang berasal dari Titik Akses Lambda Objek S3 tertentu. Untuk menyesuaikan perilaku untuk beberapa Titik Akses Lambda Objek yang menjalankan fungsi Lambda yang sama, Anda dapat mengonfigurasi muatan dengan parameter yang berbeda, sehingga memperluas fleksibilitas fungsi Lambda Anda.

   Untuk informasi selengkapnya tentang payload, lihat[Format konteks peristiwa dan penggunaan](olap-event-context.md).

1. (Opsional) Untuk **metrik Permintaan - *opsional***, pilih **Nonaktifkan** atau **Aktifkan** untuk menambahkan pemantauan Amazon S3 ke Titik Akses Lambda Objek Anda. Metrik permintaan ditagih dengan tarif Amazon CloudWatch standar. Untuk informasi selengkapnya, lihat [harga CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

1. Di bawah **kebijakan Titik Akses Objek Lambda - *opsional***, pertahankan pengaturan default. 

   (Opsional) Anda dapat menetapkan kebijakan sumber daya. Kebijakan resource ini memberikan izin `GetObject` API untuk menggunakan Object Lambda Access Point yang ditentukan.

1. Pertahankan pengaturan yang tersisa disetel ke default, dan pilih Buat **Objek Lambda** Access Point.

## Langkah 6: Gunakan S3 Object Lambda Access Point untuk mengambil file yang disunting
<a name="ol-pii-step6"></a>

Sekarang, S3 Object Lambda siap untuk menyunting data PII dari file asli Anda. 

**Untuk menggunakan S3 Object Lambda Access Point untuk mengambil file yang disunting**

Saat Anda meminta untuk mengambil file melalui Titik Akses Lambda Objek S3, Anda membuat panggilan `GetObject` API ke S3 Object Lambda. S3 Object Lambda memanggil fungsi Lambda untuk menyunting data PII Anda dan mengembalikan data yang diubah sebagai respons terhadap panggilan API S3 standar. `GetObject`

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Pada halaman **Titik Akses Objek Lambda, pilih Titik Akses** Lambda Objek S3 yang Anda buat di [Langkah 5](#ol-pii-step5) (misalnya,). **tutorial-pii-object-lambda-accesspoint**

1. [Pada tab **Objek** pada Titik Akses Lambda Objek S3 Anda, pilih file yang memiliki nama yang sama (misalnya`tutorial.txt`,) dengan file yang Anda unggah ke bucket S3 di Langkah 2.](#ol-pii-step2) 

   File ini harus berisi semua data yang diubah.

1. Untuk melihat data yang diubah, pilih **Buka** atau **Unduh**.

    Anda harus dapat melihat file yang disunting, seperti yang ditunjukkan pada contoh berikut. 

   ```
   Hello *********. Your AnyCompany Financial Services, 
   LLC credit card account ******************* has a minimum payment 
   of $24.53 that is due by *********. Based on your autopay settings, 
   we will withdraw your payment on the due date from your 
   bank account ********** with the routing number *********. 
   
   Your latest statement was mailed to **********************************. 
   After your payment is received, you will receive a confirmation 
   text message at ************. 
   If you have questions about your bill, AnyCompany Customer Service 
   is available by phone at ************ or 
   email at **********************.
   ```

## Langkah 7: Bersihkan
<a name="ol-pii-step7"></a>

Jika Anda menyunting data Anda melalui S3 Object Lambda hanya sebagai latihan pembelajaran, hapus AWS sumber daya yang Anda alokasikan sehingga Anda tidak lagi dikenakan biaya. 

**Topics**
+ [

### Hapus Titik Akses Objek Lambda
](#ol-pii-step8-delete-olap)
+ [

### Hapus titik akses S3
](#ol-pii-step8-delete-ap)
+ [

### Hapus fungsi Lambda
](#ol-pii-step8-delete-lambda-function)
+ [

### Hapus grup CloudWatch log
](#ol-pii-step8-delete-cloudwatch)
+ [

### Hapus file asli di bucket sumber S3
](#ol-pii-step8-delete-file)
+ [

### Hapus bucket sumber S3
](#ol-pii-step8-delete-bucket)
+ [

### Hapus peran IAM untuk fungsi Lambda Anda
](#ol-pii-step8-delete-lambda-role)
+ [

### Menghapus kebijakan terkelola pelanggan untuk pengguna IAM Anda
](#ol-pii-step8-delete-function-policy)
+ [

### Hapus pengguna IAM
](#ol-pii-step8-delete-user)

### Hapus Titik Akses Objek Lambda
<a name="ol-pii-step8-delete-olap"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi sebelah kiri, pilih **Titik Akses Lambda Objek**.

1. Pada halaman **Titik Akses Objek Lambda**, pilih tombol opsi di sebelah kiri Titik Akses Lambda Objek S3 yang Anda buat di [Langkah 5](#ol-pii-step5) (misalnya,). **tutorial-pii-object-lambda-accesspoint**

1. Pilih **Hapus**.

1. **Konfirmasikan bahwa Anda ingin menghapus Titik Akses Objek Lambda Anda dengan memasukkan namanya di bidang teks yang muncul, lalu pilih Hapus.**

### Hapus titik akses S3
<a name="ol-pii-step8-delete-ap"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Pada panel navigasi di kiri, pilih **Titik Akses**.

1. Arahkan ke titik akses yang Anda buat di [Langkah 3](#ol-pii-step3) (misalnya,**tutorial-pii-access-point**), dan pilih tombol opsi di sebelah nama titik akses.

1. Pilih **Hapus**.

1. Konfirmasikan bahwa Anda ingin menghapus jalur akses Anda dengan memasukkan namanya di bidang teks yang muncul, lalu pilih **Hapus**.

### Hapus fungsi Lambda
<a name="ol-pii-step8-delete-lambda-function"></a>

1. Di AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), pilih **Fungsi** di panel navigasi kiri. 

1. Pilih fungsi yang Anda buat di [Langkah 4](#ol-pii-step4) (misalnya,**serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**).

1. Pilih **Tindakan**, lalu pilih **Hapus**.

1. Di kotak dialog **Hapus fungsi**, pilih **Hapus**.

### Hapus grup CloudWatch log
<a name="ol-pii-step8-delete-cloudwatch"></a>

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

1. Pada panel navigasi kiri, pilih **Grup log**.

1. Temukan grup log yang namanya diakhiri dengan fungsi Lambda yang Anda buat di [Langkah 4](#ol-pii-step4) (misalnya,**serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**).

1. Pilih **Tindakan**, lalu pilih **Hapus grup log**.

1. Di kotak dialog **Hapus grup log**, pilih **Hapus**.

### Hapus file asli di bucket sumber S3
<a name="ol-pii-step8-delete-file"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket**.

1. Dalam daftar **nama Bucket**, pilih nama bucket tempat Anda mengunggah file asli di [Langkah 2](#ol-pii-step2) (misalnya,**tutorial-bucket**).

1. Pilih kotak centang di sebelah kiri nama objek yang ingin Anda hapus (misalnya,`tutorial.txt`).

1. Pilih **Hapus**.

1. Pada halaman **Hapus objek**, di **objek Hapus secara permanen?** bagian, konfirmasikan bahwa Anda ingin menghapus objek ini dengan memasukkan **permanently delete** di kotak teks.

1. Pilih **Hapus objek**.

### Hapus bucket sumber S3
<a name="ol-pii-step8-delete-bucket"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket**.

1. Dalam daftar **Bucket**, pilih tombol opsi di sebelah nama bucket yang Anda buat di [Langkah 1](#ol-pii-step1) (misalnya,**tutorial-bucket**).

1. Pilih **Hapus**.

1. Di halaman **Hapus bucket**, konfirmasikan bahwa Anda ingin menghapus bucket dengan memasukkan nama bucket ke dalam bidang teks, lalu pilih **Hapus bucket**.

### Hapus peran IAM untuk fungsi Lambda Anda
<a name="ol-pii-step8-delete-lambda-role"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi kiri, pilih **Peran**, lalu pilih kotak centang di samping nama peran yang ingin Anda hapus. Nama peran dimulai dengan nama fungsi Lambda yang Anda gunakan di [Langkah 4](#ol-pii-step4) (misalnya,). **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**

1. Pilih **Hapus**.

1. Di kotak dialog **Hapus**, masukkan nama peran di bidang input teks untuk mengonfirmasi penghapusan. Lalu, pilih **Hapus**.

### Menghapus kebijakan terkelola pelanggan untuk pengguna IAM Anda
<a name="ol-pii-step8-delete-function-policy"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi di sebelah kiri, pilih **Kebijakan**.

1. Pada halaman **Kebijakan**, masukkan nama kebijakan terkelola pelanggan yang Anda buat di [Prasyarat](#ol-pii-prerequisites) (misalnya,**tutorial-serverless-application-repository**) di kotak pencarian untuk memfilter daftar kebijakan. Pilih tombol opsi di sebelah nama kebijakan yang ingin Anda hapus.

1. Pilih **Tindakan**, lalu pilih **Hapus**.

1. Konfirmasikan bahwa Anda ingin menghapus kebijakan ini dengan memasukkan namanya di bidang teks yang muncul, lalu pilih **Hapus**.

### Hapus pengguna IAM
<a name="ol-pii-step8-delete-user"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi kiri, pilih **Pengguna**, lalu pilih kotak centang di sebelah nama pengguna yang ingin Anda hapus.

1. Pilih **Hapus** di bagian atas halaman.

1. Di **Hapus*user name*?** kotak dialog, masukkan nama pengguna di bidang input teks untuk mengonfirmasi penghapusan pengguna. Pilih **Hapus**.

## Langkah selanjutnya
<a name="ol-pii-next-steps"></a>

Setelah menyelesaikan tutorial ini, Anda dapat menjelajahi lebih lanjut kasus penggunaan terkait berikut:
+ Anda dapat membuat beberapa Titik Akses Lambda Objek S3 dan mengaktifkannya dengan fungsi Lambda bawaan yang dikonfigurasi secara berbeda untuk menyunting jenis PII tertentu tergantung pada kebutuhan bisnis aksesori data. 

  Setiap jenis pengguna mengasumsikan peran IAM dan hanya memiliki akses ke satu Titik Akses Lambda Objek S3 (dikelola melalui kebijakan IAM). Kemudian, Anda melampirkan setiap fungsi `ComprehendPiiRedactionS3ObjectLambda` Lambda yang dikonfigurasi untuk kasus penggunaan redaksi yang berbeda ke Titik Akses Lambda Objek S3 yang berbeda. Untuk setiap Titik Akses Lambda Objek S3, Anda dapat memiliki jalur akses S3 pendukung untuk membaca data dari bucket S3 yang menyimpan kumpulan data bersama. 

  Untuk informasi selengkapnya tentang cara membuat kebijakan bucket S3 yang memungkinkan pengguna membaca dari bucket hanya melalui jalur akses S3, lihat. [Mengonfigurasi kebijakan IAM untuk menggunakan titik akses](access-points-policies.md)

  Untuk informasi selengkapnya tentang cara memberikan izin pengguna untuk mengakses fungsi Lambda, titik akses S3, dan Titik Akses Lambda Objek S3, lihat. [Mengonfigurasi kebijakan IAM untuk Titik Akses Lambda Objek](olap-policies.md)
+ Anda dapat membangun fungsi Lambda Anda sendiri dan menggunakan S3 Object Lambda dengan fungsi Lambda yang disesuaikan untuk memenuhi kebutuhan data spesifik Anda.

  Misalnya, untuk menjelajahi berbagai nilai data, Anda dapat menggunakan Lambda Objek S3 dan fungsi Lambda Anda sendiri yang menggunakan fitur Amazon [Comprehend tambahan, seperti pengenalan entitas, pengenalan frasa kunci, analisis sentimen](https://aws.amazon.com/comprehend/features/), dan klasifikasi dokumen, untuk memproses data. Anda juga dapat menggunakan S3 Object Lambda bersama [dengan Amazon Comprehend Medical](https://aws.amazon.com/comprehend/medical/), layanan NLP yang memenuhi syarat HIPAA, untuk menganalisis dan mengekstrak data dengan cara yang sadar konteks.

  Untuk informasi selengkapnya tentang cara mengubah data dengan S3 Object Lambda dan fungsi Lambda Anda sendiri, lihat. [Tutorial: Mengubah data untuk aplikasi Anda dengan S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)

# Debugging dan pemecahan masalah S3 Object Lambda
<a name="olap-debugging-lambda"></a>

**catatan**  
Per 7 November 2025, S3 Object Lambda hanya tersedia untuk pelanggan lama yang saat ini menggunakan layanan serta untuk memilih AWS mitra Partner Network (APN). Untuk kemampuan yang mirip dengan S3 Object Lambda, pelajari lebih lanjut di sini - Perubahan ketersediaan [Objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html) Lambda.

Permintaan ke titik akses Lambda Objek Amazon S3 mungkin menghasilkan respons kesalahan baru ketika terjadi kesalahan dengan invokasi atau eksekusi fungsi Lambda. Kesalahan ini mengikuti format yang sama dengan kesalahan standar Amazon S3. Untuk informasi tentang kesalahan S3 Lambda Objek, lihat [Daftar Kode Kesalahan S3 Lambda Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3ObjectLambdaErrorCodeList) DALAM *Referensi API Amazon Simple Storage Service*.

Untuk informasi selengkapnya tentang fungsi Lambda umum debugging, lihat [Pemantauan dan pemecahan masalah aplikasi](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html ) DALAM *Panduan Pengembang AWS Lambda *.

Untuk informasi tentang kesalahan Amazon S3 standar, lihat [Respons kesalahan](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) dalam *Referensi API Layanan Amazon Simple Storage Service*.

Anda dapat mengaktifkan metrik permintaan di Amazon CloudWatch untuk Titik Akses Objek Lambda Anda. Metrik ini membantu Anda untuk memantau performa operasional titik akses Anda. Anda dapat mengaktifkan metrik permintaan selama, atau setelah pembuatan Titik Akses Lambda Objek. Untuk informasi selengkapnya, lihat [Metrik permintaan Lambda Objek S3 di CloudWatch](metrics-dimensions.md#olap-cloudwatch-metrics).

Untuk mendapatkan pencatatan log yang lebih terperinci tentang permintaan yang dibuat ke Titik Akses Lambda Objek Anda, Anda dapat mengaktifkan AWS CloudTrail peristiwa data. Untuk informasi lebih lanjut, lihat [Peristiwa Pencatatan Data untuk Pelacakan](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) dalam *AWS CloudTrail Panduan Pengguna*.

Untuk tutorial S3 Lambda Objek, lihat hal berikut ini:
+ [Tutorial: Mengubah data untuk aplikasi Anda dengan S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)
+ [Tutorial: Mendeteksi dan menyunting data PII dengan Objek S3 Lambda dan Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)
+ [Tutorial: Menggunakan S3 Lambda Objek untuk menandai gambar secara dinamis saat gambarnya diambil](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/transforming-objects.html)

Untuk informasi lebih lanjut tentang titik akses standar, lihat [Mengelola akses ke kumpulan data bersama dengan titik akses](access-points.md). 

Untuk informasi tentang bekerja dengan bucket, lihat [Ikhtisar bucket tujuan umum](UsingBucket.md). Untuk informasi tentang bekerja dengan objek, lihat [Gambaran umum objek Amazon S3](UsingObjects.md).