

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

# Tutorial: Menggunakan pemicu Amazon S3 untuk memanggil fungsi Lambda
<a name="with-s3-example"></a>

Dalam tutorial ini, Anda menggunakan konsol untuk membuat fungsi Lambda dan mengonfigurasi pemicu untuk bucket Amazon Simple Storage Service (Amazon S3). Setiap kali Anda menambahkan objek ke bucket Amazon S3, fungsi Anda berjalan dan mengeluarkan jenis objek ke Amazon Logs. CloudWatch 

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3_tut_config.png)


Tutorial ini menunjukkan bagaimana untuk:

1. Buat bucket Amazon S3.

1. Buat fungsi Lambda yang mengembalikan jenis objek objek dalam bucket Amazon S3.

1. Konfigurasikan pemicu Lambda yang memanggil fungsi Anda saat objek diunggah ke bucket Anda.

1. Uji fungsi Anda, pertama dengan acara dummy, dan kemudian gunakan pelatuknya.

Dengan menyelesaikan langkah-langkah ini, Anda akan mempelajari cara mengonfigurasi fungsi Lambda agar berjalan setiap kali objek ditambahkan atau dihapus dari bucket Amazon S3. Anda dapat menyelesaikan tutorial ini hanya dengan menggunakan Konsol Manajemen AWS.

## Buat bucket Amazon S3.
<a name="with-s3-example-create-bucket"></a>

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3trigger_tut_steps1.png)


**Untuk membuat bucket Amazon S3**

1. Buka [konsol Amazon S3](https://console.aws.amazon.com/s3) dan pilih halaman **Bucket tujuan umum**.

1. Pilih yang Wilayah AWS paling dekat dengan lokasi geografis Anda. Anda dapat mengubah wilayah Anda menggunakan daftar drop-down di bagian atas layar. Kemudian dalam tutorial, Anda harus membuat fungsi Lambda Anda di Wilayah yang sama.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/console_region_select.png)

1. Pilih **Buat bucket**.

1. Pada **Konfigurasi umum**, lakukan hal berikut:

   1. Untuk **jenis Bucket**, pastikan **Tujuan umum** dipilih.

   1. Untuk **nama Bucket**, masukkan nama unik global yang memenuhi aturan [penamaan Amazon S3 Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). Nama bucket hanya dapat berisi huruf kecil, angka, titik (.), dan tanda hubung (-).

1. Biarkan semua opsi lain disetel ke nilai defaultnya dan pilih **Buat bucket**.

## Unggah objek uji ke bucket Anda
<a name="with-s3-example-upload-test-object"></a>

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3trigger_tut_steps2.png)


**Untuk mengunggah objek uji**

1. Buka halaman [Bucket di](https://console.aws.amazon.com/s3/buckets) konsol Amazon S3 dan pilih bucket yang Anda buat selama langkah sebelumnya.

1. Pilih **Unggah**.

1. Pilih **Tambahkan file** dan pilih objek yang ingin Anda unggah. Anda dapat memilih file apa saja (misalnya,`HappyFace.jpg`).

1. Pilih **Buka**, lalu pilih **Unggah**.

Kemudian dalam tutorial, Anda akan menguji fungsi Lambda Anda menggunakan objek ini.

## Membuat kebijakan izin
<a name="with-s3-example-create-policy"></a>

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3trigger_tut_steps3.png)


Buat kebijakan izin yang memungkinkan Lambda mendapatkan objek dari bucket Amazon S3 dan menulis ke Amazon Log. CloudWatch 

**Untuk membuat kebijakan**

1. Buka [halaman Kebijakan](https://console.aws.amazon.com/iam/home#/policies) konsol IAM.

1. Pilih **Buat Kebijakan**.

1. Pilih tab **JSON**, lalu tempelkan kebijakan khusus berikut ke editor JSON.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents",
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream"
               ],
               "Resource": "arn:aws:logs:*:*:*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": "arn:aws:s3:::*/*"
           }
       ]
   }
   ```

------

1. Pilih **Berikutnya: Tanda**.

1. Pilih **Berikutnya: Tinjau**.

1. Di bawah **Kebijakan peninjauan**, untuk **Nama** kebijakan, masukkan**s3-trigger-tutorial**.

1. Pilih **Buat kebijakan**.

## Membuat peran eksekusi
<a name="with-s3-example-create-role"></a>

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3trigger_tut_steps4.png)


Peran [eksekusi adalah peran](lambda-intro-execution-role.md) AWS Identity and Access Management (IAM) yang memberikan izin fungsi Lambda untuk mengakses dan sumber daya. Layanan AWS Pada langkah ini, buat peran eksekusi menggunakan kebijakan izin yang Anda buat di langkah sebelumnya.

**Untuk membuat peran eksekusi dan melampirkan kebijakan izin kustom**

1. Buka [halaman Peran](https://console.aws.amazon.com/iam/home#/roles) dari konsol IAM.

1. Pilih **Buat peran**.

1. Untuk jenis entitas tepercaya, pilih **AWS layanan**, lalu untuk kasus penggunaan, pilih **Lambda**.

1. Pilih **Berikutnya**.

1. Dalam kotak pencarian kebijakan, masukkan **s3-trigger-tutorial**.

1. Di hasil penelusuran, pilih kebijakan yang Anda buat (`s3-trigger-tutorial`), lalu pilih **Berikutnya**.

1. Di bawah **Rincian peran**, untuk **nama Peran**, masukkan**lambda-s3-trigger-role**, lalu pilih **Buat peran**.

## Buat fungsi Lambda
<a name="with-s3-example-create-function"></a>

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3trigger_tut_steps5.png)


Buat fungsi Lambda di konsol menggunakan runtime Python 3.14.

**Untuk membuat fungsi Lambda**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pastikan Anda bekerja di tempat yang sama dengan saat Wilayah AWS Anda membuat bucket Amazon S3. Anda dapat mengubah Wilayah Anda menggunakan daftar drop-down di bagian atas layar.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/console_region_select.png)

1. Pilih **Buat fungsi**.

1. Pilih **Penulis dari awal**

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

   1. Untuk **nama Fungsi**, masukkan `s3-trigger-tutorial`

   1. Untuk **Runtime**, pilih **Python 3.14**.

   1. Untuk **Arsitektur**, pilih **x86\$164**.

1. Di tab **Ubah peran eksekusi default**, lakukan hal berikut:

   1. Perluas tab, lalu pilih **Gunakan peran yang ada**.

   1. Pilih yang `lambda-s3-trigger-role` Anda buat sebelumnya.

1. Pilih **Buat fungsi**.

## Menyebarkan kode fungsi
<a name="with-s3-example-deploy-code"></a>

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3trigger_tut_steps6.png)


Tutorial ini menggunakan runtime Python 3.14, tetapi kami juga menyediakan contoh file kode untuk runtime lainnya. Anda dapat memilih tab di kotak berikut untuk melihat kode runtime yang Anda minati.

Fungsi Lambda mengambil nama kunci objek yang diunggah dan nama bucket dari `event` parameter yang diterimanya dari Amazon S3. Fungsi kemudian menggunakan metode [get\$1object](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/get_object.html) dari AWS SDK untuk Python (Boto3) untuk mengambil metadata objek, termasuk tipe konten (tipe MIME) dari objek yang diunggah.

**Untuk menyebarkan kode fungsi**

1. Pilih tab **Python** di kotak berikut dan salin kodenya.

------
#### [ .NET ]

**SDK untuk .NET**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-s3-to-lambda). 
Menggunakan peristiwa S3 dengan Lambda menggunakan.NET.  

   ```
   // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   // SPDX-License-Identifier: Apache-2.0
   ﻿using System.Threading.Tasks;
   using Amazon.Lambda.Core;
   using Amazon.S3;
   using System;
   using Amazon.Lambda.S3Events;
   using System.Web;
   
   // Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
   [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
   
   namespace S3Integration
   {
       public class Function
       {
           private static AmazonS3Client _s3Client;
           public Function() : this(null)
           {
           }
   
           internal Function(AmazonS3Client s3Client)
           {
               _s3Client = s3Client ?? new AmazonS3Client();
           }
   
           public async Task<string> Handler(S3Event evt, ILambdaContext context)
           {
               try
               {
                   if (evt.Records.Count <= 0)
                   {
                       context.Logger.LogLine("Empty S3 Event received");
                       return string.Empty;
                   }
   
                   var bucket = evt.Records[0].S3.Bucket.Name;
                   var key = HttpUtility.UrlDecode(evt.Records[0].S3.Object.Key);
   
                   context.Logger.LogLine($"Request is for {bucket} and {key}");
   
                   var objectResult = await _s3Client.GetObjectAsync(bucket, key);
   
                   context.Logger.LogLine($"Returning {objectResult.Key}");
   
                   return objectResult.Key;
               }
               catch (Exception e)
               {
                   context.Logger.LogLine($"Error processing request - {e.Message}");
   
                   return string.Empty;
               }
           }
       }
   }
   ```

------
#### [ Go ]

**SDK untuk Go V2**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-s3-to-lambda). 
Menggunakan peristiwa S3 dengan Lambda menggunakan Go.  

   ```
   // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   // SPDX-License-Identifier: Apache-2.0
   package main
   
   import (
   	"context"
   	"log"
   
   	"github.com/aws/aws-lambda-go/events"
   	"github.com/aws/aws-lambda-go/lambda"
   	"github.com/aws/aws-sdk-go-v2/config"
   	"github.com/aws/aws-sdk-go-v2/service/s3"
   )
   
   func handler(ctx context.Context, s3Event events.S3Event) error {
   	sdkConfig, err := config.LoadDefaultConfig(ctx)
   	if err != nil {
   		log.Printf("failed to load default config: %s", err)
   		return err
   	}
   	s3Client := s3.NewFromConfig(sdkConfig)
   
   	for _, record := range s3Event.Records {
   		bucket := record.S3.Bucket.Name
   		key := record.S3.Object.URLDecodedKey
   		headOutput, err := s3Client.HeadObject(ctx, &s3.HeadObjectInput{
   			Bucket: &bucket,
   			Key:    &key,
   		})
   		if err != nil {
   			log.Printf("error getting head of object %s/%s: %s", bucket, key, err)
   			return err
   		}
   		log.Printf("successfully retrieved %s/%s of type %s", bucket, key, *headOutput.ContentType)
   	}
   
   	return nil
   }
   
   func main() {
   	lambda.Start(handler)
   }
   ```

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

**SDK untuk Java 2.x**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-s3-to-lambda). 
Menggunakan peristiwa S3 dengan Lambda menggunakan Java.  

   ```
   // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   // SPDX-License-Identifier: Apache-2.0
   package example;
   
   import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
   import software.amazon.awssdk.services.s3.model.HeadObjectResponse;
   import software.amazon.awssdk.services.s3.S3Client;
   
   import com.amazonaws.services.lambda.runtime.Context;
   import com.amazonaws.services.lambda.runtime.RequestHandler;
   import com.amazonaws.services.lambda.runtime.events.S3Event;
   import com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification.S3EventNotificationRecord;
   
   import org.slf4j.Logger;
   import org.slf4j.LoggerFactory;
   
   public class Handler implements RequestHandler<S3Event, String> {
       private static final Logger logger = LoggerFactory.getLogger(Handler.class);
       @Override
       public String handleRequest(S3Event s3event, Context context) {
           try {
             S3EventNotificationRecord record = s3event.getRecords().get(0);
             String srcBucket = record.getS3().getBucket().getName();
             String srcKey = record.getS3().getObject().getUrlDecodedKey();
   
             S3Client s3Client = S3Client.builder().build();
             HeadObjectResponse headObject = getHeadObject(s3Client, srcBucket, srcKey);
   
             logger.info("Successfully retrieved " + srcBucket + "/" + srcKey + " of type " + headObject.contentType());
   
             return "Ok";
           } catch (Exception e) {
             throw new RuntimeException(e);
           }
       }
   
       private HeadObjectResponse getHeadObject(S3Client s3Client, String bucket, String key) {
           HeadObjectRequest headObjectRequest = HeadObjectRequest.builder()
                   .bucket(bucket)
                   .key(key)
                   .build();
           return s3Client.headObject(headObjectRequest);
       }
   }
   ```

------
#### [ JavaScript ]

**SDK untuk JavaScript (v3)**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-s3-to-lambda). 
Mengkonsumsi acara S3 dengan menggunakan JavaScript Lambda.  

   ```
   import { S3Client, HeadObjectCommand } from "@aws-sdk/client-s3";
   
   const client = new S3Client();
   
   export const handler = async (event, context) => {
   
       // Get the object from the event and show its content type
       const bucket = event.Records[0].s3.bucket.name;
       const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
   
       try {
           const { ContentType } = await client.send(new HeadObjectCommand({
               Bucket: bucket,
               Key: key,
           }));
   
           console.log('CONTENT TYPE:', ContentType);
           return ContentType;
   
       } catch (err) {
           console.log(err);
           const message = `Error getting object ${key} from bucket ${bucket}. Make sure they exist and your bucket is in the same region as this function.`;
           console.log(message);
           throw new Error(message);
       }
   };
   ```
Mengkonsumsi acara S3 dengan menggunakan TypeScript Lambda.  

   ```
   // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   // SPDX-License-Identifier: Apache-2.0
   import { S3Event } from 'aws-lambda';
   import { S3Client, HeadObjectCommand } from '@aws-sdk/client-s3';
   
   const s3 = new S3Client({ region: process.env.AWS_REGION });
   
   export const handler = async (event: S3Event): Promise<string | undefined> => {
     // Get the object from the event and show its content type
     const bucket = event.Records[0].s3.bucket.name;
     const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
     const params = {
       Bucket: bucket,
       Key: key,
     };
     try {
       const { ContentType } = await s3.send(new HeadObjectCommand(params));
       console.log('CONTENT TYPE:', ContentType);
       return ContentType;
     } catch (err) {
       console.log(err);
       const message = `Error getting object ${key} from bucket ${bucket}. Make sure they exist and your bucket is in the same region as this function.`;
       console.log(message);
       throw new Error(message);
     }
   };
   ```

------
#### [ PHP ]

**SDK untuk PHP**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-s3-to-lambda). 
Mengkonsumsi acara S3 dengan Lambda menggunakan PHP.  

   ```
   <?php
   
   use Bref\Context\Context;
   use Bref\Event\S3\S3Event;
   use Bref\Event\S3\S3Handler;
   use Bref\Logger\StderrLogger;
   
   require __DIR__ . '/vendor/autoload.php';
   
   
   class Handler extends S3Handler 
   {
       private StderrLogger $logger;
       public function __construct(StderrLogger $logger)
       {
           $this->logger = $logger;
       }
       
       public function handleS3(S3Event $event, Context $context) : void
       {
           $this->logger->info("Processing S3 records");
   
           // Get the object from the event and show its content type
           $records = $event->getRecords();
           
           foreach ($records as $record) 
           {
               $bucket = $record->getBucket()->getName();
               $key = urldecode($record->getObject()->getKey());
   
               try {
                   $fileSize = urldecode($record->getObject()->getSize());
                   echo "File Size: " . $fileSize . "\n";
                   // TODO: Implement your custom processing logic here
               } catch (Exception $e) {
                   echo $e->getMessage() . "\n";
                   echo 'Error getting object ' . $key . ' from bucket ' . $bucket . '. Make sure they exist and your bucket is in the same region as this function.' . "\n";
                   throw $e;
               }
           }
       }
   }
   
   $logger = new StderrLogger();
   return new Handler($logger);
   ```

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

**SDK untuk Python (Boto3)**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-s3-to-lambda). 
Menggunakan peristiwa S3 dengan Lambda menggunakan Python.  

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: Apache-2.0
   import json
   import urllib.parse
   import boto3
   
   print('Loading function')
   
   s3 = boto3.client('s3')
   
   
   def lambda_handler(event, context):
       #print("Received event: " + json.dumps(event, indent=2))
   
       # Get the object from the event and show its content type
       bucket = event['Records'][0]['s3']['bucket']['name']
       key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
       try:
           response = s3.get_object(Bucket=bucket, Key=key)
           print("CONTENT TYPE: " + response['ContentType'])
           return response['ContentType']
       except Exception as e:
           print(e)
           print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket))
           raise e
   ```

------
#### [ Ruby ]

**SDK untuk Ruby**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-s3-to-lambda). 
Mengkonsumsi acara S3 dengan Lambda menggunakan Ruby.  

   ```
   require 'json'
   require 'uri'
   require 'aws-sdk'
   
   puts 'Loading function'
   
   def lambda_handler(event:, context:)
     s3 = Aws::S3::Client.new(region: 'region') # Your AWS region
     # puts "Received event: #{JSON.dump(event)}"
   
     # Get the object from the event and show its content type
     bucket = event['Records'][0]['s3']['bucket']['name']
     key = URI.decode_www_form_component(event['Records'][0]['s3']['object']['key'], Encoding::UTF_8)
     begin
       response = s3.get_object(bucket: bucket, key: key)
       puts "CONTENT TYPE: #{response.content_type}"
       return response.content_type
     rescue StandardError => e
       puts e.message
       puts "Error getting object #{key} from bucket #{bucket}. Make sure they exist and your bucket is in the same region as this function."
       raise e
     end
   end
   ```

------
#### [ Rust ]

**SDK for Rust**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-s3-to-lambda). 
Menggunakan peristiwa S3 dengan Lambda menggunakan Rust.  

   ```
   // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   // SPDX-License-Identifier: Apache-2.0
   use aws_lambda_events::event::s3::S3Event;
   use aws_sdk_s3::{Client};
   use lambda_runtime::{run, service_fn, Error, LambdaEvent};
   
   
   /// Main function
   #[tokio::main]
   async fn main() -> Result<(), Error> {
       tracing_subscriber::fmt()
           .with_max_level(tracing::Level::INFO)
           .with_target(false)
           .without_time()
           .init();
   
       // Initialize the AWS SDK for Rust
       let config = aws_config::load_from_env().await;
       let s3_client = Client::new(&config);
   
       let res = run(service_fn(|request: LambdaEvent<S3Event>| {
           function_handler(&s3_client, request)
       })).await;
   
       res
   }
   
   async fn function_handler(
       s3_client: &Client,
       evt: LambdaEvent<S3Event>
   ) -> Result<(), Error> {
       tracing::info!(records = ?evt.payload.records.len(), "Received request from SQS");
   
       if evt.payload.records.len() == 0 {
           tracing::info!("Empty S3 event received");
       }
   
       let bucket = evt.payload.records[0].s3.bucket.name.as_ref().expect("Bucket name to exist");
       let key = evt.payload.records[0].s3.object.key.as_ref().expect("Object key to exist");
   
       tracing::info!("Request is for {} and object {}", bucket, key);
   
       let s3_get_object_result = s3_client
           .get_object()
           .bucket(bucket)
           .key(key)
           .send()
           .await;
   
       match s3_get_object_result {
           Ok(_) => tracing::info!("S3 Get Object success, the s3GetObjectResult contains a 'body' property of type ByteStream"),
           Err(_) => tracing::info!("Failure with S3 Get Object request")
       }
   
       Ok(())
   }
   ```

------

1. Di panel **Sumber kode** di konsol Lambda, tempelkan kode ke editor kode, ganti kode yang dibuat Lambda.

1. Di bagian **DEPLOY**, pilih **Deploy** untuk memperbarui kode fungsi Anda:  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/getting-started-tutorial/deploy-console.png)

## Buat pemicu Amazon S3
<a name="with-s3-example-create-trigger"></a>

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3trigger_tut_steps7.png)


**Untuk membuat pemicu Amazon S3**

1. Di panel **Ikhtisar fungsi**, pilih **Tambah pemicu**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/overview-trigger.png)

1. Pilih **S3**.

1. Di bawah **Bucket**, pilih bucket yang Anda buat sebelumnya di tutorial.

1. Di bawah **Jenis acara**, pastikan bahwa **Semua peristiwa pembuatan objek** dipilih.

1. Di bawah **Pemanggilan rekursif**, pilih kotak centang untuk mengetahui bahwa tidak disarankan menggunakan bucket Amazon S3 yang sama untuk input dan output.

1. Pilih **Tambahkan**.

**catatan**  
[Saat Anda membuat pemicu Amazon S3 untuk fungsi Lambda menggunakan konsol Lambda, Amazon S3 mengonfigurasi pemberitahuan peristiwa di bucket yang Anda tentukan.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html) Sebelum mengonfigurasi pemberitahuan peristiwa ini, Amazon S3 melakukan serangkaian pemeriksaan untuk mengonfirmasi bahwa tujuan acara ada dan memiliki kebijakan IAM yang diperlukan. Amazon S3 juga melakukan pengujian ini pada notifikasi acara lain yang dikonfigurasi untuk bucket itu.  
Karena pemeriksaan ini, jika bucket sebelumnya telah mengonfigurasi tujuan peristiwa untuk sumber daya yang tidak ada lagi, atau untuk sumber daya yang tidak memiliki kebijakan izin yang diperlukan, Amazon S3 tidak akan dapat membuat notifikasi peristiwa baru. Anda akan melihat pesan galat berikut yang menunjukkan bahwa pemicu Anda tidak dapat dibuat:  

```
An error occurred when creating the trigger: Unable to validate the following destination configurations.
```
Anda dapat melihat kesalahan ini jika sebelumnya mengonfigurasi pemicu untuk fungsi Lambda lain menggunakan bucket yang sama, dan sejak itu Anda telah menghapus fungsi tersebut atau memodifikasi kebijakan izinnya.

## Uji fungsi Lambda Anda dengan acara dummy
<a name="with-s3-example-test-dummy-event"></a>

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3trigger_tut_steps8.png)


**Untuk menguji fungsi Lambda dengan acara dummy**

1. Di halaman konsol Lambda untuk fungsi Anda, pilih tab **Uji**.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/test-tab.png)

1. Untuk **Nama peristiwa**, masukkan `MyTestEvent`.

1. Di **Event JSON**, tempel peristiwa pengujian berikut. Pastikan untuk mengganti nilai-nilai ini:
   + Ganti `us-east-1` dengan wilayah tempat Anda membuat bucket Amazon S3.
   + Ganti kedua instance `amzn-s3-demo-bucket` dengan nama bucket Amazon S3 Anda sendiri.
   + Ganti `test%2FKey` dengan nama objek pengujian yang Anda unggah ke bucket sebelumnya (misalnya,`HappyFace.jpg`).

   ```
   {
     "Records": [
       {
         "eventVersion": "2.0",
         "eventSource": "aws:s3",
         "awsRegion": "us-east-1",
         "eventTime": "1970-01-01T00:00:00.000Z",
         "eventName": "ObjectCreated:Put",
         "userIdentity": {
           "principalId": "EXAMPLE"
         },
         "requestParameters": {
           "sourceIPAddress": "127.0.0.1"
         },
         "responseElements": {
           "x-amz-request-id": "EXAMPLE123456789",
           "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
         },
         "s3": {
           "s3SchemaVersion": "1.0",
           "configurationId": "testConfigRule",
           "bucket": {
             "name": "amzn-s3-demo-bucket",
             "ownerIdentity": {
               "principalId": "EXAMPLE"
             },
             "arn": "arn:aws:s3:::amzn-s3-demo-bucket"
           },
           "object": {
             "key": "test%2Fkey",
             "size": 1024,
             "eTag": "0123456789abcdef0123456789abcdef",
             "sequencer": "0A1B2C3D4E5F678901"
           }
         }
       }
     ]
   }
   ```

1. Pilih **Simpan**.

1. Pilih **Uji**.

1. Jika fungsi Anda berjalan dengan sukses, Anda akan melihat output yang mirip dengan yang berikut ini di tab **Hasil eksekusi**.

   ```
   Response
   "image/jpeg"
   
   Function Logs
   START RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Version: $LATEST
   2021-02-18T21:40:59.280Z    12b3cae7-5f4e-415e-93e6-416b8f8b66e6    INFO    INPUT BUCKET AND KEY:  { Bucket: 'amzn-s3-demo-bucket', Key: 'HappyFace.jpg' }
   2021-02-18T21:41:00.215Z    12b3cae7-5f4e-415e-93e6-416b8f8b66e6    INFO    CONTENT TYPE: image/jpeg
   END RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6
   REPORT RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6    Duration: 976.25 ms    Billed Duration: 977 ms    Memory Size: 128 MB    Max Memory Used: 90 MB    Init Duration: 430.47 ms        
   
   Request ID
   12b3cae7-5f4e-415e-93e6-416b8f8b66e6
   ```

### Uji fungsi Lambda dengan pemicu Amazon S3
<a name="with-s3-example-test-s3-trigger"></a>

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/services-s3-example/s3trigger_tut_steps9.png)


Untuk menguji fungsi Anda dengan pemicu yang dikonfigurasi, unggah objek ke bucket Amazon S3 menggunakan konsol. Untuk memverifikasi bahwa fungsi Lambda Anda berjalan seperti yang diharapkan, gunakan CloudWatch Log untuk melihat output fungsi Anda.

**Untuk mengunggah objek ke bucket Amazon S3 Anda**

1. Buka halaman [Bucket di](https://console.aws.amazon.com/s3/buckets) konsol Amazon S3 dan pilih bucket yang Anda buat sebelumnya.

1. Pilih **Unggah**.

1. Pilih **Tambahkan file** dan gunakan pemilih file untuk memilih objek yang ingin Anda unggah. Objek ini dapat berupa file apa pun yang Anda pilih.

1. Pilih **Buka**, lalu pilih **Unggah**.

**Untuk memverifikasi pemanggilan fungsi menggunakan Log CloudWatch**

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

1. Pastikan Anda bekerja sama dengan saat Wilayah AWS Anda membuat fungsi Lambda Anda. Anda dapat mengubah Wilayah Anda menggunakan daftar drop-down di bagian atas layar.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/console_region_select.png)

1. Pilih **Log**, lalu pilih **Grup log**.

1. Pilih grup log untuk fungsi Anda (`/aws/lambda/s3-trigger-tutorial`).

1. Di bawah **Aliran log**, pilih aliran log terbaru.

1. Jika fungsi Anda dipanggil dengan benar sebagai respons terhadap pemicu Amazon S3 Anda, Anda akan melihat output yang mirip dengan berikut ini. Yang `CONTENT TYPE` Anda lihat tergantung pada jenis file yang Anda unggah ke bucket Anda.

   ```
   2022-05-09T23:17:28.702Z	0cae7f5a-b0af-4c73-8563-a3430333cc10	INFO	CONTENT TYPE: image/jpeg
   ```

## Bersihkan sumber daya Anda
<a name="cleanup"></a>

Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah tagihan yang tidak perlu ke Anda Akun AWS.

**Untuk menghapus fungsi Lambda**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi yang Anda buat.

1. Pilih **Tindakan**, **Hapus**.

1. Ketik **confirm** kolom input teks dan pilih **Hapus**.

**Untuk menghapus peran eksekusi**

1. Buka [halaman Peran](https://console.aws.amazon.com/iam/home#/roles) dari konsol IAM.

1. Pilih peran eksekusi yang Anda buat.

1. Pilih **Hapus**.

1. Masukkan nama peran di bidang input teks dan pilih **Hapus**.

**Untuk menghapus bucket S3**

1. Buka [konsol Amazon S3](https://console.aws.amazon.com//s3/home#).

1. Pilih bucket yang Anda buat.

1. Pilih **Hapus**.

1. Masukkan nama ember di bidang input teks.

1. Pilih **Hapus bucket**.

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

Di[Tutorial: Menggunakan pemicu Amazon S3 untuk membuat gambar thumbnail](with-s3-tutorial.md), pemicu Amazon S3 memanggil fungsi yang membuat gambar thumbnail untuk setiap file gambar yang diunggah ke bucket. Tutorial ini membutuhkan pengetahuan domain Lambda AWS dan tingkat moderat. Ini menunjukkan cara membuat sumber daya menggunakan AWS Command Line Interface (AWS CLI) dan cara membuat paket penyebaran arsip file.zip untuk fungsi dan dependensinya.