

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

# Mengakses AWS sumber daya lintas akun di Step Functions
<a name="tutorial-access-cross-acct-resources"></a>

Dengan dukungan akses lintas akun di Step Functions, Anda dapat berbagi sumber daya yang dikonfigurasi secara berbeda Akun AWS. **Dalam tutorial ini, kami memandu Anda melalui proses mengakses fungsi Lambda lintas akun yang didefinisikan dalam akun yang disebut Produksi.** Fungsi ini dipanggil dari mesin negara dalam akun yang disebut **Pengembangan**. Dalam tutorial ini, akun **Pengembangan** disebut sebagai *akun sumber dan akun* **Produksi** adalah *akun target* yang berisi peran IAM target.

Untuk memulai, dalam definisi `Task` status Anda, Anda menentukan peran IAM target yang harus diasumsikan oleh mesin status sebelum menjalankan fungsi Lambda lintas akun. Kemudian, ubah kebijakan kepercayaan dalam peran IAM target untuk memungkinkan akun sumber untuk mengambil peran target sementara. Juga, untuk memanggil AWS sumber daya, tentukan izin yang sesuai dalam peran IAM target. Terakhir, perbarui peran eksekusi akun sumber untuk menentukan izin yang diperlukan untuk mengambil peran target.

Anda dapat mengonfigurasi mesin status Anda untuk mengambil peran IAM untuk mengakses sumber daya dari beberapa. Akun AWS Namun, mesin negara hanya dapat mengasumsikan satu peran IAM pada waktu tertentu berdasarkan definisi `Task` negara.

**catatan**  
Integrasi AWS SDK Lintas Wilayah dan akses AWS sumber daya lintas wilayah tidak tersedia di Step Functions.

## Prasyarat
<a name="tutorial-access-cross-acct-resources-prereq"></a>
+ Tutorial ini menggunakan contoh fungsi Lambda untuk menunjukkan cara mengatur akses lintas akun. Anda dapat menggunakan AWS sumber daya lain, tetapi pastikan Anda telah mengonfigurasi sumber daya di akun yang berbeda.
**penting**  
Peran IAM dan kebijakan berbasis sumber daya mendelegasikan akses ke seluruh akun hanya dengan satu partisi. Misalnya, anggap saja Anda memiliki akun di AS Barat (California Utara) di partisi `aws` standar. Anda juga memiliki rekening di Tiongkok (Beijing) di partisi `aws-cn` tersebut. Anda tidak dapat menggunakan kebijakan berbasis sumber daya Amazon S3 di akun Anda di Tiongkok (Beijing) untuk mengizinkan akses bagi pengguna dalam akun standar `aws` Anda.
+ Catat Nama Sumber Daya Amazon (ARN) sumber daya lintas akun dalam file teks. Kemudian dalam tutorial ini, Anda akan memberikan ARN ini dalam definisi status mesin `Task` negara Anda. Berikut ini adalah contoh dari fungsi Lambda ARN:

  ```
  arn:aws:lambda:us-east-2:{{account-id}}:function:{{functionName}}
  ```
+ Pastikan Anda telah membuat peran IAM target yang perlu diasumsikan oleh mesin status.

## Langkah 1: Perbarui definisi status Tugas untuk menentukan peran target
<a name="tutorial-access-cross-acct-resources-update-task-def"></a>

Dalam `Task` keadaan alur kerja Anda, tambahkan `Credentials` bidang yang berisi identitas yang harus diasumsikan oleh mesin status sebelum menjalankan fungsi Lambda lintas akun.

Prosedur berikut menunjukkan cara mengakses fungsi Lambda lintas akun yang disebut. `Echo` Anda dapat memanggil AWS sumber daya apa pun dengan mengikuti langkah-langkah ini.

1. Buka [Konsol Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/) dan pilih **Buat mesin status**.

1. Pada halaman **Pilih metode authoring**, pilih **Desain alur kerja Anda secara visual** dan simpan semua pilihan default.

1. Untuk membuka Workflow Studio, pilih **Berikutnya**.

1. Pada tab **Tindakan**, seret dan lepas `Task` status di kanvas. Ini memanggil fungsi Lambda lintas akun yang menggunakan status ini. `Task`

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

   1. Ubah nama negara menjadi**Cross-account call**.

   1. Untuk **nama Fungsi**, pilih **Masukkan nama fungsi**, lalu masukkan ARN fungsi Lambda di dalam kotak. Misalnya, `arn:aws:lambda:us-east-2:111122223333:function:{{Echo}}`.

   1. Untuk **Menyediakan ARN peran IAM**, tentukan ARN peran IAM target. Misalnya, `arn:aws:iam::111122223333:role/LambdaRole`.
**Tip**  
Atau, Anda juga dapat menentukan [jalur referensi](amazon-states-language-paths.md#amazon-states-language-reference-paths) ke pasangan kunci-nilai yang ada di input JSON status yang berisi ARN peran IAM. Untuk melakukan ini, pilih **Dapatkan peran IAM ARN saat runtime** dari input status. Untuk contoh menentukan nilai dengan menggunakan jalur referensi, lihat[Menentukan JSONPath sebagai peran IAM ARN](state-task.md#example-credentials-specify-dynamic-jsonpath).

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau kode yang dihasilkan**, pilih **Berikutnya**.

1. Pada halaman **Tentukan pengaturan mesin status**, tentukan detail untuk mesin status baru, seperti nama, izin, dan tingkat pencatatan.

1. Pilih **Buat mesin status**.

1. Catat peran IAM mesin negara ARN dan ARN mesin status dalam file teks. Anda harus memberikan ini ARNs dalam kebijakan kepercayaan akun target.

Definisi `Task` status Anda sekarang harus terlihat mirip dengan definisi berikut.

```
{
  "StartAt": "Cross-account call",
  "States": {
    "Cross-account call": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Credentials": {
        "RoleArn": "arn:aws:iam::111122223333:role/LambdaRole"
      },
      "Parameters": {
        "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:{{Echo}}",
      },
      "End": true
    }
  }
}
```

## Langkah 2: Perbarui kebijakan kepercayaan peran target
<a name="tutorial-access-cross-acct-resources-update-target-trust-policy"></a>

Peran IAM harus ada di akun target dan Anda harus mengubah kebijakan kepercayaannya agar akun sumber dapat mengambil peran ini sementara. Selain itu, Anda dapat mengontrol siapa yang dapat mengambil peran IAM target.

Setelah Anda membuat hubungan kepercayaan, pengguna dari akun sumber dapat menggunakan operasi [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API AWS Security Token Service (AWS STS). Operasi ini menyediakan kredensi keamanan sementara yang memungkinkan akses ke AWS sumber daya di akun target.

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

1. Pada panel navigasi konsol, pilih **Peran dan kemudian gunakan kotak Pencarian untuk mencari peran** IAM target. Misalnya, `{{LambdaRole}}`.

1. Pilih tab **Trust relationship**.

1. Pilih **Edit kebijakan kepercayaan** dan tempel kebijakan kepercayaan berikut. Pastikan untuk mengganti Akun AWS nomor dan peran IAM ARN. `sts:ExternalId`Bidang lebih lanjut mengontrol siapa yang dapat mengambil peran. Nama mesin status harus menyertakan hanya karakter yang didukung AWS Security Token Service `AssumeRole` API. Untuk informasi selengkapnya, lihat [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) di dalam *Referensi API AWS Security Token Service *. 

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "sts:AssumeRole",
         "Principal": {
           "AWS": "arn:aws:iam::{{account-id}}:role/ExecutionRole"  // The source account's state machine execution role ARN
         },
         "Condition": {  // Control which account and state machine can assume the target IAM role
           "StringEquals": {
             "sts:ExternalId": "arn:aws:states:{{region}}:{{account-id}}:stateMachine:testCrossAccount"   //// ARN of the state machine that will assume the role.
           }
         }
       }
     ]
   }
   ```

1. Biarkan jendela ini terbuka dan lanjutkan ke langkah berikutnya untuk tindakan lebih lanjut.

## Langkah 3: Tambahkan izin yang diperlukan dalam peran target
<a name="tutorial-access-cross-acct-resources-add-permissions"></a>

Izin dalam kebijakan IAM menentukan apakah permintaan tertentu diizinkan atau ditolak. Peran IAM target harus memiliki izin yang benar untuk menjalankan fungsi Lambda.

1. Pilih tab **Izin**.

1. Pilih **Tambahkan izin**, lalu pilih **Buat kebijakan sebaris**.

1. Pilih tab **JSON** dan ganti konten yang ada dengan izin berikut. Pastikan untuk mengganti ARN fungsi Lambda Anda.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "lambda:InvokeFunction",
         "Resource": "arn:aws:lambda:us-east-2:111122223333:function:{{Echo}}"  // The cross-account AWS resource being accessed
       }
     ]
   }
   ```

1. Pilih **Tinjau kebijakan**.

1. Pada halaman **Kebijakan ulasan**, masukkan nama untuk izin, lalu pilih **Buat kebijakan**.

## Langkah 4: Tambahkan izin dalam peran eksekusi untuk mengambil peran target
<a name="tutorial-access-cross-acct-resources-update-exec-role"></a>

Step Functions tidak secara otomatis menghasilkan [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)kebijakan untuk semua integrasi layanan lintas akun. Anda harus menambahkan izin yang diperlukan dalam peran eksekusi mesin status untuk memungkinkannya mengambil peran IAM target dalam satu atau lebih Akun AWS.

1. Buka peran eksekusi mesin status Anda di konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Untuk melakukannya:

   1. Buka mesin status yang Anda buat di [Langkah 1 di akun sumber](#tutorial-access-cross-acct-resources-update-task-def).

   1. Pada halaman **detail mesin Negara**, pilih **peran IAM ARN**.

1. Pada tab **Izin**, pilih **Tambahkan izin**, lalu pilih **Buat kebijakan sebaris**.

1. Pilih tab **JSON** dan ganti konten yang ada dengan izin berikut. Pastikan untuk mengganti ARN fungsi Lambda Anda.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "sts:AssumeRole",
         "Resource": "arn:aws:iam::111122223333:role/{{LambdaRole}}"  // The target role to be assumed
       }
     ]
   }
   ```

1. Pilih **Tinjau kebijakan**.

1. Pada halaman **Kebijakan ulasan**, masukkan nama untuk izin, lalu pilih **Buat kebijakan**.