

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

# Mulai mesin AWS Step Functions status baru dari eksekusi yang sedang berjalan
<a name="connect-stepfunctions"></a>

Step Functions berintegrasi dengan API-nya sendiri sebagai integrasi layanan. Pelajari cara menggunakan Step Functions untuk memulai eksekusi baru mesin status langsung dari status tugas eksekusi yang sedang berjalan. Saat membangun alur kerja baru, gunakan [eksekusi alur kerja yang di-nest](concepts-nested-workflows.md) untuk mengurangi kompleksitas alur kerja utama Anda dan untuk menggunakan kembali proses umum.

**Fitur utama integrasi Step Functions yang Dioptimalkan**  
Pola [Jalankan Tugas (.sync)](connect-to-resource.md#connect-sync) integrasi tersedia.

Untuk informasi selengkapnya, lihat berikut ini:
+ [Mulai dari Tugas](concepts-nested-workflows.md)
+ [Integrasi layanan ](integrate-services.md)
+ [Meneruskan parameter ke API layanan di Step Functions](connect-parameters.md)

## Step Functions yang Dioptimalkan APIs
<a name="connect-stepfunctions-api"></a>
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)

## Contoh Alur Kerja
<a name="connect-stepfunctions-api-examples"></a>

Berikut ini mencakup status `Task` yang memulai eksekusi mesin status lain dan menunggunya selesai.

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.sync:2",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Berikut ini mencakup status `Task` yang memulai eksekusi mesin status lain.

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Berikut ini mencakup status `Task` yang mengimplementasikan pola integrasi layanan [callback](connect-to-resource.md#connect-wait-token).

```
{ 
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.waitForTaskToken",
   "Arguments":{ 
      "Input":{
        "Comment": "Hello world!",
        "token": "{% $states.context.Task.Token %}"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Untuk mengaitkan eksekusi alur kerja bersarang dengan eksekusi induk yang memulainya, berikan parameter bernama khusus yang menyertakan ID eksekusi yang ditarik dari objek [Context](input-output-contextobject.md). Ketika memulai eksekusi yang di-nest, gunakan parameter bernama `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID`. Lulus ID eksekusi dan referensikan ID dalam objek Context dengan`$states.context.Execution.Id`. Untuk informasi selengkapnya, lihat [Mengakses objek Context](input-output-contextobject.md#contextobject-access).

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.sync",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!",
        "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID": "{% $states.context.Execution.Id %}"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

 Mesin status yang di-nest mengembalikan hal berikut: 


| Sumber daya | Output | 
| --- | --- | 
| startExecution.sync | String | 
| startExecution.sync:2 | JSON | 

Keduanya akan menunggu mesin status yang di-nest selesai, tetapi mengembalikan format `Output` yang berbeda. Misalnya, jika Anda membuat fungsi Lambda yang mengembalikan objek `{ "MyKey": "MyValue" }`, Anda akan mendapatkan respons berikut:

Untuk startExecution.sync:

```
{
   {{<other fields>}}
   "Output": "{ \"MyKey\": \"MyValue\" }" 
}
```

Untuk startExecution.sync:2:

```
{
   {{<other fields>}} 
   "Output": {
      "MyKey": "MyValue"
   }
}
```

### Mengonfigurasi izin IAM untuk mesin status bersarang
<a name="nested-stepfunctions-iam-permissions"></a>

Mesin status induk menentukan apakah mesin status anak telah menyelesaikan eksekusi menggunakan polling dan peristiwa. Polling memerlukan izin untuk `states:DescribeExecution` sementara peristiwa yang dikirim EventBridge ke Step Functions memerlukan izin untuk`events:PutTargets`,`events:PutRule`, dan. `events:DescribeRule` Jika izin ini hilang dari peran IAM Anda, mungkin ada penundaan sebelum mesin status induk mengetahui penyelesaian eksekusi mesin status anak.

Untuk mesin status yang memanggil `StartExecution` untuk eksekusi alur kerja bersarang tunggal, gunakan kebijakan IAM yang membatasi izin ke mesin status tersebut. 

## Kebijakan IAM untuk memanggil alur kerja Step Functions bersarang
<a name="stepfunctions-iam"></a>

Untuk mesin status yang memanggil `StartExecution` untuk eksekusi alur kerja bersarang tunggal, gunakan kebijakan IAM yang membatasi izin ke mesin status tersebut. 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:{{us-east-1}}:{{123456789012}}:stateMachine:{{myStateMachineName}}"
            ]
        }
    ]
}
```

Untuk informasi selengkapnya, lihat berikut ini:
+ [Mengintegrasikan layanan dengan Step Functions](integrate-services.md)
+ [Meneruskan parameter ke API layanan di Step Functions](connect-parameters.md)
+ [Mulai mesin AWS Step Functions status baru dari eksekusi yang sedang berjalan](#connect-stepfunctions)

------
#### [ Synchronous ]<a name="sync-async-iam-policies"></a>

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:{{us-east-1}}:{{123456789012}}:stateMachine:{{stateMachineName}}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "states:DescribeExecution",
                "states:StopExecution"
            ],
            "Resource": [
               "arn:aws:states:{{us-east-1}}:{{123456789012}}:execution:{{myStateMachineName}}:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:{{us-east-1}}:{{123456789012}}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule"
            ]
        }
    ]
}
```

------
#### [ Asynchronous ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:{{us-east-1}}:{{123456789012}}:stateMachine:{{myStateMachineName}}"
            ]
        }
    ]
}
```

------

**Jenis ARN diperlukan**  
Dalam kebijakan untuk **Synchronous**, perhatikan bahwa `states:StartExecution` memerlukan ARN mesin status `states:DescribeExecution` sedangkan `states:StopExecution` dan memerlukan eksekusi ARN.  
Jika Anda salah menggabungkan ketiga tindakan, JSON akan valid tetapi kebijakan IAM akan salah. Kebijakan yang salah dapat menyebabkan masalah and/or akses alur kerja macet selama eksekusi alur kerja.

Untuk informasi selengkapnya tentang eksekusi alur kerja bersarang, lihat [Mulai eksekusi alur kerja dari status tugas di Step Functions](concepts-nested-workflows.md).