

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Integrar serviços otimizados com o Step Functions
<a name="integrate-optimized"></a>

Seu fluxo de trabalho pode chamar serviços otimizados diretamente usando o campo `Resource` campo de um estado `Task`. Os tópicos a seguir explicam o suporte APIs, os parâmetros e a request/response sintaxe na Amazon States Language para coordenar serviçosAWS. 

Dependendo do tipo e da disponibilidade, seus fluxos de trabalho chamam serviços usando um dos três padrões de integração de serviços:
+ [Solicitar uma resposta (padrão)](connect-to-resource.md#connect-default): aguarde a resposta HTTP e vá para o próximo estado.
+ [Executar um trabalho (`.sync`)](connect-to-resource.md#connect-sync): aguarde a conclusão do trabalho.
+ [Aguardar retorno de chamada (`.waitForTaskToken`)](connect-to-resource.md#connect-wait-token): pause um fluxo de trabalho até que um token de tarefa seja exibido.

Os fluxos de trabalho padrão e expresso comportam as mesmas **integrações**, mas não os mesmos **padrões de integração**. 
+  Os **fluxos de trabalho padrão** comportam integrações de *resposta a solicitações*. Alguns serviços oferecem suporte a *Run a Job (.sync)* ou *Wait for Callback (). waitForTaskToken)* e ambos em alguns casos. Consulte a tabela de integrações otimizadas a seguir para saber detalhes. 
+  **Os fluxos de trabalho expressos** comportam somente integrações de *resposta à solicitação*. 

 Para ajudar a decidir entre os dois tipos, consulte [Escolher o tipo de fluxo de trabalho no Step Functions](choosing-workflow-type.md). 



**AWSIntegrações de SDK em Step Functions**


| Serviço integrado | Resposta de solicitação | Executar um trabalho: *.sync* | *Aguarde o retorno de chamada -. waitForTaskSímbolo* | 
| --- | --- | --- | --- | 
| [Mais de duzentos serviços](supported-services-awssdk.md#supported-services-awssdk-list) | Padrão e expresso | Sem compatibilidade | Standard | 

**Integrações otimizadas ao Step Functions**


| Serviço integrado | Resposta de solicitação | Executar um trabalho: *.sync* | *Aguarde o retorno de chamada -. waitForTaskSímbolo* | 
| --- | --- | --- | --- | 
| [Amazon API Gateway](connect-api-gateway.md) | Padrão e expresso | Sem compatibilidade | Standard | 
| [Amazon Athena](connect-athena.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [AWS Batch](connect-batch.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [Amazon Bedrock](connect-bedrock.md) | Padrão e expresso | Standard | Standard | 
| [AWS CodeBuild](connect-codebuild.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [Amazon DynamoDB](connect-ddb.md) | Padrão e expresso | Sem compatibilidade | Sem compatibilidade | 
| [Amazon ECS/Fargate](connect-ecs.md) | Padrão e expresso | Standard | Standard | 
| [Amazon EKS](connect-eks.md) | Padrão e expresso | Standard | Standard | 
| [Amazon EMR](connect-emr.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [Amazon EMR on EKS](connect-emr-eks.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [Amazon EMR Serverless](connect-emr-serverless.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [Amazon EventBridge](connect-eventbridge.md) | Padrão e expresso | Sem compatibilidade | Standard | 
| [AWS Glue](connect-glue.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [AWS Glue DataBrew](connect-databrew.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [AWS Lambda](connect-lambda.md) | Padrão e expresso | Sem compatibilidade | Standard | 
| [AWS Elemental MediaConvert](connect-mediaconvert.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [Amazon SageMaker AI](connect-sagemaker.md) | Padrão e expresso | Standard | Sem compatibilidade | 
| [Amazon SNS](connect-sns.md) | Padrão e expresso | Sem compatibilidade | Standard | 
| [Amazon SQS](connect-sqs.md) | Padrão e expresso | Sem compatibilidade | Standard | 
| [AWS Step Functions](connect-stepfunctions.md) | Padrão e expresso | Standard | Standard | 

# Crie o API Gateway REST APIs com Step Functions
<a name="connect-api-gateway"></a>

Aprenda a usar o Amazon API Gateway para criar, publicar, manter e monitorar HTTP e REST APIs com Step Functions. Para fazer a integração com o API Gateway, você define um estado `Task` no Step Functions que chama diretamente um endpoint de HTTP do API Gateway ou de REST do API Gateway, sem escrever código ou depender de outra infraestrutura. Uma definição de estado `Task` inclui todas as informações necessárias para a chamada da API. Também é possível selecionar métodos de autorização diferentes.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada do API Gateway**  
`apigateway:invoke:`não tem equivalente na integração de serviços do AWS SDK. Em vez disso, o serviço Optimized API Gateway chama o endpoint do API Gateway diretamente.

## Suporte ao recurso API Gateway
<a name="connect-api-gateway-support"></a>

A integração do API Gateway do Step Functions é compatível com alguns, mas não todos os recursos do API Gateway. Para obter uma lista mais detalhada dos recursos compatíveis, consulte o seguinte: 
+ Compatível com as integrações da API REST do API Gateway e do API HTTP do API Gateway do Step Functions:
  + **Autorizadores**: IAM (usando [Singature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)), No Auth, Lambda Authorizers (baseados em parâmetros de solicitação e baseados em tokens com cabeçalho personalizado)
  + **Tipos de API**: regional
  + **Gerenciamento de API**: nomes de domínio de API do API Gateway, estágio da API, caminho, parâmetros de consulta, corpo da solicitação
+ Compatível com a integração da API HTTP do API Gateway do Step Functions. A integração da API REST do Step Functions API Gateway que fornece a opção de otimização para borda não APIs é suportada.
+ Não compatível com a integração do API Gateway do Step Functions:
  +  **Autorizadores**: Amazon Cognito, Native Open ID Connect OAuth /2.0, cabeçalho de autorização para autorizadores Lambda baseados em tokens 
  +  **Tipos de API**: privado 
  +  **Gerenciamento de API**: nomes de domínio personalizados 

Para obter mais informações sobre o API Gateway e seu HTTP e REST APIs, consulte o seguinte.
+  A página [Conceitos do Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-basic-concept.html). 
+  [Escolha entre HTTP APIs e REST APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html) no guia do desenvolvedor do API Gateway. 

## Formato de solicitação
<a name="connect-api-gateway-requests"></a>

Quando você cria a definição de estado `Task`, o Step Functions valida os parâmetros, cria a URL necessária para realizar a chamada e, em seguida, chama a API. A resposta inclui o código de status HTTP, cabeçalhos e corpo da resposta. O formato da solicitação tem parâmetros obrigatórios e opcionais.

### Parâmetros de solicitação obrigatórios
<a name="connect-api-gateway-requests-required"></a>
+ `ApiEndpoint`
  + Tipo: `String`
  + O nome do host de um URL do API Gateway. O formato é `<API ID>.execute-api.region.amazonaws.com`.

    O ID da API só pode conter uma combinação dos seguintes caracteres alfanuméricos: `0123456789abcdefghijklmnopqrstuvwxyz`
+ `Method`
  + Tipo: `Enum`
  + O método HTTP, que deve ser um dos seguintes: 
    + `GET`
    + `POST`
    + `PUT`
    + `DELETE`
    + `PATCH`
    + `HEAD`
    + `OPTIONS`

### Parâmetros de solicitação opcionais
<a name="connect-api-gateway-requests-optional"></a>
+ `Headers`
  + Tipo: `JSON`
  + Os cabeçalhos HTTP permitem uma lista de valores associados à mesma chave.
+ `Stage`
  + Tipo: `String`
  + O nome do estágio em que a API é implantada no API Gateway. É opcional para qualquer API HTTP que use o estágio `$default`. 
+ `Path`
  + Tipo: `String`
  + Parâmetros de caminho que são anexados após o endpoint da API. 
+ `QueryParameters`
  + Tipo: `JSON`
  + As strings de consulta só permitem uma lista de valores associados à mesma chave. 
+ `RequestBody`
  + Tipo: `JSON` ou `String`
  + O corpo da solicitação HTTP. O tipo pode ser um objeto `JSON` ou `String`. `RequestBody` só é compatível com os métodos de HTTP `PATCH`, `POST` e `PUT`.
+ `AllowNullValues`
  + Tipo: `BOOLEAN`: valor padrão: `false`
  + Com a configuração padrão, os valores **nulos** no estado de entrada da solicitação **não** serão enviados à API. No exemplo a seguir, o campo `category` **não** será incluído na solicitação, a menos que `AllowNullValues` esteja definido como `true` na definição da máquina de estado.

    ```
    {
        "NewPet": {
            "type": "turtle",
            "price": 123,
            "category": null
        }
    }
    ```
**nota**  
Por padrão, campos com valores **nulos** no estado de entrada da solicitação **não** serão enviados à API. É possível forçar o envio de valores nulos à API configurando `AllowNullValues` como `true` na definição da máquina de estado.
+ `AuthType`
  + Tipo: `JSON`
  + O método de autenticação. O método padrão é `NO_AUTH`. Os valores permitidos são: 
    + `NO_AUTH`
    + `IAM_ROLE`
    + `RESOURCE_POLICY`

    Consulte **Autenticação e autorização** para obter mais informações.

**nota**  
Por questões de segurança, as seguintes chaves de cabeçalho HTTP não são permitidas atualmente:  
Qualquer coisa prefixada com `X-Forwarded`, `X-Amz` ou `X-Amzn`.
`Authorization`
`Connection`
`Content-md5`
`Expect`
`Host`
`Max-Forwards`
`Proxy-Authenticate`
`Server`
`TE`
`Transfer-Encoding`
`Trailer`
`Upgrade`
`Via`
`Www-Authenticate`

O exemplo de código a seguir mostra como invocar o API Gateway usando o Step Functions.

```
{
    "Type": "Task", 
    "Resource":"arn:aws:states:::apigateway:invoke", 
    "Arguments": {
        "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com",
        "Method": "GET", 
        "Headers": { 
            "key": ["value1", "value2"] 
        },
        "Stage": "prod",
        "Path": "bills",
        "QueryParameters": {
            "billId": ["123456"]
        },
        "RequestBody": {},
        "AuthType": "NO_AUTH"
    } 
}
```

## Autenticação e autorização
<a name="connect-api-gateway-auth"></a>

Você pode usar os seguintes métodos de autenticação:
+ **Sem autorização**: chame a API diretamente sem nenhum método de autorização.
+ **Perfil do IAM**: com esse método, o Step Functions assume o papel da máquina de estado, assina a solicitação com [Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) (SigV4) e chama a API.
+ **Política de recursos**: o Step Functions autentica a solicitação e, em seguida, chama a API. Você deve anexar uma política de recursos à API que especifique o seguinte:

  1. A máquina de estado que invocará o API Gateway.
**Importante**  
Você deve especificar a máquina de estado para limitar o acesso a ela. Caso contrário, qualquer máquina de estado que autentique a solicitação do API Gateway com a autenticação **Política de recursos** na API receberá acesso.

  1. Esse Step Functions é o serviço que chama o API Gateway: `"Service": "states.amazonaws.com"`.

  1. O recurso que você deseja acessar, incluindo:
     + O *region*.
     + O *account-id* na região especificada.
     + O *api-id*.
     + O *stage-name*.
     + O *HTTP-VERB* (método).
     + O *resource-path-specifier*.

  Para ver um exemplo de política de recursos, consulte [Políticas do IAM para Step Functions e API Gateway](#api-gateway-iam). 

  Para obter mais informações sobre o formato do recurso, consulte [Formato do recurso de permissões para executar a API no API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html#api-gateway-iam-policy-resource-format-for-executing-api) no Guia do desenvolvedor do API Gateway.
**nota**  
As políticas de recursos são compatíveis somente com a API REST.

## Padrões de integração de serviço
<a name="connect-api-gateway-patterns"></a>

A integração do API Gateway oferece suporte a dois padrões de integração de serviços: 
+ [Resposta de solicitação](connect-to-resource.md#connect-default), que é o padrão de integração padrão. Ele permite que o Step Functions avance para a próxima etapa imediatamente após receber uma resposta HTTP.
+ [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token) (`.waitForTaskToken`), que espera até que um token de tarefa seja retornado com uma carga útil. Para usar o `.waitForTaskToken` padrão, anexe. waitForTaskToken no final do campo **Recurso** da definição de sua tarefa, conforme mostrado no exemplo a seguir: 

  ```
  {
      "Type": "Task", 
      "Resource":"arn:aws:states:::apigateway:invoke.waitForTaskToken", 
      "Arguments": {
          "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com",
          "Method": "POST", 
          "Headers": { 
              "TaskToken": "{% $states.context.Task.Token %}"
          },
          "Stage": "prod",
          "Path": "bills/add",
          "QueryParameters": {},
          "RequestBody": {
              "billId": "my-new-bill"
          },
          "AuthType": "IAM_ROLE"
      } 
  }
  ```

## Formato de saída
<a name="connect-api-gateway-output"></a>

Os seguintes parâmetros de saída são fornecidos:


| Nome | Tipo | Description | 
| --- | --- | --- | 
| ResponseBody | JSON ou String | O corpo da resposta da chamada de API. | 
| Headers | JSON | Os cabeçalhos de resposta. | 
| StatusCode | Integer | O código de status HTTP da resposta. | 
| StatusText | String | O texto do status da resposta. | 

Um exemplo de resposta:

```
{
    "ResponseBody": {
        "myBills": []
    },
    "Headers": { 
        "key": ["value1", "value2"]
    }, 
    "StatusCode": 200,
    "StatusText": "OK" 
}
```

## Tratamento de erros
<a name="connect-api-gateway-errors"></a>

Quando ocorre um erro, `error` e `cause` são retornados da seguinte forma: 
+ Se o código de status HTTP estiver disponível, o erro será retornado no formato `ApiGateway.<HTTP Status Code>`.
+ Se o código de status HTTP estiver indisponível, o erro será retornado no formato `ApiGateway.<Exception>`.

Em ambos os casos, `cause` é retornado como uma string.

O seguinte exemplo mostra uma resposta em que ocorreu um erro:

```
{
    "error": "ApiGateway.403", 
    "cause": "{\"message\":\"Missing Authentication Token\"}"
}
```

**nota**  
Um código de status `2XX` indica sucesso e nenhum erro será retornado. Todos os outros códigos de status ou exceções lançadas resultarão em um erro.

## Políticas do IAM para chamadas para o Amazon API Gateway
<a name="api-gateway-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

*Recursos:*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "execute-api:Invoke"
            ],
            "Resource": [
                "arn:aws:execute-api:us-east-1:123456789012:ENDPOINT/STAGE/GET/pets",
                "arn:aws:execute-api:us-east-1:123456789012:ENDPOINT/STAGE/POST/pets"
            ],
            "Effect": "Allow"
        }
    ]
}
```

O exemplo de código a seguir mostra uma política de recursos para chamar o API Gateway.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "states.amazonaws.com"
            },
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:123456789012:myApi-id/stage-name/HTTP-VERB/resource-path-specifier",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "<SourceStateMachineArn>"
                    ]
                }
            }
        }
    ]
}
```

# Realizar consultas do Athena com o Step Functions
<a name="connect-athena"></a>

Você pode se integrar AWS Step Functions ao Amazon Athena para iniciar e interromper a execução da consulta e obter resultados da consulta com o Step Functions. Usando o Step Functions, você pode executar consultas de dados específicas ou agendadas e recuperar os resultados direcionados aos data lakes do S3. Como o Athena não utiliza servidor, não há infraestrutura para configurar ou gerenciar, e você paga apenas pelas consultas executadas. Esta página lista o Athena compatível APIs e fornece um exemplo de `Task` estado para iniciar uma consulta do Athena.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada ao Athena**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) é compatível.
Não há otimizações específicas para o padrão de integração [Resposta de solicitação](connect-to-resource.md#connect-default).
O padrão de integração [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token) não é compatível.

Para fazer a integração AWS Step Functions com o Amazon Athena, você usa a integração de serviços fornecida pelo Athena. APIs

A integração do serviço APIs é a mesma do APIs Athena correspondente. Nem todos APIs oferecem suporte a todos os padrões de integração, conforme mostrado na tabela a seguir.


| solicitações de | Resposta de solicitação | Executar um trabalho (.sync) | 
| --- | --- | --- | 
| StartQueryExecution | Compatível | Compatível | 
| StopQueryExecution | Compatível | Sem compatibilidade | 
| GetQueryExecution | Compatível | Sem compatibilidade | 
| GetQueryResults | Compatível | Sem compatibilidade | 

Veja a seguir um estado de Tarefa que inicia uma consulta do Athena.

```
"Start an Athena query": {
  "Type": "Task",
  "Resource": "arn:aws:states:::athena:startQueryExecution.sync",
  "Arguments": {
    "QueryString": "SELECT * FROM \"myDatabase\".\"myTable\" limit 1",
    "WorkGroup": "primary",
    "ResultConfiguration": {
       "OutputLocation": "s3://amzn-s3-demo-bucket"
    }
  },
  "Next": "Get results of the query"
}
```

## Amazon APIs Athena otimizado:
<a name="connect-athena-api"></a>
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html)
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_StopQueryExecution.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_StopQueryExecution.html)
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryExecution.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryExecution.html)
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryResults.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryResults.html)

**Cota para dados de entrada ou resultado**  
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte [Cotas relacionadas a execuções de máquina de estado](service-quotas.md#service-limits-state-machine-executions).

## Políticas do IAM para chamar o Amazon Athena
<a name="athena-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

**nota**  
Além das políticas do IAM, talvez você precise usar AWS Lake Formation para conceder acesso aos dados em serviços, como o Amazon S3 e o. AWS Glue Data Catalog Para obter mais informações, consulte [Usar o Athena para consultar dados registrados](https://docs.aws.amazon.com/athena/latest/ug/security-athena-lake-formation.html) com. AWS Lake Formation 

### `StartQueryExecution`
<a name="athena-iam-startqueryexecution"></a>

*Recursos estáticos*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:stopQueryExecution",
            "athena:getQueryExecution",
            "athena:getDataCatalog",
            "athena:GetWorkGroup",
            "athena:BatchGetQueryExecution",
            "athena:GetQueryResults",
            "athena:ListQueryExecutions"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/myWorkGroup",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:getDataCatalog"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/myWorkGroup",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------

*Recursos dinâmicos*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:stopQueryExecution",
            "athena:getQueryExecution",
            "athena:getDataCatalog",
            "athena:GetWorkGroup",
            "athena:BatchGetQueryExecution",
            "athena:GetQueryResults",
            "athena:ListQueryExecutions"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:getDataCatalog"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------

### `StopQueryExecution`
<a name="athena-iam-stopqueryexecution"></a>

*Recursos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:stopQueryExecution"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*"
        ]
    }
    ]
}
```

### `GetQueryExecution`
<a name="athena-iam-getqueryexecution"></a>

*Recursos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:getQueryExecution"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*"
        ]
    }
    ]
}
```

### `GetQueryResults`
<a name="athena-iam-getqueryresults"></a>

*Recursos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:getQueryResults"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:GetObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    }
    ]
}
```

# Execute AWS Batch cargas de trabalho com Step Functions
<a name="connect-batch"></a>

Você pode integrar o Step Functions AWS Batch para executar cargas de trabalho de computação em lote na AWS nuvem. Esta página lista os estados suportados AWS Batch APIs e fornece um exemplo de `Task` estado para realizar uma tarefa de processamento em lote.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da AWS Batch integração otimizada**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) está disponível.
Observe que não há otimizações específicas para os padrões de integração [Resposta de solicitação](connect-to-resource.md#connect-default) ou [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token).

Veja a seguir um exemplo de `Task` estado que envia um AWS Batch trabalho e espera que ele seja concluído. Muitos dos argumentos exibidos são opcionais.

```
"Submit Batch Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::batch:submitJob.sync",
    "Arguments": {
        "JobName": "BATCH_NAME",
        "JobQueue": "BATCH_QUEUE_ARN",
        "JobDefinition": "BATCH_JOB_DEFINITION_ARN",
        "ArrayProperties": {
        "Size": 10
        },
        "ContainerOverrides": {
        "ResourceRequirements": [
            {
            "Type": "VCPU",
            "Value": "4"
            }
        ]
        },
        "DependsOn": [
        {
            "JobId": "myJobId",
            "Type": "SEQUENTIAL"
        }
        ],
        "PropagateTags": true,
        "Arguments": {
        "Key1": "value1",
        "Key2": 100
        },
        "RetryStrategy": {
        "Attempts": 1
        },
        "Tags": {
        "Tag": "TAG"
        },
        "Timeout": {
        "AttemptDurationSeconds": 10
        }
    }
}
```

## Otimizado AWS BatchAPIs:
<a name="connect-batch-api"></a>
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

## Políticas do IAM para chamadas AWS Batch
<a name="batch-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

Como os IDs de trabalho para `SubmitJob` e `TerminateJob` são gerados e, portanto, conhecidos apenas em runtime, não é possível criar uma política que restrinja o acesso com base em um recurso específico. 

**Dica para acesso refinado**  
Para adicionar acesso refinado a `SubmitJob` e `TerminateJob`, considere usar tags para trabalhos e criar uma política que limite o acesso com base em tags. Além disso, a fila de trabalhos, a definição e os recursos consumíveis podem ser restringidos para `SubmitJob` com recursos conhecidos.

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:SubmitJob",
                "batch:DescribeJobs",
                "batch:TerminateJob"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForBatchJobsRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:SubmitJob"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Invocar e personalizar modelos do Amazon Bedrock com o Step Functions
<a name="connect-bedrock"></a>

É possível integrar o Step Functions ao Amazon Bedrock para invocar um modelo específico do Amazon Bedrock e criar um trabalho de ajuste fino para personalizar um modelo. Esta página lista o Amazon Bedrock otimizado APIs e fornece um exemplo de `Task` estado para extrair o resultado de uma invocação de modelo.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**dica**  
Para implantar um exemplo de fluxo de trabalho que se integre ao Amazon Bedrock, consulte [Realizar o encadeamento de prompts de IA com o Amazon Bedrock](sample-bedrock-prompt-chaining.md).

## Amazon Bedrockintegração de serviços APIs
<a name="connect-bedrock-custom-apis"></a>

Para integrar AWS Step Functions comAmazon Bedrock, você pode usar o seguinte APIs. Eles APIs são semelhantes aos correspondentes Amazon Bedrock APIs, exceto *InvokeModel*que têm campos de solicitação adicionais.

**API Amazon Bedrock - [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)**  
Cria um trabalho de ajuste fino para personalizar um modelo básico. Você pode invocar a API de integração Step Functions com os padrões de integração **CreateModelCustomizationJob**for *Request Response* ou **CreateModelCustomizationJob.sync** para *Run a Job (.sync)*. Não há diferenças nos campos das chamadas de API.

**API Amazon Bedrock - [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)**  
Invoca o modelo do Amazon Bedrock especificado para executar a inferência usando a entrada fornecida no corpo da solicitação. Você vai usa `InvokeModel` para executar inferência para modelos de texto, modelos de imagem e modelos de incorporação.

O corpo da solicitação da API de integração de Amazon Bedrock serviços *InvokeModel*inclui os seguintes parâmetros adicionais.
+ `Body`: especifica os dados de entrada no formato especificado no cabeçalho da solicitação do tipo de conteúdo. O `Body` contém parâmetros específicos do modelo de destino.

  Se você usar a API `InvokeModel`, deverá especificar o parâmetro `Body`. O Step Functions não valida a entrada fornecida em `Body`.

  Ao especificar o `Body` usando a integração otimizada do Amazon Bedrock, é possível especificar uma carga útil de até 256 KiB. Se a carga útil exceder 256 KiB, recomendamos usar `Input`.
+ `Input`: especifica a fonte da qual recuperar os dados de entrada. Esse campo opcional é específico da integração otimizada do Amazon Bedrock ao Step Functions. Nesse campo, é possível especificar um `S3Uri`.

  É possível especificar `Body` nos Parâmetros ou `Input`, mas não ambos.

  Quando você especifica `Input` sem especificar `ContentType`, o tipo de conteúdo da fonte de dados de entrada se torna o valor de `ContentType`.
+ `Output`: especifica o destino em que a resposta da API é gravada. Esse campo opcional é específico da integração otimizada do Amazon Bedrock ao Step Functions. Nesse campo, é possível especificar um `S3Uri`.

  Se você especificar esse campo, o corpo da resposta da API será substituído por uma referência ao local do Amazon S3 da saída original.

O exemplo a seguir mostra a sintaxe InvokeModel da API para Amazon Bedrock integração.

```
{
    "ModelId": String,  // required
    "Accept": String,  // default: application/json
    "ContentType": String,  // default: application/json
    "Input": {  // not from Bedrock API
        "S3Uri": String
    },  
    "Output": {  // not from Bedrock API
        "S3Uri": String
    } 
}
```

## Definição do estado da tarefa para integração do Amazon Bedrock
<a name="connect-bedrock-task-definition"></a>

A definição do estado de Tarefa a seguir mostra como se integrar ao Amazon Bedrock nas máquinas de estado. Este exemplo mostra um estado de Tarefa que extrai o resultado completo da invocação do modelo especificado pelo caminho, `result_one`. Isso se baseia em [Parâmetros de inferência para modelos básicos](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html). Este exemplo usa o grande modelo de linguagem (LLM) Cohere Command.

```
{
  "Type": "Task",
  "Resource": "arn:aws:states:::bedrock:invokeModel",
  "Arguments": {
    "ModelId": "cohere.command-text-v14",
    "Body": {
      "prompt": "{% states.input.prompt_one %}",
      "max_tokens": 20
    },
    "ContentType": "application/json",
    "Accept": "*/*"
  },
  "End": true
}
```

## IAM policies for calling Amazon Bedrock
<a name="bedrock-iam"></a>

Ao criar uma máquina de estado usando o console, o Step Functions cria automaticamente um perfil de execução para a máquina de estado com os privilégios mínimos necessários. Essas IAM funções geradas automaticamente são válidas para Região da AWS as quais você cria a máquina de estado.

Recomendamos não incluir curingas ao criar políticas do IAM. Como prática recomendada de segurança, você deve definir o escopo de suas políticas o máximo possível. Use políticas dinâmicas somente quando determinados parâmetros de entrada não forem conhecidos durante o runtime.

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

### Exemplos de política do IAM para integração do Amazon Bedrock
<a name="bedrock-iam-policy-eg"></a>

A seção a seguir descreve as permissões do IAM necessárias com base na API do Amazon Bedrock utilizada para uma base específica ou um modelo provisionado. Esta seção também contém exemplos de políticas que concedem acesso total.

Lembre-se de substituir o *italicized* texto pelas informações específicas do seu recurso.
+ [IAMexemplo de política para acessar um modelo de fundação específico usando InvokeModel](#bedrock-policy-invoke-foundation-model)
+ [IAMexemplo de política para acessar um modelo provisionado específico usando InvokeModel](#bedrock-policy-invoke-provisioned-model)
+ [Exemplo de IAM política de acesso completo para usar InvokeModel](#bedrock-policy-invokemodel-full-access)
+ [Exemplo de política do IAM que acessa um modelo de base específico como modelo de base](#bedrock-policy-foundation-model)
+ [Exemplo de política do IAM que acessa um modelo personalizado específico como modelo de base](#bedrock-policy-custom-model)
+ [Exemplo de IAM política de acesso completo para usar CreateModelCustomizationJob .sync](#bedrock-policy-createmodel-full-access)
+ [IAMexemplo de política para acessar um modelo de fundação específico usando CreateModelCustomizationJob .sync](#bedrock-policy-createmodel-sync-foundation-model)
+ [IAMexemplo de política para acessar um modelo personalizado usando CreateModelCustomizationJob .sync](#bedrock-policy-createmodel-sync-custom-model)
+ [Exemplo de IAM política de acesso completo para usar CreateModelCustomizationJob .sync](#bedrock-policy-createmodel-sync-full-access)

#### IAMexemplo de política para acessar um modelo de fundação específico usando InvokeModel
<a name="bedrock-policy-invoke-foundation-model"></a>

Veja a seguir um exemplo IAM de política para uma máquina de estado que acessa um modelo básico específico chamado `amazon.titan-text-express-v1` usando a ação da [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "InvokeModel1",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1"
            ]
        }
    ]
}
```

#### IAMexemplo de política para acessar um modelo provisionado específico usando InvokeModel
<a name="bedrock-policy-invoke-provisioned-model"></a>

Veja a seguir um exemplo IAM de política para uma máquina de estado que acessa um modelo provisionado específico chamado `c2oi931ulksx` usando a ação da [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Sid": "InvokeModel1",
      "Action": [
        "bedrock:InvokeModel"
      ],
      "Resource": [
        "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/c2oi931ulksx"
      ]
    }
  ]
}
```

#### Exemplo de IAM política de acesso completo para usar InvokeModel
<a name="bedrock-policy-invokemodel-full-access"></a>

Veja a seguir um exemplo IAM de política para uma máquina de estado que fornece acesso total quando você usa a ação da [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "InvokeModel1",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/*"
            ]
        }
    ]
}
```

#### Exemplo de política do IAM que acessa um modelo de base específico como modelo de base
<a name="bedrock-policy-foundation-model"></a>

Veja a seguir um exemplo IAM de política para que uma máquina de estado acesse um modelo básico específico `amazon.titan-text-express-v1` chamado de modelo básico usando a ação da [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ] 
}
```

#### Exemplo de política do IAM que acessa um modelo personalizado específico como modelo de base
<a name="bedrock-policy-custom-model"></a>

Veja a seguir um exemplo IAM de política para que uma máquina de estado acesse um modelo personalizado específico como modelo base usando a ação da [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"            
            ]
        }
    ] 
}
```

#### Exemplo de IAM política de acesso completo para usar CreateModelCustomizationJob .sync
<a name="bedrock-policy-createmodel-full-access"></a>

Veja a seguir um exemplo IAM de política para uma máquina de estado que fornece acesso total quando você usa a ação da [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ] 
}
```

#### IAMexemplo de política para acessar um modelo de fundação específico usando CreateModelCustomizationJob .sync
<a name="bedrock-policy-createmodel-sync-foundation-model"></a>

Veja a seguir um exemplo IAM de política para que uma máquina de estado acesse um modelo básico específico chamado `amazon.titan-text-express-v1` usando a ação da API [CreateModelCustomizationJob.sync.](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

#### IAMexemplo de política para acessar um modelo personalizado usando CreateModelCustomizationJob .sync
<a name="bedrock-policy-createmodel-sync-custom-model"></a>

Veja a seguir um exemplo IAM de política para uma máquina de estado acessar um modelo personalizado usando a ação da API [CreateModelCustomizationJob.sync.](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

#### Exemplo de IAM política de acesso completo para usar CreateModelCustomizationJob .sync
<a name="bedrock-policy-createmodel-sync-full-access"></a>

Veja a seguir um exemplo IAM de política para uma máquina de estado que fornece acesso total quando você usa a ação da API [CreateModelCustomizationJob.sync.](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

# Gerencie AWS CodeBuild compilações com Step Functions
<a name="connect-codebuild"></a>

Você pode integrar o Step Functions AWS CodeBuild para iniciar, parar e gerenciar compilações. Esta página lista os suportados CodeBuild APIs que você pode usar com o Step Functions.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

Com a integração do Step Functions, AWS CodeBuild você pode usar o Step Functions para acionar, interromper e gerenciar compilações e compartilhar relatórios de criação. Com o Step Functions, é possível projetar e executar pipelines de integração contínua para validar as alterações de software para aplicações.

**Principais recursos da CodeBuild integração otimizada**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) é compatível.
Depois de chamar `StopBuild` ou`StopBuildBatch`, a compilação ou o lote de compilação não podem ser excluídos imediatamente até que algum trabalho interno seja concluído CodeBuild para finalizar o estado da compilação ou compilações.   
Se você tentar usar `BatchDeleteBuilds` ou `DeleteBuildBatch` durante esse período, a compilação ou o lote de compilação não poderão ser excluídos.   
As integrações de serviços otimizadas de `BatchDeleteBuilds` e `DeleteBuildBatch` incluem uma nova tentativa interna para simplificar o caso de uso de exclusão imediata após a interrupção.

Nem todos APIs oferecem suporte a todos os padrões de integração, conforme mostrado na tabela a seguir.


| solicitações de | Resposta de solicitação | Executar um trabalho (.sync) | 
| --- | --- | --- | 
| StartBuild | Compatível | Compatível | 
| StopBuild | Compatível | Sem compatibilidade | 
| BatchDeleteBuilds | Compatível | Sem compatibilidade | 
| BatchGetReports | Compatível | Sem compatibilidade | 
| StartBuildBatch | Compatível | Compatível | 
| StopBuildBatch | Compatível | Sem compatibilidade | 
| RetryBuildBatch | Compatível | Compatível | 
| DeleteBuildBatch | Compatível | Sem compatibilidade | 

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

## Otimizado CodeBuild APIs
<a name="connect-codebuild-api"></a>
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuild.html#API_StartBuild_RequestSyntax](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuild.html#API_StartBuild_RequestSyntax)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuild.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuild.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchDeleteBuilds.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchDeleteBuilds.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchGetReports.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchGetReports.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuildBatch.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuildBatch.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_RetryBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_RetryBuildBatch.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DeleteBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DeleteBuildBatch.html)

**nota**  
Ao usar JSONPath, você pode usar o operador de descida recursiva (`..`) para fornecer parâmetros para. `BatchDeleteBuilds` Com a matriz exibida, é possível transformar o campo `Arn` de `StartBuild` em um parâmetro `Ids` plural, como mostrado no exemplo a seguir.  

```
"BatchDeleteBuilds": {
    "Type": "Task",
    "Resource": "arn:aws:states:::codebuild:batchDeleteBuilds",
    "Arguments": {
        "Ids.$": "$.Build..Arn"
    },
    "Next": "MyNextState"
},
```

## Políticas do IAM para chamadas AWS CodeBuild
<a name="codebuild-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

*Recursos:*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:123456789012:StepFunctionsSample-CodeBuildExecution1111-2222-3333-wJalrXUtnFEMI-SNSTopic-bPxRfiCYEXAMPLEKEY"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "codebuild:StartBuild",
                "codebuild:StopBuild",
                "codebuild:BatchGetBuilds",
                "codebuild:BatchGetReports"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule"
            ],
            "Effect": "Allow"
        }
    ]
}
```

### `StartBuild`
<a name="codebuild-iam-startbuild"></a>

*Recursos estáticos*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild",
        "codebuild:StopBuild",
        "codebuild:BatchGetBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule"
      ]
    }
  ]
}
```

------
#### [ Request Response ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    }
  ]
}
```

------

*Recursos dinâmicos*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild",
        "codebuild:StopBuild",
        "codebuild:BatchGetBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule"
      ]
    }
  ]
}
```

------
#### [ Request Response ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    }
  ]
}
```

------

### `StopBuild`
<a name="codebuild-iam-stopbuild"></a>

*Recursos estáticos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StopBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    }
  ]
}
```

*Recursos dinâmicos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StopBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    }
  ]
}
```

### `BatchDeleteBuilds`
<a name="codebuild-iam-batchdeletebuilds"></a>

*Recursos estáticos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchDeleteBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    }
  ]
}
```

*Recursos dinâmicos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchDeleteBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    }
  ]
}
```

### `BatchGetReports`
<a name="codebuild-iam-batchgetreports"></a>

*Recursos estáticos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchGetReports"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:report-group/myReportName"
      ]
    }
  ]
}
```

*Recursos dinâmicos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchGetReports"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:report-group/*"
      ]
    }
  ]
}
```

### `StartBuildBatch`
<a name="codebuild-iam-startbuildbatch"></a>

*Recursos estáticos*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildBatchRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

------

*Recursos dinâmicos*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildBatchRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

------

### `StopBuildBatch`
<a name="codebuild-iam-stopbuildbatch"></a>

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StopBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StopBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

### `RetryBuildBatch`
<a name="codebuild-iam-retrybuildbatch"></a>

*Recursos estáticos*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

------

*Recursos dinâmicos*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

------

### `DeleteBuildBatch`
<a name="codebuild-iam-deletebuildbatch"></a>

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:DeleteBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:DeleteBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

# Realizar operações CRUD do DynamoDB com o Step Functions
<a name="connect-ddb"></a>

É possível integrar o Step Functions ao DynamoDB para realizar operações CRUD em uma tabela do DynamoDB. Esta página lista o APIs DynamoDB compatível e fornece um `Task` exemplo de estado para recuperar um item do DynamoDB.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada ao DynamoDB**  
Não há uma otimização específica para o padrão de integração [Resposta de solicitação](connect-to-resource.md#connect-default).
O padrão de integração [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token) não é aceito.
Somente as ações [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) e [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html) da API estão disponíveis por meio de integração otimizada. Outras ações de API, como as que [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)estão disponíveis usando a integração do AWS DynamoDB SDK. 

O seguinte é um estado de exemplo de `Task` que recupera uma mensagem do DynamoDB.

```
"Read next Message from DynamoDB": {
    "Type": "Task",
    "Resource": "arn:aws:states:::dynamodb:getItem",
    "Arguments": {
        "TableName": "DYNAMO_DB_TABLE_NAME",
        "Key": {
            "MessageId": {"S": "{% $List[0] %}"}
        }
    }
```

Para obter esse estado em um exemplo funcional, consulte o modelo inicial [Transferir registros de dados com o Lambda, o DynamoDB e o Amazon SQS](sample-project-transfer-data-sqs.md).

**Diferenças no prefixo de exceção**  
Quando as conexões padrão do DynamoDB apresentarem um erro, o prefixo da exceção será `DynamoDb` (maiúsculas e minúsculas).  
Em integrações otimizadas, o prefixo da exceção será `DynamoDB` (`DB` em maiúsculo). 

**Cota para dados de entrada ou resultado**  
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte [Cotas relacionadas a execuções de máquina de estado](service-quotas.md#service-limits-state-machine-executions).

## DynamoDB otimizado APIs
<a name="connect-dynamodb-api"></a>
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

## Políticas do IAM para chamar o DynamoDB
<a name="dynamo-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:123456789012:table/myTableName"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": "*"
        }
    ]
}
```

Para ver mais informações sobre as políticas do IAM para todas as ações de API do DynamoDB, consulte [políticas do IAM com o DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html) no *Guia do desenvolvedor do Amazon DynamoDB*. Para ver mais informações sobre as políticas do IAM para o PartiQL for DynamoDB, consulte [políticas do IAM com o PartiQL for DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-iam.html) no *Guia do desenvolvedor do Amazon DynamoDB*.

# Realizar tarefas do ECS ou do Fargate com o Step Functions
<a name="connect-ecs"></a>

Saiba como integrar o Step Functions ao Amazon ECS ou ao Fargate para realizar e gerenciar tarefas. No Amazon ECS, uma tarefa é a unidade fundamental da computação. As tarefas têm uma definição que especifica como um contêiner do Docker deve ser executado, como imagem do contêiner, limites de CPU e de memória, configuração de rede e outros parâmetros. Esta página lista as ações de API do Amazon ECS disponíveis e fornece instruções sobre como transmitir dados para uma tarefa do Amazon ECS usando o Step Functions.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da ECS/Fargate integração otimizada com a Amazon**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) é compatível.
O `ecs:runTask` pode retornar uma resposta HTTP 200, mas ter um campo `Failures` não vazio da seguinte forma:  
**Resposta à solicitação**: retorna a resposta e não falha na tarefa, o mesmo que integrações não otimizadas.
**Executar um trabalho ou um token de tarefa**: se um campo `Failures` não vazio for encontrado, a tarefa falhará com um erro `AmazonECS.Unknown`.

## Amazon otimizada ECS/Fargate APIs
<a name="connect-ecs-api"></a>
+ [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) inicia uma nova tarefa usando a definição de tarefa especificada.

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

## Como transmitir dados para uma tarefa do Amazon ECS
<a name="connect-ecs-pass-to"></a>

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

É possível usar o comando `overrides` para substituir o comando padrão de um contêiner e transmitir a entrada para as tarefas do Amazon ECS. Consulte [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html). No exemplo, usamos JsonPath para passar valores para a `Task` da entrada para o `Task` estado.

Veja a seguir um estado `Task` que executa uma tarefa do Amazon ECS e aguarda até que ela seja concluída.

```
{
 "StartAt": "Run an ECS Task and wait for it to complete",
 "States": {
   "Run an ECS Task and wait for it to complete": {
     "Type": "Task",
     "Resource": "arn:aws:states:::ecs:runTask.sync",
     "Arguments": {
                "Cluster": "cluster-arn",
                "TaskDefinition": "job-id",
                "Overrides": {
                    "ContainerOverrides": [
                        {
                            "Name": "container-name",
                            "Command": "{% $state.input.commands %}" 
                        }
                    ]
                }
            },
     "End": true
    }
  }
}
```

A linha `Command` em `ContainerOverrides` transmite os comandos da entrada do estado para o contêiner.

No exemplo anterior da máquina de estado, dada a seguinte entrada, cada um dos comandos seria passado como uma substituição de contêiner:

```
{
  "commands": [
    "test command 1",
    "test command 2",
    "test command 3"
  ]
}
```

Veja a seguir um estado `Task` que executa uma tarefa do Amazon ECS e aguarda o retorno do token da tarefa. Consulte [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"Manage ECS task",
   "States":{  
      "Manage ECS task":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::ecs:runTask.waitForTaskToken",
         "Arguments":{  
            "LaunchType":"FARGATE",
            "Cluster":"cluster-arn",
            "TaskDefinition":"job-id",
            "Overrides":{  
               "ContainerOverrides":[  
                  {  
                     "Name":"container-name",
                     "Environment":[  
                        {  
                           "Name" : "TASK_TOKEN_ENV_VARIABLE",
                           "Value" : "{% $states.context.Task.Token %}"
                        }
                     ]
                  }
               ]
            }
         },
         "End":true
      }
   }
}
```

## Políticas do IAM para chamar o Amazon ECS/AWS Fargate
<a name="ecs-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

Uma vez que o valor de `TaskId` não é conhecido até que a tarefa seja enviada, o Step Functions cria uma política de `"Resource": "*"` com mais privilégios.

**nota**  
Você só pode interromper tarefas do Amazon Elastic Container Service (Amazon ECS) que foram iniciadas pelo Step Functions, apesar da política do IAM `"*"`.

------
#### [ Run a Job (.sync) ]

*Recursos estáticos*

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "arn:aws:ecs:region:
account-id:task-definition/taskDefinition:revisionNumber"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecs:StopTask",
                "ecs:DescribeTasks"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:region:
account-id:rule/StepFunctionsGetEventsForECSTaskRule"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask",
                "ecs:StopTask",
                "ecs:DescribeTasks"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:region:
account-id:rule/StepFunctionsGetEventsForECSTaskRule"
            ]
        }
    ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

*Recursos estáticos*

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "arn:aws:ecs:region:
account-id:task-definition/taskDefinition:revisionNumber"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Se suas tarefas agendadas do Amazon ECS exigirem o uso de uma função de execução de tarefa, uma função de tarefa ou uma substituição de função de tarefa, você deverá adicionar `iam:PassRole` permissões para cada função de execução de tarefa, função de tarefa ou substituição de função de tarefa à função CloudWatch Events IAM da entidade chamadora, que neste caso é Step Functions.

# Criar e gerenciar clusters do Amazon EKS com o Step Functions
<a name="connect-eks"></a>

Saiba como integrar o Step Functions ao Amazon EKS para gerenciar clusters do Kubernetes. O Step Functions fornece dois tipos de integração de serviços APIs para integração com o Amazon Elastic Kubernetes Service. Uma delas permite que você use o Amazon EKS APIs para criar e gerenciar um cluster do Amazon EKS. A outra permite que você interaja com seu cluster usando a API Kubernetes e execute trabalhos como parte do fluxo de trabalho do seu aplicativo.

 Você pode usar as integrações da API do Kubernetes com clusters do Amazon EKS criados usando Step Functions, com clusters do Amazon EKS criados pela ferramenta **eksctl** ou pelo [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou métodos similares. Para obter mais informações, consulte [Criação de um cluster para o Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) no Guia do usuário do Amazon EKS.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada ao Amazon EKS**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) é compatível.
Não há otimizações específicas para o padrão de integração [Resposta de solicitação](connect-to-resource.md#connect-default).
O padrão de integração [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token) não é compatível.

**nota**  
A integração do Step Functions EKS oferece suporte somente ao Kubernetes APIs com acesso público ao endpoint. Por padrão, os endpoints do servidor da API de clusters EKS têm acesso público. Para obter mais informações, consulte o [Controle de acesso ao endpoint do cluster do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) no **Guia do Usuário do Amazon EKS**.

O Step Functions não encerra automaticamente um cluster do Amazon EKS se a execução for interrompida. Se sua máquina de estado parar antes do encerramento do cluster Amazon EKS, seu cluster poderá continuar funcionando indefinidamente e poderá acumular cobranças adicionais. Para evitar isso, certifique-se de que qualquer cluster do Amazon EKS que você criar seja encerrado corretamente. Para obter mais informações, consulte:
+ [Excluir um cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) no Guia do Usuário do Amazon EKS.
+ [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) nos Padrões de Integração de Serviço.

**Cota para dados de entrada ou resultado**  
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte [Cotas relacionadas a execuções de máquina de estado](service-quotas.md#service-limits-state-machine-executions).

## Integrações da API do Kubernetes
<a name="connect-eks-kubernetes-apis"></a>

O Step Functions é compatível com os seguintes APIs Kubernetes:

### RunJob
<a name="connect-eks-kubernetes-apis-runjob"></a>

A integração do serviço `eks:runJob` permite que você execute um trabalho no cluster do Amazon EKS. A variante `eks:runJob.sync` permite que você aguarde a conclusão do trabalho e, opcionalmente, recupere os registros.

Seu servidor da API do Kubernetes deve conceder permissões para o perfil do IAM usado pela sua máquina de estado. Para obter mais informações, consulte [Permissões](#connect-eks-permissions).

Para o padrão **Executar um trabalho** (`.sync`), o status do trabalho é determinado por meio de pesquisa. O Step Functions pesquisa inicialmente a uma taxa de aproximadamente 1 pesquisa por minuto. Por fim, essa taxa diminui para aproximadamente 1 pesquisa a cada 5 minutos. Se você precisar de pesquisas mais frequentes ou precisar de mais controle sobre a estratégia de pesquisa, poderá usar a integração `eks:call` para consultar o status do trabalho.

A integração `eks:runJob` é específica para `batch/v1` Tarefas no Kubernetes. Para obter mais informações, consulte [Tarefas](https://kubernetes.io/docs/concepts/workloads/controllers/job/) na documentação do Kubernetes. Se você quiser gerenciar outros recursos do Kubernetes, incluindo recursos personalizados, use a integração de serviços `eks:call`. Você pode usar o Step Functions para criar ciclos de pesquisa, conforme demonstrado no projeto de exemplo de [Sondar o status do trabalho com o Lambda e o AWS Batch](sample-project-job-poller.md). 

Os parâmetros compatíveis incluem:
+ `ClusterName`: o nome do cluster do Amazon EKS que você quer chamar.
  + `Type`: `String`
  + Obrigatório: sim
+ `CertificateAuthority`: os dados de certificado codificados em Base64 necessários para se comunicar com o cluster. Você pode obter esse valor no [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou usando a [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API do Amazon EKS.
  + `Type`: `String`
  + Obrigatório: sim
+ `Endpoint`: o URL do endpoint para o servidor da API do Kubernetes. Você pode obter esse valor no [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou usando a [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API do Amazon EKS.
  + `Type`: `String`
  + Obrigatório: sim
+ `Namespace`: o namespace em que a tarefa será executada. Se não for fornecido, o namespace `default` será usado.
  + `Type`: `String`
  + Obrigatório: não
+ `Job`: A definição da Tarefa do Kubernetes. Consulte [Tarefas](https://kubernetes.io/docs/concepts/workloads/controllers/job/) na documentação do Kubernetes. 
  + `Type`: `JSON` ou `String`
  + Obrigatório: sim
+ `LogOptions`: um conjunto de opções para controlar a recuperação opcional de logs. Aplicável somente se o padrão de integração do serviço Executar um trabalho (.sync) for usado para aguardar a conclusão do trabalho.
  + `Type`: `JSON`
  + Obrigatório: não
  + Os registros são incluídos na resposta abaixo da chave `logs`. Pode haver vários pods na tarefa, cada uma com vários contêineres.

    ```
    { 
      ...
      "logs": { 
        "pods": { 
          "pod1": { 
            "containers": { 
              "container1": { 
                "log": <log> 
              },
              ...
            }
          },
          ...
        }
      }
    ```
  + A recuperação do log é realizada com base no melhor esforço. Se houver um erro ao recuperar um log, no lugar do campo `log` estarão os campos `error` e `cause`.
+ `LogOptions.RetrieveLogs`: habilite a recuperação de log após a conclusão da tarefa. Por padrão, os logs não são recuperados.
  + `Type`: `Boolean`
  + Obrigatório: não
+ `LogOptions.RawLogs`: se `RawLogs` for definido como verdadeiro, os logs serão retornados como strings brutas sem a tentativa de analisá-los em JSON. Por padrão, os logs são desserializados em JSON, se possível. Em alguns casos, essa análise pode introduzir alterações indesejadas, como limitação da precisão de números contendo muitos dígitos.
  + `Type`: `Boolean`
  + Obrigatório: não
+ `LogOptions.LogParameters`: a API Read Log da API do Kubernetes é compatível com parâmetros de consulta para controlar a recuperação de logs. Por exemplo, você pode usar `tailLines` ou `limitBytes` para limitar o tamanho dos logs recuperados e permanecer dentro da cota de tamanho de dados do Step Functions. Para obter mais informações, consulte a seção [Log de leitura](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#read-log-pod-v1-core) da Referência da API do Kubernetes.
  + `Type: `Mapa de `String` até `List of Strings`
  + Obrigatório: não
  + Exemplo:

    ```
    "LogParameters": {
      "tailLines": [ "6" ]
    }
    ```

O exemplo a seguir inclui um estado `Task` que executa um trabalho, aguarda sua conclusão e, em seguida, recupera os logs do trabalho:

```
{
  "StartAt": "Run a job on EKS",
  "States": {
    "Run a job on EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:runJob.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://AKIAIOSFODNN7EXAMPLE.yl4.us-east-1.eks.amazonaws.com",
        "LogOptions": {
          "RetrieveLogs": true
        },
        "Job": {
          "apiVersion": "batch/v1",
          "kind": "Job",
          "metadata": {
            "name": "example-job"
          },
          "spec": {
            "backoffLimit": 0,
            "template": {
              "metadata": {
                "name": "example-job"
              },
              "spec": {
                "containers": [
                  {
                    "name": "pi-2000",
                    "image": "perl",
                    "command": [ "perl" ],
                    "args": [
                      "-Mbignum=bpi",
                      "-wle",
                      "print bpi(2000)"
                    ]
                  }
                ],
                "restartPolicy": "Never"
              }
            }
          }
        }
      },
      "End": true
    }
  }
}
```

### `Call`
<a name="connect-eks-kubernetes-apis-call"></a>

A integração do serviço `eks:call` permite que você use a API do Kubernetes para ler e gravar objetos de recursos do Kubernetes por meio de um endpoint da API do Kubernetes. 

Seu servidor da API do Kubernetes deve conceder permissões para o perfil do IAM usado pela sua máquina de estado. Para obter mais informações, consulte [Permissões](#connect-eks-permissions).

Para obter mais informações sobre as operações disponíveis, consulte a [Referência de API do Kubernetes](https://kubernetes.io/docs/reference/kubernetes-api/).

Os parâmetros compatíveis para `Call` incluem:
+ `ClusterName`: o nome do cluster do Amazon EKS que você quer chamar.
  + `Type`: string
  + Obrigatório: Sim
+ `CertificateAuthority`: os dados de certificado codificados em Base64 necessários para se comunicar com o cluster. Você pode obter esse valor no [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou usando a [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API do Amazon EKS.
  + `Type`: `String`
  + Obrigatório: Sim
+ `Endpoint`: o URL do endpoint para o servidor da API do Kubernetes. Você pode encontrar esse valor no [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou usando a DescribeCluster API do Amazon EKS.
  + `Type`: `String`
  + Obrigatório: Sim
+ `Method`: o método HTTP da sua solicitação. Um destes: `GET`, `POST`, `PUT`, `DELETE`, `HEAD` ou `PATCH`.
  + `Type`: `String`
  + Obrigatório: Sim
+ `Path`: o caminho HTTP da operação da API REST do Kubernetes.
  + `Type`: `String`
  + Obrigatório: Sim
+ `QueryParameters`: os parâmetros de consulta HTTP da operação da API REST do Kubernetes.
  + `Type: `Mapa de `String` até `List of Strings`
  + Obrigatório: não
  + Exemplo:

    ```
    "QueryParameters": {
      "labelSelector": [ "job-name=example-job" ]
    }
    ```
+ `RequestBody`: o corpo da mensagem HTTP da operação da API REST do Kubernetes.
  + `Type`: `JSON` ou `String`
  + Obrigatório: não

Veja a seguir um estado `Task` que utiliza `eks:call` para listar os pods pertencentes à tarefa `example-job`.

```
{
  "StartAt": "Call EKS",
  "States": {
    "Call EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://444455556666.yl4.us-east-1.eks.amazonaws.com",
        "Method": "GET",
        "Path": "/api/v1/namespaces/default/pods",
        "QueryParameters": {
          "labelSelector": [
            "job-name=example-job"
          ]
        }
      },
      "End": true
    }
  }
}
```

Veja a seguir um estado `Task` que utiliza `eks:call` para excluir a tarefa `example-job` e define o `propagationPolicy` para garantir que os pods da tarefa também sejam excluídos.

```
{
  "StartAt": "Call EKS",
  "States": {
    "Call EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://444455556666.yl4.us-east-1.eks.amazonaws.com",
        "Method": "DELETE",
        "Path": "/apis/batch/v1/namespaces/default/jobs/example-job",
        "QueryParameters": {
          "propagationPolicy": [
            "Foreground"
          ]
        }
      },
      "End": true
    }
  }
}
```

## Amazon EKS otimizado APIs
<a name="connect-eks-apis"></a>

A APIs sintaxe e o Amazon EKS compatíveis incluem:
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_ResponseSyntax) 

    Quando um cluster do Amazon EKS é criado usando a integração do serviço `eks:createCluster`, o perfil do IAM é adicionado à tabela de autorização de RBAC do Kubernetes como o administrador (com permissões do system:masters). Inicialmente, somente a entidade do IAM pode fazer chamadas para o servidor da API do Kubernetes. Para obter mais informações, consulte:
    + [Gerenciar usuários ou funções do IAM para o seu cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) no *Guia do Usuário do Amazon EKS* 
    + A [Permissões](#connect-eks-permissions) seção 

    O Amazon EKS usa funções vinculadas ao serviço que contém as permissões que o Amazon EKS considera necessárias para chamar outros serviços em seu nome. Se essas funções vinculadas ao serviço ainda não existirem em sua conta, você deverá adicionar a permissão `iam:CreateServiceLinkedRole` ao perfil do IAM usado pelo Step Functions. Para obter mais informações, consulte [Uso de Funções Vinculadas ao Serviço](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) no *Guia do Usuário do Amazon EKS*.

    O perfil do IAM usado pelo Step Functions deve ter permissões `iam:PassRole` para aprovar o perfil do IAM do cluster para o Amazon EKS. Para obter mais informações, consulte o [perfil do IAM do cluster do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) no *Guia do Usuário do Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_ResponseSyntax) 

    Você deve excluir todos os perfis ou grupos de nós do Fargate antes de excluir um cluster.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_ResponseSyntax) 

    O Amazon EKS usa funções vinculadas ao serviço que contém as permissões que o Amazon EKS considera necessárias para chamar outros serviços em seu nome. Se essas funções vinculadas ao serviço ainda não existirem em sua conta, você deverá adicionar a permissão `iam:CreateServiceLinkedRole` ao perfil do IAM usado pelo Step Functions. Para obter mais informações, consulte [Uso de Funções Vinculadas ao Serviço](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) no *Guia do Usuário do Amazon EKS*.

    O Amazon EKS no Fargate pode não estar disponível em todas as regiões. Para obter informações sobre a disponibilidade por região, consulte a seção sobre o [Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) no *Guia do usuário do Amazon EKS*.

    O perfil do IAM usado pelo Step Functions deve ter permissões `iam:PassRole` para aprovar o perfil do IAM de execução do pod para o Amazon EKS. Para obter mais informações, consulte [Função de execução de pods](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) no *Guia do Usuário do Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_ResponseSyntax) 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_ResponseSyntax) 

    O Amazon EKS usa funções vinculadas ao serviço que contém as permissões que o Amazon EKS considera necessárias para chamar outros serviços em seu nome. Se essas funções vinculadas ao serviço ainda não existirem em sua conta, você deverá adicionar a permissão `iam:CreateServiceLinkedRole` ao perfil do IAM usado pelo Step Functions. Para obter mais informações, consulte [Uso de Funções Vinculadas ao Serviço](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) no *Guia do Usuário do Amazon EKS*. 

    O perfil do IAM usado pelo Step Functions deve ter permissões `iam:PassRole` para aprovar o perfil do IAM do nó para o Amazon EKS. Para obter mais informações, consulte [Uso de Funções Vinculadas ao Serviço](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) no *Guia do Usuário do Amazon EKS*.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_ResponseSyntax) 

Veja a seguir um `Task` que cria um cluster do Amazon EKS.

```
{
  "StartAt": "CreateCluster.sync",
  "States": {
    "CreateCluster.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createCluster.sync",
      "Arguments": {
        "Name": "MyCluster",
        "ResourcesVpcConfig": {
          "SubnetIds": [
            "subnet-053e7c47012341234",
            "subnet-027cfea4b12341234"
          ]
        },
        "RoleArn": "arn:aws:iam::account-id:role/MyEKSClusterRole"
      },
      "End": true
    }
  }
}
```

Veja a seguir um estado `Task` que exclui um cluster do Amazon EKS.

```
{
  "StartAt": "DeleteCluster.sync",
  "States": {
    "DeleteCluster.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteCluster.sync",
      "Arguments": {
        "Name": "MyCluster"
      },
      "End": true
    }
  }
}
```

Veja a seguir um estado `Task` que cria um perfil do Fargate.

```
{
  "StartAt": "CreateFargateProfile.sync",
  "States": {
    "CreateFargateProfile.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createFargateProfile.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "FargateProfileName": "MyFargateProfile",
        "PodExecutionRoleArn": "arn:aws:iam::account-id:role/MyFargatePodExecutionRole",
        "Selectors": [{
            "Namespace": "my-namespace",
            "Labels": { "my-label": "my-value" }
          }]
      },
      "End": true
    }
  }
}
```

Veja a seguir um estado `Task` que exclui um perfil do Fargate.

```
{
  "StartAt": "DeleteFargateProfile.sync",
  "States": {
    "DeleteFargateProfile.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteFargateProfile.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "FargateProfileName": "MyFargateProfile"
      },
      "End": true
    }
  }
}
```

Veja a seguir um estado `Task` que cria um grupo de nós.

```
{
  "StartAt": "CreateNodegroup.sync",
  "States": {
    "CreateNodegroup.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createNodegroup.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "NodegroupName": "MyNodegroup",
        "NodeRole": "arn:aws:iam::account-id:role/MyNodeInstanceRole",
        "Subnets": ["subnet-09fb51df01234", "subnet-027cfea4b1234"] 
      },
      "End": true
    }
  }
}
```

Veja a seguir um estado `Task` que exclui um grupo de nós.

```
{
  "StartAt": "DeleteNodegroup.sync",
  "States": {
    "DeleteNodegroup.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteNodegroup.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "NodegroupName": "MyNodegroup"
      },
      "End": true
    }
  }
}
```

## Permissões
<a name="connect-eks-permissions"></a>

Quando um cluster do Amazon EKS é criado usando a integração do serviço `eks:createCluster`, o perfil do IAM é adicionado à tabela de autorização RBAC do Kubernetes como o administrador, com permissões do `system:masters`. Inicialmente, somente a entidade do IAM pode fazer chamadas para o servidor da API do Kubernetes. Por exemplo, você não poderá usar o **kubectl** para interagir com seu servidor de API do Kubernetes, a menos que assuma a mesma função da sua máquina de estado Step Functions ou configure o Kubernetes para conceder permissões a entidades adicionais do IAM. Para obter mais informações, consulte [Gerenciar usuários ou funções do IAM para o seu cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) no *Guia do Usuário do Amazon EKS*. 

Você pode adicionar permissão para entidades adicionais do IAM, como usuários ou funções, adicionando-as ao namespace `aws-auth` `ConfigMap` no kube-system. Se você estiver criando seu cluster a partir do Step Functions, use a integração de serviços `eks:call`. 

Veja a seguir um estado `Task` que cria `aws-auth` `ConfigMap` e concede permissão `system:masters` ao usuário `arn:aws:iam::account-id:user/my-user` e ao perfil do IAM`arn:aws:iam::account-id:role/my-role`.

```
{
  "StartAt": "Add authorized user",
  "States": {
    "Add authorized user": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "LS0tLS1CRUd...UtLS0tLQo=",
        "Endpoint": "https://444455556666.yl4.region.eks.amazonaws.com",
        "Method": "POST",
        "Path": "/api/v1/namespaces/kube-system/configmaps",
        "RequestBody": {
           "apiVersion": "v1",
           "kind": "ConfigMap",
           "metadata": {
              "name": "aws-auth",
              "namespace": "kube-system"
           },
           "data": {
             "mapUsers": "[{ \"userarn\": \"arn:aws:iam::account-id:user/my-user\", \"username\": \"my-user\", \"groups\": [ \"system:masters\" ] } ]",
             "mapRoles": "[{ \"rolearn\": \"arn:aws:iam::account-id:role/my-role\", \"username\": \"my-role\", \"groups\": [ \"system:masters\" ] } ]"
           }
        }
      },
      "End": true
    }
  }
```

**nota**  
Você pode ver o ARN de um perfil do IAM exibido em um formato que inclui o caminho **/service-role/**, como `arn:aws:iam::account-id:role/service-role/my-role`. Esse token do caminho **service-role** não deve ser incluído ao listar a função em `aws-auth`

Quando seu cluster for criado pela primeira vez, o `aws-auth` `ConfigMap` não existirá, mas será adicionado automaticamente se você criar um perfil do Fargate. Você pode recuperar o valor atual de`aws-auth`, adicionar as permissões adicionais e `PUT` uma nova versão. Normalmente, é mais fácil criar `aws-auth` antes do perfil do Fargate.

Se seu cluster foi criado fora do Step Functions, você pode configurar o **kubectl** para se comunicar com seu servidor de API do Kubernetes. Em seguida, crie um novo `aws-auth` `ConfigMap` usando `kubectl apply -f aws-auth.yaml` ou edite um que já exista usando`kubectl edit -n kube-system configmap/aws-auth`. Para obter mais informações, consulte:
+  [Crie um kubeconfig para o Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) no *Guia do Usuário do Amazon EKS*. 
+  [Gerenciar usuários ou funções do IAM para o seu cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) no *Guia do Usuário do Amazon EKS*. 

Se seu perfil do IAM não tiver permissões suficientes no Kubernetes, as integrações dos serviços `eks:call` ou `eks:runJob` falharão com o seguinte erro:

```
Error:
EKS.401

Cause:
{
  "ResponseBody": {
    "kind": "Status",
    "apiVersion": "v1",
    "metadata": {},
    "status": "Failure",
    "message": "Unauthorized",
    "reason": "Unauthorized",
    "code": 401
  },
  "StatusCode": 401,
  "StatusText": "Unauthorized"
}
```

## Políticas do IAM para chamar o Amazon EKS
<a name="eks-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

### `CreateCluster`
<a name="eks-iam-createcluster"></a>

*Recursos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:CreateCluster"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster",
                "eks:DeleteCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:444455556666:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::444455556666:role/StepFunctionsSample-EKSClusterManag-EKSServiceRole-ANPAJ2UCCR6DPCEXAMPLE"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "eks.amazonaws.com"
                }
            }
        }
    ]
}
```

```


```

### `CreateNodeGroup`
<a name="eks-iam-createnodegroup"></a>

*Recursos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeSubnets",
                "eks:CreateNodegroup"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeNodegroup",
                "eks:DeleteNodegroup"
            ],
            "Resource": "arn:aws:eks:us-east-1:444455556666:nodegroup/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:ListAttachedRolePolicies"
            ],
            "Resource": "arn:aws:iam::444455556666:role/*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::444455556666:role/StepFunctionsSample-EKSClusterMan-NodeInstanceRole-ANPAJ2UCCR6DPCEXAMPLE"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "eks.amazonaws.com"
                }
            }
        }
    ]
}
```

### `DeleteCluster`
<a name="eks-iam-deletecluster"></a>

*Recursos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DeleteCluster",
                "eks:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:eks:us-east-1:444455556666:cluster/ExampleCluster"
            ]
        }
    ]
}
```

### `DeleteNodegroup`
<a name="eks-iam-deletenodegroup"></a>

*Recursos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DeleteNodegroup",
                "eks:DescribeNodegroup"
            ],
            "Resource": [
                "arn:aws:eks:us-east-1:444455556666:nodegroup/ExampleCluster/ExampleNodegroup/*"
            ]
        }
    ]
}
```

Para ver mais informações sobre o uso do Amazon EKS com o Step Functions, consulte [Criar e gerenciar clusters do Amazon EKS com o Step Functions](#connect-eks).

# Criar e gerenciar clusters do Amazon EMR com o Step Functions
<a name="connect-emr"></a>

Saiba como fazer a integração AWS Step Functions com o Amazon EMR usando a integração do serviço Amazon EMR fornecida. APIs A integração do serviço APIs é semelhante à do Amazon EMR correspondente APIs, com algumas diferenças nos campos que são passados e nas respostas que são retornadas.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada ao Amazon EMR**  
A integração otimizada do serviço Amazon EMR tem um conjunto personalizado APIs que envolve o Amazon EMR APIs subjacente, descrito abaixo. Por causa disso, ela difere significativamente da integração de serviços do AWS SDK do Amazon EMR.
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) é compatível.

O Step Functions não encerra automaticamente um cluster do Amazon EMR se a execução for interrompida. Se sua máquina de estado parar antes do encerramento do cluster do Amazon EMR, seu cluster poderá continuar funcionando indefinidamente e poderá acumular cobranças adicionais. Para evitar isso, certifique-se de que qualquer cluster do Amazon EMR criado por você seja encerrado corretamente. Para obter mais informações, consulte:
+ [Controle o encerramento do cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html) no Guia do Usuário do Amazon EMR.
+ A seção [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) de padrões de integração de serviços.

**nota**  
A partir de `emr-5.28.0`, você pode especificar o parâmetro `StepConcurrencyLevel` ao criar um cluster para permitir que várias etapas sejam executadas em paralelo em um único cluster. Você pode usar os estados de `Map` e `Parallel` do Step Functions para enviar trabalho em paralelo ao cluster.

A disponibilidade da integração do serviço Amazon EMR está sujeita à disponibilidade do Amazon EMR. APIs Consulte a documentação do [Amazon EMR](https://docs.aws.amazon.com//govcloud-us/latest/UserGuide/govcloud-emr.html) quanto a limitações em regiões especiais.

**nota**  
Para integração com o Amazon EMR, o Step Functions tem uma frequência de pesquisa de trabalhos de codificação rígida de 60 segundos para os primeiros 10 minutos e 300 segundos depois disso.

## Amazon EMR otimizado APIs
<a name="connect-emr-api"></a>

A tabela a seguir descreve as diferenças entre cada API de integração de serviços do Amazon EMR e o Amazon EMR correspondente. APIs


| API de integração de serviços do Amazon EMR | API do EMR correspondente | Diferenças | 
| --- | --- | --- | 
| createCluster Cria e inicia a execução de um cluster (fluxo de trabalho).  O Amazon EMR está vinculado diretamente a um tipo exclusivo de perfil do IAM conhecido como função vinculada ao serviço. Para que `createCluster` e `createCluster.sync` funcionem, você deve ter configurado as permissões necessárias para criar a função vinculada ao serviço `AWSServiceRoleForEMRCleanup`. Para obter mais informações sobre isso, incluindo uma instrução que você pode adicionar à política de permissões IAM, consulte [Usar a função vinculada ao serviço para o Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/using-service-linked-roles.html).  | [runJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html) | createClusterusa a mesma sintaxe de solicitação que [runJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html), exceto pelo seguinte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/step-functions/latest/dg/connect-emr.html)A resposta é a seguinte: <pre>{<br />  "ClusterId": "string"<br />}</pre> O Amazon EMR usa o seguinte: <pre>{<br />  "JobFlowId": "string"<br />}</pre>  | 
| createCluster.sync Cria e inicia a execução de um cluster (fluxo de trabalho).  | [runJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html) | O mesmo que createCluster, mas espera que o cluster atinja o estado WAITING. | 
| setClusterTerminationProteção Bloqueia um cluster (fluxo de trabalho) para que as EC2 instâncias no cluster não possam ser encerradas por intervenção do usuário, uma chamada de API ou um erro de fluxo de trabalho. | [setTerminationProtection](https://docs.aws.amazon.com/emr/latest/APIReference/API_SetTerminationProtection.html) | A solicitação usa o seguinte:<pre>{<br />  "ClusterId": "string"<br />}</pre> O Amazon EMR usa o seguinte:<pre>{<br />  "JobFlowIds": ["string"]<br />}</pre>  | 
| terminateCluster Desliga um cluster (fluxo de trabalho).  | [terminateJobFlows](https://docs.aws.amazon.com/emr/latest/APIReference/API_TerminateJobFlows.html) | A solicitação usa o seguinte:<pre>{<br />  "ClusterId": "string"<br />}</pre> O Amazon EMR usa o seguinte:<pre>{<br />  "JobFlowIds": ["string"]<br />}</pre> | 
| terminateCluster.syncDesliga um cluster (fluxo de trabalho). | [terminateJobFlows](https://docs.aws.amazon.com/emr/latest/APIReference/API_TerminateJobFlows.html) | O mesmo que terminateCluster, mas aguarda o encerramento do cluster. | 
| addStep Adiciona uma nova etapa a um cluster em execução. Se preferir, você também poderá especificar o parâmetro `[ExecutionRoleArn](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html#EMR-AddJobFlowSteps-request-ExecutionRoleArn)` ao usar essa API. | [addJobFlowEtapas](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html) | A solicitação usa a chave "ClusterId". O Amazon EMR usa o "JobFlowId". A solicitação usa uma única etapa.<pre>{<br />  "Step": <"StepConfig object"><br />}</pre> O Amazon EMR usa o seguinte:<pre>{<br />  "Steps": [<StepConfig objects>]<br />}</pre> A resposta é a seguinte:<pre>{<br />  "StepId": "string"<br />}</pre> O Amazon EMR retorna o seguinte:<pre>{<br />  "StepIds": [<strings>]<br />}</pre>  | 
| addStep.sync Adiciona uma nova etapa a um cluster em execução. Se preferir, você também poderá especificar o parâmetro `[ExecutionRoleArn](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html#EMR-AddJobFlowSteps-request-ExecutionRoleArn)` ao usar essa API. | [addJobFlowEtapas](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html) | O mesmo que addStep, mas aguarda a etapa ser concluída. | 
| cancelStep Cancela uma etapa pendente em um cluster em execução. | [cancelSteps](https://docs.aws.amazon.com/emr/latest/APIReference/API_CancelSteps.html) |  A solicitação usa o seguinte:<pre>{<br />  "StepId": "string"<br />}</pre> O Amazon EMR usa o seguinte:<pre>{<br />  "StepIds": [<strings>]<br />}</pre> A resposta é a seguinte:<pre>{<br />  "CancelStepsInfo": <CancelStepsInfo object><br />}</pre> O Amazon EMR usa o seguinte:<pre>{<br />  "CancelStepsInfoList": [<CancelStepsInfo objects>]<br />}</pre>  | 
| modifyInstanceFleetByName Modifica as capacidades sob demanda e spot de destino para a frota de instâncias com o `InstanceFleetName` especificado. | [modifyInstanceFleet](https://docs.aws.amazon.com/emr/latest/APIReference/API_ModifyInstanceFleet.html) | O pedido é o mesmo que para modifyInstanceFleet, exceto pelo seguinte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/step-functions/latest/dg/connect-emr.html)  | 
| modifyInstanceGroupByName Modifica o número de nós e as configurações de um grupo de instâncias. | [modifyInstanceGroups](https://docs.aws.amazon.com/emr/latest/APIReference/API_ModifyInstanceGroups.html) | O pedido é o seguinte:<pre>{<br />  "ClusterId": "string",<br />  "InstanceGroup": <InstanceGroupModifyConfig object><br />}</pre> O Amazon EMR usa uma lista: <pre>{<br />  "ClusterId": ["string"],<br />  "InstanceGroups": [<InstanceGroupModifyConfig objects>]<br />}</pre> Dentro do objeto `InstanceGroupModifyConfig`, o campo `InstanceGroupId` não é permitido. Um novo campo, `InstanceGroupName`, foi adicionado. Em tempo de execução, o `InstanceGroupId` é determinado automaticamente pela integração do serviço chamando `ListInstanceGroups` e analisando o resultado.  | 

## Exemplo de fluxo de trabalho
<a name="connect-emr-api-examples"></a>

Veja a seguir um estado `Task` que cria um cluster.

```
"Create_Cluster": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync",
    "Arguments": {
        "Name": "MyWorkflowCluster",
        "VisibleToAllUsers": true,
        "ReleaseLabel": "emr-5.28.0",
        "Applications": [
            {
                "Name": "Hive"
            }
        ],
        "ServiceRole": "EMR_DefaultRole",
        "JobFlowRole": "EMR_EC2_DefaultRole",
        "LogUri": "s3n://aws-logs-account-id-us-east-1/elasticmapreduce/",
        "Instances": {
            "KeepJobFlowAliveWhenNoSteps": true,
            "InstanceFleets": [
                {
                    "InstanceFleetType": "MASTER",
                    "Name": "MASTER",   
                    "TargetOnDemandCapacity": 1,
                    "InstanceTypeConfigs": [
                        {
                            "InstanceType": "m4.xlarge"
                        }
                    ]
                },
                {
                    "InstanceFleetType": "CORE",
                    "Name": "CORE",
                    "TargetOnDemandCapacity": 1,
                    "InstanceTypeConfigs": [
                        {
                            "InstanceType": "m4.xlarge"
                        }
                    ]
                }
            ]
        }
    },
    "End": true
}
```

Veja a seguir um estado `Task` que habilita a proteção contra encerramento. 

```
"Enable_Termination_Protection": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:setClusterTerminationProtection",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
        "TerminationProtected": true
    },
    "End": true
}
```

Veja a seguir um estado `Task` que envia uma etapa para um cluster. 

```
"Step_One": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
        "ExecutionRoleArn": "arn:aws:iam::account-id:role/myEMR-execution-role",
        "Step": {
            "Name": "The first step",
            "ActionOnFailure": "TERMINATE_CLUSTER",
            "HadoopJarStep": {
                "Jar": "command-runner.jar",
                "Args": [
                    "hive-script",
                    "--run-hive-script",
                    "--args",
                    "-f",
                    "s3://region.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q",
                    "-d",
                    "INPUT=s3://region.elasticmapreduce.samples",
                    "-d",
                    "OUTPUT=s3://<amzn-s3-demo-bucket>/MyHiveQueryResults/"
                ]
            }
        }
    },
    "End": true
}
```

Veja a seguir um estado `Task` que cancela uma etapa. 

```
"Cancel_Step_One": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:cancelStep",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
        "StepId": "{% $AddStepsResult.StepId %}"
    },
    "End": true
}
```

Veja a seguir um estado `Task` que encerra um cluster. 

```
"Terminate_Cluster": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:terminateCluster.sync",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
    },
    "End": true
}
```

Veja a seguir um estado `Task` que expande ou reduz um cluster para um grupo de instâncias.

```
"ModifyInstanceGroupByName": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceGroupByName",
    "Arguments": {
        "ClusterId": "j-account-id3",
        "InstanceGroupName": "MyCoreGroup",
        "InstanceGroup": {
            "InstanceCount": 8
        }
    },
    "End": true
}
```

Veja a seguir um estado `Task` que expande ou reduz um cluster para uma frota de instâncias.

```
"ModifyInstanceFleetByName": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceFleetByName",
    "Arguments": {
        "ClusterId": "j-account-id3",
        "InstanceFleetName": "MyCoreFleet",
        "InstanceFleet": {
            "TargetOnDemandCapacity": 8,
            "TargetSpotCapacity": 0
        }
    },
    "End": true
}
```

## Políticas do IAM para chamar o Amazon EMR
<a name="emr-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

### `addStep`
<a name="emr-iam-addstep"></a>

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:AddJobFlowSteps",
                "elasticmapreduce:DescribeStep",
                "elasticmapreduce:CancelSteps"
            ],
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/clusterId"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:AddJobFlowSteps",
        "elasticmapreduce:DescribeStep",
        "elasticmapreduce:CancelSteps"
      ],
      "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
    }
  ]
}
```

### `cancelStep`
<a name="emr-iam-cancelstep"></a>

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:CancelSteps",
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:CancelSteps",
            "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
        }
    ]
}
```

### `createCluster`
<a name="emr-iam-createcluster"></a>

*Recursos estáticos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:RunJobFlow",
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:TerminateJobFlows"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": [
        "arn:aws:iam::123456789012:role/myRoleName"
      ]
    }
  ]
}
```

### `setClusterTerminationProtection`
<a name="emr-iam-clusterterminationprotection"></a>

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:SetTerminationProtection",
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:SetTerminationProtection",
            "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
        }
    ]
}
```

### `modifyInstanceFleetByName`
<a name="emr-iam-modifyinstancefleetbyname"></a>

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceFleet",
                "elasticmapreduce:ListInstanceFleets"
            ],
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceFleet",
                "elasticmapreduce:ListInstanceFleets"
            ],
            "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
        }
    ]
}
```

### `modifyInstanceGroupByName`
<a name="emr-iam-modifyinstancegroupbyname"></a>

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceGroups",
                "elasticmapreduce:ListInstanceGroups"
            ],
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceGroups",
                "elasticmapreduce:ListInstanceGroups"
            ],
            "Resource": "*"
        }
    ]
}
```

### `terminateCluster`
<a name="emr-iam-terminatecluster"></a>

*Recursos estáticos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:TerminateJobFlows",
        "elasticmapreduce:DescribeCluster"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
      ]
    }
  ]
}
```

*Recursos dinâmicos*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:TerminateJobFlows",
        "elasticmapreduce:DescribeCluster"
      ],
      "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
    }
  ]
}
```

# Crie e gerencie clusters do Amazon EMR no EKS com AWS Step Functions
<a name="connect-emr-eks"></a>

Saiba como fazer a integração AWS Step Functions com o Amazon EMR no EKS usando a integração do serviço Amazon EMR no EKS. APIs A integração de serviços APIs é a mesma do Amazon EMR correspondente no EKS APIs, mas nem todas APIs oferecem suporte a todos os padrões de integração, conforme mostrado na tabela a seguir.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Como a integração otimizada do Amazon EMR no EKS é diferente da integração do Amazon EMR no EKS SDK AWS**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) é compatível.
Não há otimizações específicas para o padrão de integração [Resposta de solicitação](connect-to-resource.md#connect-default).
O padrão de integração [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token) não é compatível.

**nota**  
Para integração com o Amazon EMR, o Step Functions tem uma frequência de pesquisa de trabalhos de codificação rígida de 60 segundos para os primeiros 10 minutos e 300 segundos depois disso.


| solicitações de | Resposta de solicitação | Executar um trabalho (.sync) | 
| --- | --- | --- | 
| CreateVirtualCluster | Compatível | Sem compatibilidade | 
| DeleteVirtualCluster | Compatível | Compatível | 
| StartJobRun | Compatível | Compatível | 

Amazon EMR compatível com EKS: APIs

**Cota para dados de entrada ou resultado**  
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte [Cotas relacionadas a execuções de máquina de estado](service-quotas.md#service-limits-state-machine-executions).


+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html)
  + [Sintaxe da solicitação](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_RequestSyntax)
  + [Parâmetros compatíveis](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_RequestBody)
  + [Sintaxe da resposta](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_ResponseSyntax)
+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html)
  + [Sintaxe da solicitação](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html#API_DeleteVirtualCluster_RequestSyntax)
  + [Parâmetros compatíveis](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html#API_DeleteVirtualCluster_RequestParameters)
  + [Sintaxe da resposta](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_ResponseSyntax)
+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html)
  + [Sintaxe da solicitação](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_RequestSyntax)
  + [Parâmetros compatíveis](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_RequestParameters)
  + [Sintaxe da resposta](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_ResponseSyntax)

Veja a seguir um estado `Task` que cria um cluster virtual.

```
"Create_Virtual_Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::emr-containers:createVirtualCluster",
  "Arguments": {
    "Name": "MyVirtualCluster",
    "ContainerProvider": {
      "Id": "EKSClusterName",
      "Type": "EKS",
      "Info": {
        "EksInfo": {
          "Namespace": "Namespace"
        }
      }
    }
  },
  "End": true
}
```

Veja a seguir um `Task` estado que envia um trabalho a um cluster virtual e aguarde até que ele seja concluído.

```
"Submit_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-containers:startJobRun.sync",
    "Arguments": {
      "Name": "MyJobName",
      "VirtualClusterId": "{% $VirtualClusterId %}",
      "ExecutionRoleArn": "arn:aws:iam::<accountId>:role/job-execution-role",
      "ReleaseLabel": "emr-6.2.0-latest",
      "JobDriver": {
        "SparkSubmitJobDriver": {
          "EntryPoint": "s3://<amzn-s3-demo-bucket>/jobs/trip-count.py",
          "EntryPointArguments": [
            "60"
          ],
          "SparkSubmitParameters": "--conf spark.driver.cores=2 --conf spark.executor.instances=10 --conf spark.kubernetes.pyspark.pythonVersion=3 --conf spark.executor.memory=10G --conf spark.driver.memory=10G --conf spark.executor.cores=1 --conf spark.dynamicAllocation.enabled=false"
        }
      },
      "ConfigurationOverrides": {
        "ApplicationConfiguration": [
          {
            "Classification": "spark-defaults",
            "Properties": {
              "spark.executor.instances": "2",
              "spark.executor.memory": "2G"
            }
          }
        ],
        "MonitoringConfiguration": {
          "PersistentAppUI": "ENABLED",
          "CloudWatchMonitoringConfiguration": {
            "LogGroupName": "MyLogGroupName",
            "LogStreamNamePrefix": "MyLogStreamNamePrefix"
          },
          "S3MonitoringConfiguration": {
            "LogUri": "s3://<amzn-s3-demo-logging-bucket1>"
          }
        }
      },
      "Tags": {
        "taskType": "jobName"
      }
    },
    "End": true
}
```

Veja a seguir um `Task` estado que exclui um cluster virtual e aguarde a conclusão da exclusão.

```
"Delete_Virtual_Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::emr-containers:deleteVirtualCluster.sync",
  "Arguments": {
    "Id": "{% $states.input.VirtualClusterId %}",
  },
  "End": true
}
```

Para saber mais sobre como configurar IAM permissões ao usar Step Functions com outros AWS serviços, consulte[Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md).

# Criar e gerenciar aplicações do Amazon EMR Serverless com o Step Functions
<a name="connect-emr-serverless"></a>

Saiba como criar, iniciar, interromper e excluir aplicações no EMR Sem Servidor usando o Step Functions. Esta página lista os `Task` estados suportados APIs e fornece exemplos para realizar casos de uso comuns.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada ao EMR Serverless**  
 A integração otimizada de EMR Serverless serviços tem um conjunto personalizado [APIs](#connect-emr-serverless-custom-apis)que envolve o subjacente EMR Serverless APIs. Por causa dessa personalização, a EMR Serverless integração otimizada difere significativamente da integração do serviço AWS SDK. 
Além disso, a integração otimizada do EMR Serverless é compatível com o padrão de integração do [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync).
O padrão de integração [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token) **não** é aceito.

## EMR Serverlessintegração de serviços APIs
<a name="connect-emr-serverless-custom-apis"></a>

Para fazer a integração AWS Step Functions comEMR Serverless, você pode usar as seis integrações EMR Serverless de serviços a seguir APIs. Essas integrações de serviços APIs são semelhantes às correspondentes EMR Serverless APIs, com algumas diferenças nos campos que são passados e nas respostas que são retornadas.

A tabela a seguir descreve as diferenças entre cada API de integração de serviço do EMR Serverless e a API do EMR Serverless correspondente.


| API de integração de serviço do EMR Serverless | API do EMR Serverless correspondente | Diferenças | 
| --- | --- | --- | 
|  *createApplication* Cria um aplicativo. O EMR Serverless está vinculado a um tipo exclusivo de função do IAM conhecida como função vinculada ao serviço. Para que `createApplication` e `createApplication.sync` funcionem, você deve ter configurado as permissões necessárias para criar a função vinculada ao serviço `AWSServiceRoleForAmazonEMRServerless`. Para obter mais informações sobre isso, incluindo uma instrução de que você pode adicionar à política de permissões do IAM, consulte [Usar funções vinculadas ao serviço para o EMR Serverless](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/using-service-linked-roles.html).  |  [CreateApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CreateApplication.html)  | Nenhum | 
|  *createApplication.sync* Cria um aplicativo.  |  [CreateApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CreateApplication.html)  |  Não há diferenças entre as solicitações e as respostas da API do EMR Serverless e da API de integração de serviços do EMR Serverless. No entanto, *createApplication.sync* espera que o aplicativo alcance o estado de `CREATED`.  | 
|  *startApplication* Inicia um aplicativo especificado e inicializa a capacidade inicial do aplicativo, se configurado.  |  [StartApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartApplication.html)  |  A resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless inclui os seguintes dados. <pre>{<br />  "ApplicationId": "string"<br />}</pre>  | 
|  *startApplication.sync* Inicia um aplicativo especificado e inicializa a capacidade inicial do aplicativo, se configurado.  |  [StartApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartApplication.html)  |  A resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless inclui os seguintes dados. <pre>{<br />  "ApplicationId": "string"<br />}</pre> Além disso, *startApplication.sync* espera que o aplicativo alcance o estado de `STARTED`.  | 
|  *stopApplication* Interrompe um aplicativo especificado e libera a capacidade inicial, se configurada. Todas as tarefas programadas e em execução devem ser concluídas ou canceladas antes de interromper um aplicativo.  |  [StopApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StopApplication.html)  |  A resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless inclui os seguintes dados. <pre>{<br />  "ApplicationId": "string"<br />}</pre>  | 
|  *stopApplication.sync* Interrompe um aplicativo especificado e libera a capacidade inicial, se configurada. Todas as tarefas programadas e em execução devem ser concluídas ou canceladas antes de interromper um aplicativo.  |  [StopApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StopApplication.html)  |  A resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless inclui os seguintes dados. <pre>{<br />  "ApplicationId": "string"<br />}</pre> Além disso, *stopApplication.sync* espera que o aplicativo alcance o estado de `STOPPED`.  | 
|  *deleteApplication* Exclui um aplicativo. Um aplicativo deve estar no estado `STOPPED` ou `CREATED` para ser excluído.  |  [DeleteApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_DeleteApplication.html)  |  A resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless inclui os seguintes dados. <pre>{<br />  "ApplicationId": "string"<br />}</pre>  | 
|  *deleteApplication.sync* Exclui um aplicativo. Um aplicativo deve estar no estado `STOPPED` ou `CREATED` para ser excluído.  |  [DeleteApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_DeleteApplication.html)  |  A resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless inclui os seguintes dados. <pre>{<br />  "ApplicationId": "string"<br />}</pre> Além disso, *stopApplication.sync* espera que o aplicativo alcance o estado de `TERMINATED`.  | 
|  *startJobRun* Inicia uma execução de tarefa.  |  [StartJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)  | Nenhum | 
|  *startJobRun.sync* Inicia uma execução de tarefa.  |  [StartJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)  |  Não há diferenças entre as solicitações e as respostas da API do EMR Serverless e da API de integração de serviços do EMR Serverless. No entanto, *startJobRun.sync* espera que o aplicativo alcance o `SUCCESS` estado.  | 
|  *cancelJobRun* Cancela uma execução de tarefa.  |  [CancelJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CancelJobRun.html)  | Nenhum | 
|  *cancelJobRun.sync* Cancela uma execução de tarefa.  |  [CancelJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CancelJobRun.html)  |  Não há diferenças entre as solicitações e as respostas da API do EMR Serverless e da API de integração de serviços do EMR Serverless. No entanto, *cancelJobRun.sync* espera que o aplicativo alcance o `CANCELLED` estado.  | 

## Casos de uso da integração do EMR sem servidor
<a name="connect-emr-serverless-use-cases"></a>

Para a integração otimizada de serviços do EMR Serverless, recomendamos que você crie um único aplicativo e, em seguida, use esse aplicativo para executar várias tarefas. Por exemplo, em uma única máquina de estado, você pode incluir várias [startJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)solicitações, todas usando o mesmo aplicativo. Os exemplos de [Estado de tarefa do fluxo de trabalho](state-task.md) estado a seguir mostram casos de uso EMR Serverless APIs com os quais se integrarStep Functions. Para obter informações sobre outros casos de uso do EMR Serverless, consulte [O que é o Amazon EMR Serverless](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless.html).

**dica**  
Para implementar um exemplo de uma máquina de estado que se integra ao EMR Serverless para executar várias tarefas, consulte [Executar uma tarefa do EMR Serverless](sample-emr-serverless-job.md).
+ [Cria uma aplicação](#connect-emr-serverless-task-state-createapp)
+ [Inicia o aplicativo](#connect-emr-serverless-task-state-startapp)
+ [Interrompe o aplicativo](#connect-emr-serverless-task-state-stopapp)
+ [Deleta o aplicativo](#connect-emr-serverless-task-state-deleteapp)
+ [Inicia uma tarefa em um aplicativo](#connect-emr-serverless-task-state-startjobrun)
+ [Cancela uma tarefa em um aplicativo](#connect-emr-serverless-task-state-canceljobrun)

Para saber mais sobre como configurar IAM permissões ao usar Step Functions com outros AWS serviços, consulte[Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md).

Nos exemplos mostrados nos casos de uso a seguir, substitua o *italicized* texto pelas informações específicas do seu recurso. Por exemplo, *yourApplicationId* substitua pelo ID do seu EMR Serverless aplicativo, como`00yv7iv71inak893`.

### Cria uma aplicação
<a name="connect-emr-serverless-task-state-createapp"></a>

O exemplo de estado da Tarefa a seguir cria um aplicativo usando a API de integração do serviço *createApplication.sync.*

```
"Create_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:createApplication.sync",
    "Arguments": {
        "Name": "MyApplication",
        "ReleaseLabel": "emr-6.9.0",
        "Type": "SPARK"
    },
    "End": true
}
```

### Inicia o aplicativo
<a name="connect-emr-serverless-task-state-startapp"></a>

O exemplo de estado da Tarefa a seguir inicia um aplicativo usando a API de integração do serviço *startApplication.sync.*

```
"Start_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:startApplication.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId"
    },
    "End": true
}
```

### Interrompe o aplicativo
<a name="connect-emr-serverless-task-state-stopapp"></a>

O exemplo de estado da Tarefa a seguir interrompe um aplicativo usando a API de integração do serviço *stopApplication.sync.*

```
"Stop_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:stopApplication.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId"
    },
    "End": true
}
```

### Deleta o aplicativo
<a name="connect-emr-serverless-task-state-deleteapp"></a>

O exemplo de estado da Tarefa a seguir deleta um aplicativo usando a API de integração do serviço *deleteApplication.sync.*

```
"Delete_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:deleteApplication.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId"
    },
    "End": true
}
```

### Inicia uma tarefa em um aplicativo
<a name="connect-emr-serverless-task-state-startjobrun"></a>

O exemplo de estado de tarefa a seguir inicia um trabalho em um aplicativo usando a API de integração de serviços *startJobRun.sync.*

```
"Start_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:startJobRun.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId",
        "ExecutionRoleArn": "arn:aws:iam::account-id:role/myEMRServerless-execution-role",
        "JobDriver": {
            "SparkSubmit": {
                "EntryPoint": "s3://<amzn-s3-demo-bucket>/sample.py",
                "EntryPointArguments": ["1"],
                "SparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=4g --conf spark.driver.cores=2 --conf spark.driver.memory=4g --conf spark.executor.instances=1"
            }
        }
    },
    "End": true
}
```

### Cancela uma tarefa em um aplicativo
<a name="connect-emr-serverless-task-state-canceljobrun"></a>

O exemplo de estado da tarefa a seguir cancela um trabalho em um aplicativo usando a API de integração de serviços *cancelJobRun.sync.*

```
"Cancel_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:cancelJobRun.sync",
    "Arguments": {
        "ApplicationId": "{% $states.input.ApplicationId %}",
        "JobRunId": "{% $states.input.JobRunId %}"
    },
    "End": true
}
```

## Políticas do IAM para chamar o Amazon EMR Serverless
<a name="emr-serverless-iam"></a>

Ao criar uma máquina de estado usando o console, o Step Functions cria automaticamente um perfil de execução para a máquina de estado com os privilégios mínimos necessários. Essas IAM funções geradas automaticamente são válidas para Região da AWS as quais você cria a máquina de estado.

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

Recomendamos não incluir curingas ao criar políticas do IAM. Como prática recomendada de segurança, você deve definir o escopo de suas políticas o máximo possível. Use políticas dinâmicas somente quando determinados parâmetros de entrada não forem conhecidos durante o runtime.

Além disso, os usuários administradores devem ter cuidado ao conceder perfis de execução a usuários não administradores para executar as máquinas de estado. Recomendamos que você inclua políticas passRole nos perfis de execução se estiver criando políticas por conta própria. Também recomendamos que você adicione as chaves de contexto `aws:SourceARN` e `aws:SourceAccount` e nos perfis de execução.

### Exemplos de políticas do IAM para integração do EMR sem servidor com o Step Functions
<a name="emr-serverless-iam-policy-eg"></a>
+ [Exemplo de política do IAM para CreateApplication](#emr-serverless-policy-createapp)
+ [Exemplo de política do IAM para StartApplication](#emr-serverless-policy-startapp)
+ [Exemplo de política do IAM para StopApplication](#emr-serverless-policy-stopapp)
+ [Exemplo de política do IAM para DeleteApplication](#emr-serverless-policy-deleteapp)
+ [Exemplo de política do IAM para StartJobRun](#emr-serverless-policy-startjobrun)
+ [Exemplo de política do IAM para CancelJobRun](#emr-serverless-policy-canceljobrun)

#### Exemplo de política do IAM para CreateApplication
<a name="emr-serverless-policy-createapp"></a>

Veja a seguir um exemplo de política do IAM para uma máquina de estado com um CreateApplication [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

**nota**  
Você precisa especificar as CreateServiceLinkedRole permissões em suas políticas do IAM durante a criação do primeiro aplicativo em sua conta. Depois disso, não será necessário adicionar essa permissão. Para obter informações sobre CreateServiceLinkedRole, consulte [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)nas https://docs.aws.amazon.com/IAM/ últimas APIReference //.

Os recursos estáticos e dinâmicos para as políticas a seguir são os mesmos.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:CreateApplication"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetApplication",
                "emr-serverless:DeleteApplication"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::123456789012:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "ops.emr-serverless.amazonaws.com"
                }
            }
        }
   ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   
   "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:CreateApplication"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::123456789012:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "ops.emr-serverless.amazonaws.com"
                }
            }
        }
    ]
}
```

------

#### Exemplo de política do IAM para StartApplication
<a name="emr-serverless-policy-startapp"></a>

**Recursos estáticos**  
Veja a seguir exemplos de políticas do IAM para recursos estáticos quando você usa uma máquina de estado com um StartApplication [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication",
               "emr-serverless:GetApplication",
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        }
    ]
}
```

------

**Recursos dinâmicos**  
Veja a seguir exemplos de políticas do IAM para recursos dinâmicos quando você usa uma máquina de estado com um StartApplication [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication",
               "emr-serverless:GetApplication",
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

#### Exemplo de política do IAM para StopApplication
<a name="emr-serverless-policy-stopapp"></a>

**Recursos estáticos**  
Veja a seguir exemplos de políticas do IAM para recursos estáticos quando você usa uma máquina de estado com um StopApplication [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        }
    ]
}
```

------

**Recursos dinâmicos**  
Veja a seguir exemplos de políticas do IAM para recursos dinâmicos quando você usa uma máquina de estado com um StopApplication [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

#### Exemplo de política do IAM para DeleteApplication
<a name="emr-serverless-policy-deleteapp"></a>

**Recursos estáticos**  
Veja a seguir exemplos de políticas do IAM para recursos estáticos quando você usa uma máquina de estado com um DeleteApplication [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        }
    ]
}
```

------

**Recursos dinâmicos**  
Veja a seguir exemplos de políticas do IAM para recursos dinâmicos quando você usa uma máquina de estado com um DeleteApplication [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

#### Exemplo de política do IAM para StartJobRun
<a name="emr-serverless-policy-startjobrun"></a>

**Recursos estáticos**  
Veja a seguir exemplos de políticas do IAM para recursos estáticos quando você usa uma máquina de estado com um StartJobRun [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetJobRun",
                "emr-serverless:CancelJobRun"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId/jobruns/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        }
    ]
}
```

------

**Recursos dinâmicos**  
Veja a seguir exemplos de políticas do IAM para recursos dinâmicos quando você usa uma máquina de estado com um StartJobRun [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun",
               "emr-serverless:GetJobRun",
               "emr-serverless:CancelJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        }
    ]
}
```

------

#### Exemplo de política do IAM para CancelJobRun
<a name="emr-serverless-policy-canceljobrun"></a>

**Recursos estáticos**  
Veja a seguir exemplos de políticas do IAM para recursos estáticos quando você usa uma máquina de estado com um CancelJobRun [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun",
               "emr-serverless:GetJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId/jobruns/jobRunId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId/jobruns/jobRunId"
            ]
        }
    ]
}
```

------

**Recursos dinâmicos**  
Veja a seguir exemplos de políticas do IAM para recursos dinâmicos quando você usa uma máquina de estado com um CancelJobRun [Estado de tarefa do fluxo de trabalho](state-task.md) estado.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun",
               "emr-serverless:GetJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

# Adicione EventBridge eventos com Step Functions
<a name="connect-eventbridge"></a>

O Step Functions fornece uma API de integração de serviços para integração com a Amazon EventBridge. Saiba como criar aplicações orientadas a eventos enviando eventos personalizados diretamente dos fluxos de trabalho do Step Functions.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da EventBridge integração otimizada**  
O ARN de execução e o ARN da máquina de estado são automaticamente anexados ao campo `Resources` de cada `PutEventsRequestEntry`.
Se a resposta de `PutEvents` apresentar um valor diferente de zero `FailedEntryCount`, então o estado `Task` falhará com o erro `EventBridge.FailedEntry`.

 Para usar a `PutEvents` API, você precisará criar uma EventBridge regra em sua conta que corresponda ao padrão específico dos eventos que você enviará. Por exemplo, você pode: 
+ Crie uma função Lambda em sua conta que receba e imprima um evento que corresponda a uma EventBridge regra.
+  Crie uma EventBridge regra em sua conta no barramento de eventos padrão que corresponda a um padrão de evento específico e tenha como alvo a função Lambda. 

 Para obter mais informações, consulte:
+ [Adicionar EventBridge eventos da Amazon PutEvents](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-putevents.html) no Guia do EventBridge usuário.
+ [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token) nos Padrões de Integração de Serviço.

Veja a seguir um `Task` que envia um evento personalizado:

```
{
  "Type": "Task",
  "Resource": "arn:aws:states:::events:putEvents",
  "Arguments": {
    "Entries": [
      {
        "Detail": {
          "Message": "MyMessage"
        },
        "DetailType": "MyDetailType",
        "EventBusName": "MyEventBus",
        "Source": "my.source"
      }
    ]
  },
  "End": true
}
```

**Cota para dados de entrada ou resultado**  
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte [Cotas relacionadas a execuções de máquina de estado](service-quotas.md#service-limits-state-machine-executions).

## EventBridge API otimizada
<a name="connect-eventbridge-apis"></a>

A EventBridge API e a sintaxe suportadas incluem:
+ [https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html)

## Tratamento de erros
<a name="connect-eventbridge-error"></a>

A `PutEvents` API aceita uma matriz de entradas como entrada e, em seguida, retorna uma matriz de entradas de resultados. Desde que a ação `PutEvents` tenha sido bem-sucedida, `PutEvents` retornará uma resposta HTTP 200, mesmo se uma ou mais entradas falharem. O `PutEvents` retorna o número de entradas com falha no campo `FailedEntryCount`.

O Step Functions verifica se o `FailedEntryCount` é maior que zero. Se for maior que zero, o Step Functions falhará no estado com o erro `EventBridge.FailedEntry`. Isso permite que você use o tratamento de erros incorporado do Step Functions nos estados da tarefa para capturar ou tentar novamente quando houver falhas nas entradas, em vez de precisar usar um estado adicional para analisar a `FailedEntryCount` da resposta.

**nota**  
Se você implementou a idempotência e pode tentar novamente com segurança em todas as entradas, é possível usar a lógica de repetição do Step Functions. O Step Functions não remove entradas bem-sucedidas da matriz de entrada de `PutEvents` antes de tentar novamente. Em vez disso, ele tenta novamente com a matriz original de entradas. 

## Políticas do IAM para chamadas EventBridge
<a name="eventbridge-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

### `PutEvents`
<a name="eventbridge-iam-listconnections"></a>

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "events:PutEvents"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:event-bus/my-project-eventbus"
            ],
            "Effect": "Allow"
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "events:PutEvents"
            ],
            "Resource": "arn:aws:events:*:*:event-bus/*"
        }
    ]
}
```

# Comece um AWS Glue trabalho com Step Functions
<a name="connect-glue"></a>

Saiba como usar o Step Functions para iniciar a execução de um trabalho no AWS Glue. Esta página lista as ações de API suportadas e fornece um exemplo de `Task` estado para iniciar um AWS Glue trabalho.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da AWS Glue integração otimizada**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) está disponível.
O `JobName` campo é extraído da solicitação e inserido na resposta, que normalmente contém apenas `JobRunID`.

O seguinte inclui um `Task` estado que inicia um AWS Glue trabalho.

```
"Glue StartJobRun": {
      "Type": "Task",
      "Resource": "arn:aws:states:::glue:startJobRun.sync",
      "Arguments": {
        "JobName": "GlueJob-JTrRO5l98qMG"
      },
      "Next": "ValidateOutput"
    },
```

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

## Otimizado AWS Glue APIs
<a name="connect-glue-api"></a>
+ [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html#aws-glue-api-jobs-runs-StartJobRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html#aws-glue-api-jobs-runs-StartJobRun)

## Políticas do IAM para chamadas AWS Glue
<a name="glue-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

AWS Gluenão tem controle baseado em recursos.

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:StartJobRun",
                "glue:GetJobRun",
                "glue:GetJobRuns",
                "glue:BatchStopJobRun"
            ],
            "Resource": "*"
        }
    ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:StartJobRun"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Comece AWS Glue DataBrew trabalhos com Step Functions
<a name="connect-databrew"></a>

Saiba como você pode usar a DataBrew integração para adicionar etapas de limpeza e normalização de dados aos seus fluxos de trabalho de análise e aprendizado de máquina com o Step Functions.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

O seguinte inclui um `Task` estado que inicia um trabalho de solicitação-resposta DataBrew.

```
"DataBrew StartJobRun": {
            "Type": "Task",
            "Resource": "arn:aws:states:::databrew:startJobRun",
            "Arguments": {
               "Name": "sample-proj-job-1"
            },
            "Next": "NEXT_STATE"
          },
```

O seguinte inclui um `Task` estado que inicia um DataBrew trabalho de sincronização.

```
"DataBrew StartJobRun": {
           "Type": "Task",
           "Resource": "arn:aws:states:::databrew:startJobRun.sync",
           "Arguments": {
              "Name": "sample-proj-job-1"
           },
           "Next": "NEXT_STATE"
          },
```

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

## Suportado DataBrew APIs
<a name="connect-databrew-api"></a>
+ `[https://docs.aws.amazon.com/databrew/latest/dg/API_StartJobRun.html](https://docs.aws.amazon.com/databrew/latest/dg/API_StartJobRun.html)`

## Políticas do IAM para chamadas DataBrew
<a name="databrew-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "databrew:startJobRun",
                "databrew:listJobRuns",
                "databrew:stopJobRun"
            ],
            "Resource": [
                "arn:aws:databrew:us-east-1:123456789012:job/*"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "databrew:startJobRun"
            ],
            "Resource": [
                "arn:aws:databrew:us-east-1:123456789012:job/*"
            ]
        }
    ]
}
```

------

# Invoque uma AWS Lambda função com Step Functions
<a name="connect-lambda"></a>

Saiba como usar o Step Functions para invocar funções do Lambda de maneira síncrona ou assíncrona como parte de uma aplicação sem servidor orientada a eventos.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada ao Lambda**  
O campo `Payload` da resposta é analisado de Json escapado para Json.
Se uma exceção for gerada na função do Lambda, a tarefa falhará. Para obter um exemplo prático, consulte [Tratar condições de erro em uma máquina de estado do Step Functions](tutorial-handling-error-conditions.md). 

## Lambda otimizado APIs
<a name="connect-lambda-api"></a>
+ [https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)

## Exemplos de fluxo de trabalho
<a name="connect-lambda-api-examples"></a>

Veja a seguir um estado `Task` que invoca uma função do Lambda.

```
{  
   "StartAt":"CallLambda",
   "States":{  
      "CallLambda":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:MyFunction"
         },
         "End":true
      }
   }
}
```

Veja a seguir um estado `Task` que implementa o padrão de integração do serviço [retorno de chamada](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"GetManualReview",
   "States":{  
      "GetManualReview":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:get-model-review-decision",
            "Payload":{  
               "model":"{% $states.input.my-model %}",
               "TaskToken": "{% $states.context.Task.Token %}"
            },
            "Qualifier":"prod-v1"
         },
         "End":true
      }
   }
}
```

Ao invocar uma função do Lambda, a execução espera a conclusão da função. Se você invocar a função do Lambda com uma tarefa de retorno de chamada, o tempo limite de pulsação só começará a ser contado após o término da execução da função do Lambda e a exibição de um resultado. Enquanto a função do Lambda for executada, o tempo limite de pulsação não será aplicado.

Também é possível chamar o Lambda de forma assíncrona usando o parâmetro `InvocationType`, conforme mostrado no exemplo a seguir.

```
{

  "Comment": "A Hello World example of the Amazon States Language using Pass states",
  "StartAt": "Hello",
  "States": {
    "Hello": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Arguments": {
        "FunctionName": "arn:aws:lambda:region:account-id:function:echo",
        "InvocationType": "Event"
      },
      "End": true
    }
  }
}
```

**nota**  
Para invocações assíncronas de funções do Lambda, o período do tempo limite de pulsação começa imediatamente.

 Quando o resultado da `Task` é retornado, a saída da função é aninhada em um dicionário de metadados. Por exemplo:

```
{

   "ExecutedVersion":"$LATEST",
   "Payload":"FUNCTION OUTPUT",
   "SdkHttpMetadata":{
      "HttpHeaders":{
         "Connection":"keep-alive",
         "Content-Length":"4",
         "Content-Type":"application/json",
         "Date":"Fri, 26 Mar 2021 07:42:02 GMT",
         "X-Amz-Executed-Version":"$LATEST",
         "x-amzn-Remapped-Content-Length":"0",
         "x-amzn-RequestId":"0101aa0101-1111-111a-aa55-1010aaa1010",
         "X-Amzn-Trace-Id":"root=1-1a1a000a2a2-fe0101aa10ab;sampled=0"
      },
      "HttpStatusCode":200
   },
   "SdkResponseMetadata":{
      "RequestId":"6b3bebdb-9251-453a-ae45-512d9e2bf4d3"
   },
   "StatusCode":200
}
```

## Recurso de função especificado diretamente
<a name="w2aac33c40c13"></a>

Como alternativa, você pode invocar uma função do Lambda especificando o ARN da função diretamente no campo “Recurso”. Ao invocar uma função do Lambda dessa forma, você não pode especificar a `.waitForTaskToken` e o resultado da tarefa contém somente a saída da função.

```
{  
   "StartAt":"CallFunction",
   "States":{  
      "CallFunction": {  
         "Type":"Task",
         "Resource":"arn:aws:lambda:region:account-id:function:HelloFunction",
         "End": true
      }
   }
}
```

Com essa forma de integração, a função pode ser bem-sucedida e ainda enviar uma resposta que contenha um campo `FunctionError`. Nesse cenário, a tarefa do fluxo de trabalho falhará.

É possível invocar determinada versão ou alias da função do Lambda especificando essas opções no ARN no campo `Resource`. Consulte a seguir na documentação do Lambda:
+ [Versionamento do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/versioning-intro.html)
+ [AWS Lambdapseudônimos](https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html)

## Políticas do IAM para chamadas AWS Lambda
<a name="lambda-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

No exemplo a seguir, uma máquina de estado com dois estados de AWS Lambda tarefa que chamam `function1` e`function2`, a política gerada automaticamente inclui `lambda:Invoke` permissão para ambas as funções.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:us-east-1:123456789012:function:myFn1",
                "arn:aws:lambda:us-east-1:123456789012:function:myFn2"
            ]
        }
    ]
}
```

# Crie um AWS Elemental MediaConvert trabalho com Step Functions
<a name="connect-mediaconvert"></a>

Saiba como usar o Step Functions para criar um AWS Elemental MediaConvert trabalho usando a [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost)API.

**Experimente com Step Functions e MediaConvert**  
Saiba como usar a integração MediaConvert otimizada em um fluxo de trabalho que detecta e remove barras coloridas SMTPE de tamanho desconhecido desde o início de um videoclipe. Leia a postagem do blog de 12 de abril de 2024: Fluxos de trabalho de [https://aws.amazon.com/blogs/media/low-code-workflows-with-aws-elemental-mediaconvert/](https://aws.amazon.com/blogs/media/low-code-workflows-with-aws-elemental-mediaconvert/)

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da MediaConvert integração otimizada**  
Os padrões de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) e [Resposta de solicitação](connect-to-resource.md#connect-default) são compatíveis.
O Step Functions adicionará a seguinte tag personalizada aos MediaConvert trabalhos: `ManagedByService: AWSStepFunctions`
Não há uma otimização específica para padrões de integração [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token).

O seguinte inclui um `Task` estado que envia um MediaConvert trabalho e aguarda sua conclusão.

```
{
    "StartAt": "MediaConvert_CreateJob",
    "States": {
        "MediaConvert_CreateJob": {
        "Type": "Task",
        "Resource": "arn:aws:states:::mediaconvert:createJob.sync",
        "Arguments": {
            "Role": "arn:aws:iam::111122223333:role/Admin",
            "Settings": {
            "OutputGroups": [
                {
                "Outputs": [
                    {
                    "ContainerSettings": {
                        "Container": "MP4"
                    },
                    "VideoDescription": {
                        "CodecSettings": {
                        "Codec": "H_264",
                        "H264Settings": {
                            "MaxBitrate": 1000,
                            "RateControlMode": "QVBR",
                            "SceneChangeDetect": "TRANSITION_DETECTION"
                        }
                        }
                    },
                    "AudioDescriptions": [
                        {
                        "CodecSettings": {
                            "Codec": "AAC",
                            "AacSettings": {
                            "Bitrate": 96000,
                            "CodingMode": "CODING_MODE_2_0",
                            "SampleRate": 48000
                            }
                        }
                        }
                    ]
                    }
                ],
                "OutputGroupSettings": {
                    "Type": "FILE_GROUP_SETTINGS",
                    "FileGroupSettings": {
                    "Destination": "s3://amzn-s3-demo-destination-bucket/"
                    }
                }
                }
            ],
            "Inputs": [
                {
                "AudioSelectors": {
                    "Audio Selector 1": {
                    "DefaultSelection": "DEFAULT"
                    }
                },
                "FileInput": "s3://amzn-s3-demo-bucket/DOC-EXAMPLE-SOURCE_FILE"
                }
            ]
            }
        },
        "End": true
        }
    }
}
```

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

## Otimizado MediaConvert APIs
<a name="connect-mediaconvert-api"></a>
+ [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost)
  + [Sintaxe da solicitação](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-request-body-post-example)
  + Parâmetros compatíveis:
    + [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-role](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-role) (Obrigatório)
    + [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-settings](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-settings) (Obrigatório)
    + [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-model-createjobrequest](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-model-createjobrequest) (Opcional)
  + [Sintaxe de resposta](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-response-examples) **— veja o esquema CreateJobResponse **

## Políticas do IAM para chamadas AWS Elemental MediaConvert
<a name="mediaconvert-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

A política do IAM para `GetJob` e as ações `CancelJob` têm como escopo permitir somente o acesso a trabalhos com a tag `ManagedByService: AWSStepFunctions`.

**Política baseada em tags**  
A modificação da tag `ManagedByService: AWSStepFunctions` gerada automaticamente fará com que as execuções da máquina de estado falhem.

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MediaConvertCreateJob",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:CreateJob"
            ],
            "Resource": [
                "arn:aws:mediaconvert:us-east-1:123456789012:queues/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:jobTemplates/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:presets/*"
            ]
        },
        {
            "Sid": "MediaConvertManageJob",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:GetJob",
                "mediaconvert:CancelJob"
            ],
            "Resource": "arn:aws:mediaconvert:us-east-1:123456789012:jobs/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/ManagedByService": "AWSStepFunctions"
                }
            }
        },
        {
            "Sid": "IamPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "mediaconvert.amazonaws.com"
                    ]
                }
            }
        }, 
        {
            "Sid": "EventBridgeManageRule",
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForMediaConvertJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MediaConvertCreateJob",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:CreateJob"
            ],
            "Resource": [
                "arn:aws:mediaconvert:us-east-1:123456789012:queues/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:jobTemplates/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:presets/*"
            ]
        },
        {
            "Sid": "IamPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "mediaconvert.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

# Crie e gerencie trabalhos de SageMaker inteligência artificial da Amazon com Step Functions
<a name="connect-sagemaker"></a>

Saiba como usar o Step Functions para criar e gerenciar trabalhos na SageMaker IA. Esta página lista as ações de API de SageMaker IA suportadas e fornece exemplos de `Task` estados para criar trabalhos de transformação, treinamento, rotulagem e processamento de SageMaker IA.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada de SageMaker IA**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) é compatível.
Não há otimizações específicas para o padrão de integração [Resposta de solicitação](connect-to-resource.md#connect-default).
O padrão de integração [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token) não é compatível.

## SageMaker IA otimizada APIs
<a name="connect-sagemaker-api"></a>
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html): aceita o padrão de integração `.sync`.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateLabelingJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateLabelingJob.html): aceita o padrão de integração `.sync`.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateModel.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateProcessingJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateProcessingJob.html): aceita o padrão de integração `.sync`.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html): aceita o padrão de integração `.sync`.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html): aceita o padrão de integração `.sync`.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html)

**nota**  
AWS Step Functionsnão criará automaticamente uma política para`CreateTransformJob`. É necessário anexar uma política em linha à função criada. Para obter mais informações, veja este exemplo de política do IAM: [`CreateTrainingJob`](#sagemaker-iam-createtrainingjob).

## SageMaker Exemplo de trabalho do AI Transform
<a name="sagemaker-example-transform"></a>

O seguinte inclui um `Task` estado que cria um trabalho de transformação do Amazon SageMaker AI, especificando a localização `DataSource` do Amazon S3 para e. `TransformOutput`

```
{
"SageMaker CreateTransformJob": {
  "Type": "Task",
  "Resource": "arn:aws:states:::sagemaker:createTransformJob.sync",
  "Arguments": {
    "ModelName": "SageMakerCreateTransformJobModel-9iFBKsYti9vr",
    "TransformInput": {
      "CompressionType": "None",
      "ContentType": "text/csv",
      "DataSource": {
        "S3DataSource": {
          "S3DataType": "S3Prefix",
          "S3Uri": "s3://amzn-s3-demo-source-bucket1/TransformJobDataInput.txt"
        }
      }
    },
    "TransformOutput": {
      "S3OutputPath": "s3://amzn-s3-demo-source-bucket1/TransformJobOutputPath"
    },
    "TransformResources": {
      "InstanceCount": 1,
      "InstanceType": "ml.m4.xlarge"
    },
    "TransformJobName": "sfn-binary-classification-prediction"
  },
  "Next": "ValidateOutput"
},
```

## SageMaker Exemplo de Job de treinamento em IA
<a name="sagemaker-example-training"></a>

O seguinte inclui um `Task` estado que cria um trabalho de treinamento de SageMaker IA na Amazon.

```
{  
   "SageMaker CreateTrainingJob":{  
      "Type":"Task",
      "Resource":"arn:aws:states:::sagemaker:createTrainingJob.sync",
      "Arguments":{  
         "TrainingJobName":"search-model",
         "ResourceConfig":{  
            "InstanceCount":4,
            "InstanceType":"ml.c4.8xlarge",
            "VolumeSizeInGB":20
         },
         "HyperParameters":{  
            "mode":"batch_skipgram",
            "epochs":"5",
            "min_count":"5",
            "sampling_threshold":"0.0001",
            "learning_rate":"0.025",
            "window_size":"5",
            "vector_dim":"300",
            "negative_samples":"5",
            "batch_size":"11"
         },
         "AlgorithmSpecification":{  
            "TrainingImage":"...",
            "TrainingInputMode":"File"
         },
         "OutputDataConfig":{  
            "S3OutputPath":"s3://amzn-s3-demo-destination-bucket1/doc-search/model"
         },
         "StoppingCondition":{  
            "MaxRuntimeInSeconds":100000
         },
         "RoleArn":"arn:aws:iam::account-id:role/docsearch-stepfunction-iam-role",
         "InputDataConfig":[  
            {  
               "ChannelName":"train",
               "DataSource":{  
                  "S3DataSource":{  
                     "S3DataType":"S3Prefix",
                     "S3Uri":"s3://amzn-s3-demo-destination-bucket1/doc-search/interim-data/training-data/",
                     "S3DataDistributionType":"FullyReplicated"
                  }
               }
            }
         ]
      },
      "Retry":[  
         {  
            "ErrorEquals":[  
               "SageMaker.AmazonSageMakerException"
            ],
            "IntervalSeconds":1,
            "MaxAttempts":100,
            "BackoffRate":1.1
         },
         {  
            "ErrorEquals":[  
               "SageMaker.ResourceLimitExceededException"
            ],
            "IntervalSeconds":60,
            "MaxAttempts":5000,
            "BackoffRate":1
         },
         {  
            "ErrorEquals":[  
               "States.Timeout"
            ],
            "IntervalSeconds":1,
            "MaxAttempts":5,
            "BackoffRate":1
         }
      ],
      "Catch":[  
         {  
            "ErrorEquals":[  
               "States.ALL"
            ],
            "Next":"Sagemaker Training Job Error"
         }
      ],
      "Next":"Delete Interim Data Job"
   }
}
```

## SageMaker Exemplo de trabalho de etiquetagem de IA
<a name="sagemaker-example-labeling"></a>

O seguinte inclui um `Task` estado que cria um trabalho de rotulagem da Amazon SageMaker AI.

```
{
  "StartAt": "SageMaker CreateLabelingJob",
  "TimeoutSeconds": 3600,
  "States": {
    "SageMaker CreateLabelingJob": {
      "Type": "Task",
      "Resource": "arn:aws:states:::sagemaker:createLabelingJob.sync",
      "Arguments": {
        "HumanTaskConfig": {
          "AnnotationConsolidationConfig": {
            "AnnotationConsolidationLambdaArn": "arn:aws:lambda:region:123456789012:function:ACS-TextMultiClass"
          },
          "NumberOfHumanWorkersPerDataObject": 1,
          "PreHumanTaskLambdaArn": "arn:aws:lambda:region:123456789012:function:PRE-TextMultiClass",
          "TaskDescription": "Classify the following text",
          "TaskKeywords": [
            "tc",
            "Labeling"
          ],
          "TaskTimeLimitInSeconds": 300,
          "TaskTitle": "Classify short bits of text",
          "UiConfig": {
            "UiTemplateS3Uri": "s3://amzn-s3-demo-bucket/TextClassification.template"
          },
          "WorkteamArn": "arn:aws:sagemaker:region:123456789012:workteam/private-crowd/ExampleTesting"
        },
        "InputConfig": {
          "DataAttributes": {
            "ContentClassifiers": [
              "FreeOfPersonallyIdentifiableInformation",
              "FreeOfAdultContent"
            ]
          },
          "DataSource": {
            "S3DataSource": {
              "ManifestS3Uri": "s3://amzn-s3-demo-bucket/manifest.json"
            }
          }
        },
        "LabelAttributeName": "Categories",
        "LabelCategoryConfigS3Uri": "s3://amzn-s3-demo-bucket/labelcategories.json",
        "LabelingJobName": "example-job-name",
        "OutputConfig": {
          "S3OutputPath": "s3://amzn-s3-demo-bucket/output"
        },
        "RoleArn": "arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole",
        "StoppingConditions": {
          "MaxHumanLabeledObjectCount": 10000,
          "MaxPercentageOfInputDatasetLabeled": 100
        }
      },
      "Next": "ValidateOutput"
    },
    "ValidateOutput": {
        "Type": "Choice",
        "Choices": [
            {
                "Next": "Success",
                "Condition": "{% $states.input.LabelingJobArn != '' %}"
            }
        ],
        "Default": "Fail"
        },
        "Success": {
            "Type": "Succeed"
        },
        "Fail": {
            "Type": "Fail",
            "Error": "InvalidOutput",
            "Cause": "Output is not what was expected. This could be due to a service outage or a misconfigured service integration."
        }
    }
}
```

## SageMaker Exemplo de Job de Processamento de IA
<a name="sagemaker-example-processing"></a>

O seguinte inclui um `Task` estado que cria um trabalho de processamento de SageMaker IA da Amazon.

```
{
  "StartAt": "SageMaker CreateProcessingJob Sync",
  "TimeoutSeconds": 3600,
  "States": {
    "SageMaker CreateProcessingJob Sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::sagemaker:createProcessingJob.sync",
      "Arguments": {
        "AppSpecification": {
          "ImageUri": "737474898029.dkr.ecr.sa-east-1.amazonaws.com/sagemaker-scikit-learn:0.20.0-cpu-py3"
        },
        "ProcessingResources": {
          "ClusterConfig": {
            "InstanceCount": 1,
            "InstanceType": "ml.t3.medium",
            "VolumeSizeInGB": 10
          }
        },
        "RoleArn": "arn:aws:iam::account-id:role/SM-003-CreateProcessingJobAPIExecutionRole",
        "ProcessingJobName.$": "$.id"
      },
      "Next": "ValidateOutput"
    },
    "ValidateOutput": {
      "Type": "Choice",
      "Choices": [
        {
          "Not": {
            "Variable": "$.ProcessingJobArn",
            "StringEquals": ""
          },
          "Next": "Succeed"
        }
      ],
      "Default": "Fail"
    },
    "Succeed": {
      "Type": "Succeed"
    },
    "Fail": {
      "Type": "Fail",
      "Error": "InvalidConnectorOutput",
      "Cause": "Connector output is not what was expected. This could be due to a service outage or a misconfigured connector."
    }
  }
}
```

## Políticas do IAM para chamar a Amazon SageMaker AI
<a name="sagemaker-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

**nota**  
Para esses exemplos, `roleArn` consulte o Amazon Resource Name (ARN) da função do IAM que a SageMaker IA usa para acessar artefatos de modelo e imagens docker para implantação em instâncias de computação de ML ou para trabalhos de transformação em lote. Para obter mais informações, consulte [Amazon SageMaker Roles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).

### `CreateTrainingJob`
<a name="sagemaker-iam-createtrainingjob"></a>

*Recursos estáticos*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob",
        "sagemaker:DescribeTrainingJob",
        "sagemaker:StopTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTrainingJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

*Recursos dinâmicos*

------
#### [ .sync or .waitForTaskToken ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob",
        "sagemaker:DescribeTrainingJob",
        "sagemaker:StopTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTrainingJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

### `CreateTransformJob`
<a name="sagemaker-iam-createtransformjob"></a>

**nota**  
AWS Step Functionsnão criará automaticamente uma política para `CreateTransformJob` quando você criar uma máquina de estado que se integre à SageMaker IA. Você deve anexar uma política em linha ao perfil criado com base em um dos exemplos do IAM a seguir.

*Recursos estáticos*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob",
        "sagemaker:DescribeTransformJob",
        "sagemaker:StopTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTransformJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

*Recursos dinâmicos*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob",
        "sagemaker:DescribeTransformJob",
        "sagemaker:StopTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTransformJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

# Publicar mensagens em um tópico do Amazon SNS com o Step Functions
<a name="connect-sns"></a>

Saiba como usar o Step Functions para publicar mensagens em um tópico do Amazon SNS. Esta página lista as ações de API aceitas do Amazon SNS e fornece exemplos de estado `Task` para publicar mensagens no Amazon SNS.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada ao Amazon SNS**  
Não há otimizações específicas para os padrões de integração [Resposta de solicitação](connect-to-resource.md#connect-default) ou [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token).

Veja a seguir um estado `Task` que publica em um tópico do Amazon Simple Notification Service (Amazon SNS).

```
{
 "StartAt": "Publish to SNS",
 "States": {
   "Publish to SNS": {
     "Type": "Task",
     "Resource": "arn:aws:states:::sns:publish",
     "Arguments": {
       "TopicArn": "arn:aws:sns:region:account-id:myTopic",
       "Message": "{% states.input.message %}",
       "MessageAttributes": {
         "my_attribute_no_1": {
           "DataType": "String",
           "StringValue": "value of my_attribute_no_1"
         },
         "my_attribute_no_2": {
           "DataType": "String",
           "StringValue": "value of my_attribute_no_2"
         }
       }
     },
     "End": true
    }
  }
}
```

**Aprovação de valores dinâmicos**. Você pode modificar o exemplo acima para aprovar dinamicamente um atributo dessa carga JSON:

```
{
  "message": "Hello world",
  "SNSDetails": {
    "attribute1": "some value",
    "attribute2": "some other value",
  }
}
```

O seguinte define valores usando JSONata expressões para os `StringValue` campos:

```
"MessageAttributes": {
  "my_attribute_no_1": {
      "DataType": "String",
      "StringValue": "{% $states.input.SNSDetails.attribute1 %}"
  },
  "my_attribute_no_2": {
      "DataType": "String",
      "StringValue": "{% $states.input.SNSDetails.attribute2 %}"
  }
```

Veja a seguir um estado `Task` que publica em um tópico do Amazon SNS e aguarda o retorno do token da tarefa. Consulte [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"Send message to SNS",
   "States":{  
      "Send message to SNS":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::sns:publish.waitForTaskToken",
         "Arguments":{  
            "TopicArn":"arn:aws:sns:region:account-id:myTopic",
            "Message":{  
               "Input":"{% states.input.message %}",
               "TaskToken": "{% $states.context.Task.Token %}"
            }
         },
         "End":true
      }
   }
}
```

## Amazon SNS otimizado APIs
<a name="connect-sns-api"></a>
+ [https://docs.aws.amazon.com/sns/latest/api/API_Publish.html](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

**Cota para dados de entrada ou resultado**  
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte [Cotas relacionadas a execuções de máquina de estado](service-quotas.md#service-limits-state-machine-executions).

## Políticas do IAM para chamar o Amazon SNS
<a name="sns-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:123456789012:myTopicName"
            ]
        }
    ]
}
```

*Recursos com base em um caminho ou que publicam em `TargetArn` ou `PhoneNumber`*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "*"
        }
    ]
}
```

# Enviar mensagens a uma fila do Amazon SQS com o Step Functions
<a name="connect-sqs"></a>

Você pode enviar mensagens para uma fila do Amazon SQS usando as ações de API do Amazon SQS a seguir e um exemplo de código de estado `Task` para fluxos de trabalho do Step Functions.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

Para saber mais sobre o recebimento de mensagens no Amazon SQS, consulte [Receber e Excluir Sua Mensagem](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-receive-delete-message.html) no *Guia do Desenvolvedor do Amazon Simple Queue Service*.

O exemplo a seguir inclui um `Task` estado (JSONata) que envia uma mensagem do Amazon Simple Queue Service (Amazon SQS) (Amazon SQS) com opção: **MessageAttributes**

```
{
 "StartAt": "Send to SQS",
 "States": {
   "Send to SQS": {
     "Type": "Task",
     "Resource": "arn:aws:states:::sqs:sendMessage",
     "Arguments": {
       "QueueUrl": "https://sqs.us-east-1.amazonaws.com/account-id/myQueue",
       "MessageBody": "{% $states.input.message %}",
       "MessageAttributes": {
         "my_attribute_no_1": {
           "DataType": "String",
           "StringValue": "attribute1"
         },
         "my_attribute_no_2": {
           "DataType": "String",
           "StringValue": "attribute2"
         }
       }
     },
     "End": true
    }
  }
}
```

O estado de máquina a seguir inclui um estado `Task` que publica em uma fila do Amazon SQS e aguarda o retorno do token da tarefa. Consulte [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"Send message to SQS",
   "States":{  
      "Send message to SQS":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::sqs:sendMessage.waitForTaskToken",
         "Arguments":{  
            "QueueUrl":"https://sqs.us-east-1.amazonaws.com/account-id/myQueue",
            "MessageBody":{  
               "Input" : "{% $states.input.message %}",
               "MyTaskToken" : "{% $states.context.Task.Token %}"
            }
         },
         "End":true
      }
   }
}
```

## Amazon SQS otimizado APIs
<a name="connect-sqs-api"></a>
+ [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

**Cota para dados de entrada ou resultado**  
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte [Cotas relacionadas a execuções de máquina de estado](service-quotas.md#service-limits-state-machine-executions).

## Políticas do IAM para chamar o Amazon SQS
<a name="sqs-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

*Recursos estáticos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage"
            ],
            "Resource": [
                "arn:aws:sqs:us-east-1:123456789012:myQueueName"
            ]
        }
    ]
}
```

*Recursos dinâmicos*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage"
            ],
            "Resource": "*"
        }
    ]
}
```

# Inicie uma nova máquina de AWS Step Functions estado a partir de uma execução em execução
<a name="connect-stepfunctions"></a>

O Step Functions se integra à sua própria API como uma integração de serviço. Saiba como usar o Step Functions para iniciar uma nova execução de uma máquina de estado diretamente do estado da tarefa de uma execução em andamento. Ao criar novos fluxos de trabalho, use [execuções de fluxo de trabalho aninhado](concepts-nested-workflows.md) para reduzir a complexidade dos fluxos de trabalho principais e reutilizar processos comuns.

**Principais recursos da integração otimizada ao Step Functions**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) está disponível.

Para saber mais, consulte:
+ [Iniciar por meio de uma tarefa](concepts-nested-workflows.md)
+ [Integração de produtos da ](integrate-services.md)
+ [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

## Step Functions otimizadas 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)

## Exemplos de fluxo de trabalho
<a name="connect-stepfunctions-api-examples"></a>

Veja a seguir um estado `Task` que inicia uma execução de outra máquina de estado e aguarda até que ela seja concluída.

```
{  
   "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
}
```

Veja a seguir um estado `Task` que inicia uma execução de outra máquina de estado.

```
{  
   "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
}
```

Veja a seguir um estado `Task` que implementa o padrão de integração do serviço [retorno de chamada](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
}
```

Para associar a execução de um fluxo de trabalho aninhado à execução principal que o iniciou, transmita um parâmetro especialmente nomeado que inclua o ID de execução obtido do [objeto de contexto](input-output-contextobject.md). Ao iniciar uma execução aninhada, use um parâmetro chamado `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID`. Passe o ID de execução e faça referência ao ID no objeto Context com`$states.context.Execution.Id`. Para obter mais informações, consulte [Acessar o objeto de contexto](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
}
```

 Máquinas de estado aninhadas retornam o seguinte: 


| Recurso | Output | 
| --- | --- | 
| startExecution.sync | String | 
| startExecution.sync:2 | JSON | 

Ambos aguardarão a conclusão da máquina de estado aninhado, mas eles retornam formatos diferentes de `Output`. Por exemplo, se você criar uma função do Lambda que retorna o objeto `{ "MyKey": "MyValue" }`, você obteria as seguintes respostas:

Para startExecution.sync:

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

Para startExecution.sync:2:

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

### Configurando permissões do IAM para máquinas de estado aninhado
<a name="nested-stepfunctions-iam-permissions"></a>

Uma máquina de estado principal determina se uma máquina de estado secundária concluiu a execução usando pesquisas e eventos. A enquete requer permissão, `states:DescribeExecution` enquanto os eventos enviados EventBridge para o Step Functions exigem permissões para `events:PutTargets``events:PutRule`, e. `events:DescribeRule` Se essas permissões estiverem ausentes em seu perfil do IAM, pode haver um atraso até que uma máquina de estado principal tome conhecimento da conclusão da execução da máquina de estado secundária.

Para uma máquina de estado que chama `StartExecution` para uma única execução de fluxo de trabalho aninhado, use uma política do IAM que limita as permissões a essa máquina de estado. 

## Políticas do IAM para chamar fluxos de trabalho aninhados do Step Functions
<a name="stepfunctions-iam"></a>

Para uma máquina de estado que chama `StartExecution` para uma única execução de fluxo de trabalho aninhado, use uma política do IAM que limita as permissões a essa máquina de estado. 

****  

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

Para saber mais, consulte:
+ [Integrar serviços ao Step Functions](integrate-services.md)
+ [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)
+ [Inicie uma nova máquina de AWS Step Functions estado a partir de uma execução em execução](#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"
            ]
        }
    ]
}
```

------

**Tipos de ARN necessários**  
Na política de **Síncrono**, observe que `states:StartExecution` requer um ARN de máquina de estado, enquanto `states:DescribeExecution` e `states:StopExecution` exigem um ARN de execução.  
Se você combinar as três ações por engano, o JSON será válido, mas a política do IAM estará incorreta. Uma política incorreta pode causar problemas de and/or acesso aos fluxos de trabalho bloqueados durante a execução do fluxo de trabalho.

Para obter mais informações sobre execuções de fluxos de trabalho aninhados, consulte: [Iniciar execuções de fluxo de trabalho usando um estado de tarefa no Step Functions](concepts-nested-workflows.md).