

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

# Menerapkan AWS Lambda Tugas
<a name="lambda-task"></a>

**Topics**
+ [Tentang AWS Lambda](#about-aws-lambda)
+ [Manfaat dan pembatasan dalam menggunakan tugas Lambda](#benefits-limitations-lambda-tasks)
+ [Menggunakan tugas Lambda di alur kerja AWS Flow Framework untuk Java](#using-lambda-tasks-in-java-flow-workflows)
+ [Lihat HelloLambda sampelnya](#see-lambda-sample)

## Tentang AWS Lambda
<a name="about-aws-lambda"></a>

AWS Lambda adalah layanan komputasi yang dikelola sepenuhnya yang menjalankan kode Anda sebagai respons terhadap peristiwa yang dihasilkan oleh kode khusus atau dari berbagai AWS layanan seperti Amazon S3, DynamoDB, Amazon Kinesis, Amazon SNS, dan Amazon Cognito. Untuk informasi selengkapnya tentang Lambda, lihat [Panduan Developer AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

Amazon Simple Workflow Service menyediakan tugas Lambda sehingga Anda dapat menjalankan fungsi Lambda untuk menggantikan, atau digunakan bersama kegiatan Amazon SWF tradisional.

**penting**  
 AWS Akun Anda akan dikenakan biaya untuk eksekusi (permintaan) Lambda yang dijalankan oleh Amazon SWF atas nama Anda. [Untuk detail tentang harga Lambda, lihat https://aws.amazon.com/lambda/ harga/.](https://aws.amazon.com/lambda/pricing/)

## Manfaat dan pembatasan dalam menggunakan tugas Lambda
<a name="benefits-limitations-lambda-tasks"></a>

Ada sejumlah manfaat menggunakan tugas Lambda dibandingkan menjalankan kegiatan Amazon SWF tradisional:
+ Tugas Lambda tidak perlu didaftarkan atau diversikan seperti tipe aktivitas Amazon SWF.
+ Anda dapat menggunakan fungsi Lambda yang ada yang telah Anda tetapkan dalam alur kerja Anda.
+ Fungsi Lambda dipanggil langsung oleh Amazon SWF; Anda tidak perlu menerapkan program pekerja untuk mengeksekusi fungsi seperti yang harus Anda lakukan pada kegiatan tradisional.
+ Lambda menyediakan metrik dan pencatatan untuk melacak dan menganalisis eksekusi fungsi Anda.

Ada juga sejumlah batasan mengenai tugas Lambda yang harus Anda sadari:
+ Tugas Lambda hanya dapat dijalankan di AWS wilayah yang memberikan dukungan untuk Lambda. Lihat [Wilayah dan Titik Akhir Lambda](https://docs.aws.amazon.com/general/latest/gr/rande.html#lambda_region) di *Referensi Umum Amazon Web Services* untuk detail tentang wilayah yang saat ini didukung untuk Lambda.
+ Tugas Lambda saat ini hanya didukung oleh API HTTP SWF dasar dan di untuk Java. AWS Flow Framework Saat ini tidak ada dukungan untuk tugas Lambda di Ruby AWS Flow Framework .

## Menggunakan tugas Lambda di alur kerja AWS Flow Framework untuk Java
<a name="using-lambda-tasks-in-java-flow-workflows"></a>

Ada tiga persyaratan untuk menggunakan tugas Lambda dalam alur kerja AWS Flow Framework untuk Java Anda:
+ Sebuah fungsi Lambda untuk mengeksekusi. Anda dapat menggunakan fungsi Lambda yang telah Anda tetapkan. Untuk informasi lebih lanjut tentang cara membuat fungsi Lambda, lihat [AWS Lambda Developer Guide](https://docs.aws.amazon.com/lambda/latest/dg/) (Panduan Developer).
+ IAM role yang menyediakan akses untuk menjalankan fungsi Lambda dari alur kerja Amazon SWF Anda.
+ Kode untuk menjadwalkan tugas Lambda dari dalam alur kerja Anda.

### Mengatur IAM role
<a name="set-up-lambda-role"></a>

Sebelum Anda dapat memanggil fungsi Lambda dari Amazon SWF Anda harus menyediakan IAM role yang menyediakan akses ke Lambda dari Amazon SWF. Anda dapat:
+ pilih peran yang telah ditentukan sebelumnya, *AWSLambdaPeran*, untuk memberikan izin alur kerja Anda untuk menjalankan fungsi Lambda apa pun yang terkait dengan akun Anda.
+ tentukan kebijakan Anda sendiri dan peran terkait untuk memberikan izin alur kerja untuk menjalankan fungsi Lambda tertentu, yang ditentukan oleh Nama Sumber Daya Amazon (). ARNs

#### Batasi izin pada peran IAM
<a name="limit-iam-role-permissions"></a>

Anda dapat membatasi izin pada peran IAM yang Anda berikan ke Amazon SWF dengan menggunakan kunci konteks `SourceAccount` dan dalam `SourceArn` kebijakan kepercayaan sumber daya Anda. Kunci ini membatasi penggunaan kebijakan IAM sehingga hanya digunakan dari eksekusi Amazon Simple Workflow Service yang termasuk dalam ARN domain yang ditentukan. Jika Anda menggunakan kedua kunci konteks kondisi global, `aws:SourceAccount` nilai dan akun yang direferensikan dalam `aws:SourceArn` nilai harus menggunakan ID akun yang sama saat digunakan dalam pernyataan kebijakan yang sama.

Dalam contoh berikut, kunci `SourceArn` konteks membatasi peran layanan IAM agar hanya digunakan dalam eksekusi Amazon Simple Workflow Service yang termasuk `someDomain` dalam akun,. `123456789012`


+ **Pernyataan 1**

  **Prinsipal**: `"Service": "swf.amazonaws.com"` 

  **Aksi**: `sts:AssumeRole` 

```
"Condition": {
   "ArnLike": {
     "aws:SourceArn": "arn:aws:swf:*:123456789012:/domain/someDomain"
   }
}
```

Dalam contoh berikut, kunci `SourceAccount` konteks membatasi peran layanan IAM agar hanya digunakan dalam eksekusi Amazon Simple Workflow Service di akun,. `123456789012`

```
"Condition": {
   "StringLike": {
     "aws:SourceAccount": "123456789012"
   }
}
```

#### Menyediakan akses bagi Amazon SWF untuk memanggil setiap peran Lambda
<a name="providing-swf-access-invoke-any-lambda-role"></a>

Anda dapat menggunakan peran yang telah ditentukan sebelumnya, *AWSLambdaPeran*, untuk memberikan alur kerja Amazon SWF Anda kemampuan untuk menjalankan fungsi Lambda apa pun yang terkait dengan akun Anda.

**Untuk menggunakan AWSLambda Peran untuk memberi Amazon SWF akses untuk menjalankan fungsi Lambda**

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

1. Pilih **Roles (Peran)**, kemudian **Create New Role (Buat Peran Baru)**.

1. Beri nama bagi peran Anda, misalnya `swf-lambda` dan pilih **Next Step (Langkah Selanjutnya)**.

1. Di bawah **AWS Service Roles** (Peran Layanan), pilih **Amazon SWF**, dan pilih **Next Step (Langkah Berikutnya)**.

1. Pada layar **Lampirkan Kebijakan**, pilih **AWSLambdaPeran** dari daftar.

1. Pilih **Next Step** (Langkah Selanjutnya) dan kemudian **Create Role** (Buat Baru) setelah Anda meninjau peran tersebut.

#### Menentukan IAM role untuk menyediakan akses guna memanggil fungsi Lambda tertentu
<a name="defining-iam-role-provide-access-invoke-specific-lambda-function"></a>

Jika Anda ingin menyediakan akses untuk memanggil fungsi Lambda tertentu dari alur kerja Anda, Anda perlu menentukan kebijakan IAM Anda sendiri.

**Untuk membuat kebijakan IAM untuk menyediakan akses ke fungsi Lambda tertentu**

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

1. Pilih **Policies (Kebijakan)**, kemudian **Create Policy (Buat Kebijakan)**.

1. Pilih **Salin Kebijakan AWS Terkelola** dan pilih **AWSLambdaPeran** dari daftar. Sebuah kebijakan akan dibuat untuk Anda. Anda memiliki opsi untuk mengedit nama dan deskripsi kebijakan untuk menyesuaikan kebutuhan Anda.

1. Di bidang *Sumber Daya* di **Dokumen Kebijakan**, tambahkan ARN dari satu atau beberapa fungsi Lambda Anda. Misalnya:
   + **Sumber daya**: `arn:aws:lambda:us-east-1:111122223333:function:hello_lambda_function` 
**catatan**  
Untuk keterangan lengkap tentang cara menentukan sumber daya di IAM role, lihat [Gambaran Umum Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_overview.html) di *Menggunakan IAM*.

1. Pilih **Create Policy (Buat Kebijakan)** untuk menyelesaikan pembuatan kebijakan Anda.

Anda kemudian dapat memilih kebijakan ini saat membuat IAM role baru, dan menggunakan peran tersebut untuk memberikan akses panggilan ke alur kerja Amazon SWF Anda. Prosedur ini sangat mirip dengan membuat peran dengan kebijakan Peranan. sebagai gantinya, pilih kebijakan Anda sendiri saat membuat *AWSLambdaperan*.

**Untuk membuat peran Amazon SWF menggunakan kebijakan Lambda Anda**

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

1. Pilih **Roles (Peran)**, kemudian **Create New Role (Buat Peran Baru)**.

1. Beri nama bagi peran Anda, misalnya `swf-lambda-function` dan pilih **Next Step (Langkah Selanjutnya)**.

1. Di bawah **AWS Service Roles** (Peran Layanan), pilih **Amazon SWF**, dan pilih **Next Step (Langkah Berikutnya)**.

1. Pada layar **Attach Policy (Lampirkan Kebijakan)**, pilih kebijakan khusus fungsi Lambda Anda dari daftar.

1. Pilih **Next Step** (Langkah Selanjutnya) dan kemudian **Create Role** (Buat Baru) setelah Anda meninjau peran tersebut.

### Jadwalkan tugas Lambda untuk eksekusi
<a name="schedule-lambda-tasks-for-execution"></a>

Setelah Anda menentukan IAM role yang mengizinkan Anda untuk memanggil fungsi Lambda, Anda dapat menjadwalkan mereka untuk eksekusi sebagai bagian dari alur kerja Anda.

**catatan**  
Proses ini sepenuhnya ditunjukkan oleh [HelloLambda sampel](#see-lambda-sample) di AWS SDK untuk Java.

**Untuk menjadwalkan tugas Lambda untuk eksekusi**

1. Dalam penerapan alur kerja Anda, dapatkan instans `LambdaFunctionClient` dengan memanggil `getLambdaFunctionClient()` pada instans `DecisionContext`.

   ```
   // Get a LambdaFunctionClient instance
   DecisionContextProvider decisionProvider = new DecisionContextProviderImpl();
   DecisionContext decisionContext = decisionProvider.getDecisionContext();
   LambdaFunctionClient lambdaClient = decisionContext.getLambdaFunctionClient();
   ```

1. Jadwal tugas menggunakan metode `scheduleLambdaFunction()` di `LambdaFunctionClient`, dengan meneruskan metode nama fungsi Lambda yang Anda buat dan data input apa pun untuk tugas Lambda.

   ```
   // Schedule the Lambda function for execution, using your IAM role for access.
   String lambda_function_name = "The name of your Lambda function.";
   String lambda_function_input = "Input data for your Lambda task.";
   
   lambdaClient.scheduleLambdaFunction(lambda_function_name, lambda_function_input);
   ```

1. Di starter eksekusi alur kerja Anda, tambahkan peran lambda IAM ke opsi alur kerja default dengan menggunakan `StartWorkflowOptions.withLambdaRole()`, dan kemudian teruskan pilihan ketika memulai alur kerja.

   ```
   // Workflow client classes are generated for you when you use the @Workflow
   // annotation on your workflow interface declaration.
   MyWorkflowClientExternalFactory clientFactory =
     new MyWorkflowClientExternalFactoryImpl(sdk_swf_client, swf_domain);
   
   MyWorkflowClientExternal workflow_client = clientFactory.getClient();
   
   // Give the ARN of an IAM role that allows SWF to invoke Lambda functions on
   // your behalf.
   String lambda_iam_role = "arn:aws:iam::111111000000:role/swf_lambda_role";
   
   StartWorkflowOptions workflow_options =
     new StartWorkflowOptions().withLambdaRole(lambda_iam_role);
   
   // Start the workflow execution
   workflow_client.helloWorld("User", workflow_options);
   ```

## Lihat HelloLambda sampelnya
<a name="see-lambda-sample"></a>

Contoh yang menyediakan implementasi alur kerja yang menggunakan tugas Lambda disediakan di AWS SDK untuk Java. Untuk melihat and/or menjalankannya, [unduh sumbernya](https://aws.amazon.com/code/3015904745387737).

Deskripsi lengkap tentang cara membangun dan menjalankan *HelloLambda*sampel disediakan dalam file README yang disediakan dengan sampel AWS Flow Framework untuk Java.