

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á.

# Acessando AWS recursos entre contas em Step Functions
<a name="tutorial-access-cross-acct-resources"></a>

Com o suporte de acesso entre contas no Step Functions, você pode compartilhar recursos configurados em diferentes Contas da AWS. Neste tutorial, mostraremos o processo de acesso a uma função do Lambda entre contas definida em uma conta denominada **Produção**. Essa função é invocada de uma máquina de estado em uma conta denominada **Desenvolvimento**. Neste tutorial, a conta de **Desenvolvimento** é chamada de *conta de origem*, enquanto a conta de **Produção** é a *conta de destino* que contém o perfil do IAM de destino.

Para começar, na definição do estado `Task`, você especifica o perfil do IAM de destino que a máquina de estado deve assumir antes de invocar a função do Lambda entre contas. Em seguida, modifique a política de confiança no perfil do IAM de destino para permitir que a conta de origem assuma o perfil de destino temporariamente. Além disso, para chamar o AWS recurso, defina as permissões apropriadas na função de destino do IAM. Por fim, atualize o perfil de execução da conta de origem para especificar a permissão necessária para assumir o perfil de destino.

Você pode configurar sua máquina de estado para assumir um perfil do IAM para acessar recursos de várias Contas da AWS. No entanto, uma máquina de estado pode assumir somente um perfil do IAM por vez com base na definição do estado da `Task`.

**nota**  
A integração do AWS SDK entre regiões e o acesso a AWS recursos entre regiões não estão disponíveis no Step Functions.

## Pré-requisitos
<a name="tutorial-access-cross-acct-resources-prereq"></a>
+ Este tutorial usa o exemplo de uma função do Lambda para demonstrar como configurar o acesso entre contas. Você pode usar qualquer outro AWS recurso, mas certifique-se de ter configurado o recurso em uma conta diferente.
**Importante**  
As funções do IAM e as políticas baseadas em recurso delegam o acesso entre contas em uma única partição. Por exemplo, suponha que você tenha uma conta no Oeste dos EUA (Norte da Califórnia) na partição `aws` padrão. Além disso, você tem uma conta na China (Pequim) na partição `aws-cn`. Você não pode usar uma política baseada em recurso do Amazon S3 em sua conta na China (Pequim) para permitir o acesso de usuários em sua conta `aws` padrão.
+ Anote o nome do recurso da Amazon (ARN) do recurso entre contas em um arquivo de texto. Posteriormente neste tutorial, você fornecerá esse ARN na definição do estado `Task` da sua máquina de estado. Veja a seguir um exemplo de um ARN de função do Lambda:

  ```
  arn:aws:lambda:us-east-2:{{account-id}}:function:{{functionName}}
  ```
+ Crie o perfil do IAM de destino que a máquina de estado precisa assumir.

## Etapa 1: atualizar a definição do estado Tarefa para especificar o perfil de destino
<a name="tutorial-access-cross-acct-resources-update-task-def"></a>

No estado `Task` do fluxo de trabalho, adicione um campo `Credentials` contendo a identidade que a máquina de estado deve assumir antes de invocar a função do Lambda entre contas.

O procedimento a seguir demonstra como acessar uma função do Lambda entre contas chamada `Echo`. Você pode chamar qualquer AWS recurso seguindo estas etapas.

1. Abra o [console do Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/) e clique em **Criar máquina de estado**.

1. Na página **Escolher método de criação**, escolha **Projetar seu fluxo de trabalho visualmente** e mantenha todas as seleções padrão.

1. Para abrir o Workflow Studio, escolha **Próximo**.

1. Na guia **Ações**, arraste e solte o estado `Task` na tela. Isso invoca a função do Lambda entre contas que está usando esse estado da `Task`.

1. Na guia **Configuração**, faça o seguinte:

   1. Renomeie o estado para **Cross-account call**.

   1. Em **Nome da função**, escolha **Inserir nome da função** e, em seguida, insira o ARN da função do Lambda na caixa. Por exemplo, .`arn:aws:lambda:us-east-2:111122223333:function:{{Echo}}`

   1. Em **Fornecer ARN do perfil do IAM**, especifique o ARN do perfil do IAM. Por exemplo, .`arn:aws:iam::111122223333:role/LambdaRole`
**dica**  
Como alternativa, você também pode especificar um [caminho de referência](amazon-states-language-paths.md#amazon-states-language-reference-paths) para um par de valores-chave existente na entrada JSON do estado que contém o ARN do perfil do IAM. Para fazer isso, escolha **Obter ARN do perfil do IAM em runtime na entrada de estado**. Para obter um exemplo de especificação de um valor usando um caminho de referência, consulte [Especificando JSONPath como ARN da função do IAM](state-task.md#example-credentials-specify-dynamic-jsonpath).

1. Escolha **Próximo**.

1. Na página **Revisar código gerado**, escolha **Próximo**.

1. Na página **Especificar configurações da máquina de estado**, especifique detalhes da nova máquina de estado, como nome, permissões e nível de registro em log.

1. Escolha **Criar uma máquina de estado**.

1. Anote o ARN do perfil do IAM e o ARN da máquina de estado em um arquivo de texto. Você precisará fornecê-las ARNs na política de confiança da conta alvo.

A definição do estado da `Task` agora deve ser semelhante à definição a seguir.

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

## Etapa 2: atualizar a política de confiança do perfil de destino
<a name="tutorial-access-cross-acct-resources-update-target-trust-policy"></a>

O perfil do IAM deve existir na conta de destino e você deve modificar sua política de confiança para permitir que a conta de origem assuma esse perfil temporariamente. Além disso, você pode controlar quem pode assumir o perfil do IAM de destino.

Depois de criar a relação de confiança, um usuário da conta de origem pode usar a operação da [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API AWS Security Token Service (AWS STS). Essa operação fornece credenciais de segurança temporárias que permitem o acesso aos AWS recursos em uma conta de destino.

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Perfis** e, em seguida, use a caixa Pesquisar para pesquisar o perfil do IAM de destino. Por exemplo, .`{{LambdaRole}}`

1. Selecione a guia **Trust relationships (Relações de confiança)**.

1. Selecione **Editar política de confiança** e cole a seguinte política de confiança. Certifique-se de substituir o Conta da AWS número e o ARN da função do IAM. O campo `sts:ExternalId` controla ainda mais quem pode assumir o perfil. O nome da máquina de estado deve incluir somente caracteres compatíveis com a AWS Security Token Service `AssumeRole` API. Para obter mais informações, consulte [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) na *Referência de APIs do AWS Security Token Service *.

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

1. Mantenha essa janela aberta e prossiga para a próxima etapa para realizar outras ações.

## Etapa 3: adicionar a permissão necessária no perfil de destino
<a name="tutorial-access-cross-acct-resources-add-permissions"></a>

As permissões nas políticas do IAM determinam se uma solicitação específica será permitida ou negada. O perfil do IAM de destino deve ter a permissão correta para invocar a função do Lambda.

1. Escolha a aba **Permissões**.

1. Escolha **Adicionar permissões** e depois **Criar política em linha**.

1. Escolha a guia **JSON** e substitua o conteúdo existente pela permissão a seguir. Substitua o ARN da função do Lambda.

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

1. Selecione **Revisar política**.

1. Na página **Revisar política**, insira um nome da permissão e, em seguida, selecione **Criar política**.

## Etapa 4: adicionar permissão no perfil de execução para assumir o perfil de destino
<a name="tutorial-access-cross-acct-resources-update-exec-role"></a>

O Step Functions não gera automaticamente a [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)política para todas as integrações de serviços entre contas. Você deve adicionar a permissão necessária no perfil de execução da máquina de estado para permitir que ela assuma um perfil do IAM de destino em uma ou mais Contas da AWS.

1. Abra a função de execução da sua máquina de estado no console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Para fazer isso:

   1. Abra a máquina de estado que você criou na [Etapa 1 na conta de origem](#tutorial-access-cross-acct-resources-update-task-def).

   1. Na página **Detalhes da máquina de estado**, selecione **ARN do perfil do IAM**.

1. Na guia **Permissões**, selecione **Adicionar permissões** e **Criar política em linha**.

1. Escolha a guia **JSON** e substitua o conteúdo existente pela permissão a seguir. Substitua o ARN da função do Lambda.

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

1. Selecione **Revisar política**.

1. Na página **Revisar política**, insira um nome da permissão e, em seguida, selecione **Criar política**.