Tutorial: Acessando AWS recursos entre contas em Step Functions - AWS Step Functions

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

Tutorial: Acessando AWS recursos entre contas em Step Functions

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 e a conta de produção é a conta de destino contendo a IAM função de destino.

Para começar, na definição do seu Task estado, você especifica a IAM função de destino que a máquina de estado deve assumir antes de invocar a função Lambda entre contas. Em seguida, modifique a política de confiança na IAM função de destino para permitir que a conta de origem assuma temporariamente a função de destino. Além disso, para chamar o AWS recurso, defina as permissões apropriadas na IAM função de destino. 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 uma IAM função de acessar recursos de vários Contas da AWS. No entanto, uma máquina de estado pode assumir apenas uma IAM função em um determinado momento com base na definição do Task estado.

nota

Atualmente, a AWS SDK integração entre regiões e o acesso a AWS recursos entre regiões não estão disponíveis no Step Functions.

Pré-requisitos

  • 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

    IAMfunções e políticas baseadas em recursos delegam o acesso entre contas somente 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 Amazon Resource Name (ARN) do recurso de várias contas em um arquivo de texto. Posteriormente neste tutorial, você fornecerá isso ARN na definição de estado da sua máquina de Task estado. Veja a seguir um exemplo de uma função Lambda: ARN

    arn:aws:lambda:us-east-2:123456789012:function:functionName
  • Certifique-se de ter criado a IAM função 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

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 e clique em Criar máquina de estado.

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

  3. Para abrir o Workflow Studio, escolha Próximo.

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

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

    1. Renomeie o estado para Cross-account call.

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

    3. Em Fornecer IAM função ARN, especifique a IAM função de destinoARN. Por exemplo, arn:aws:iam::111122223333:role/LambdaRole.

      dica

      Como alternativa, você também pode especificar um caminho de referência para um par de valores-chave existente na JSON entrada do estado que contém a IAM função. ARN Para fazer isso, escolha Obter IAM função ARN em tempo de execução na entrada de estado. Para obter um exemplo de especificação de um valor usando um caminho de referência, consulte Especificando JSONPath como função IAM ARN.

  6. Escolha Próximo.

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

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

  9. Escolha Criar uma máquina de estado.

  10. Anote a IAM função da máquina de estado ARN e a máquina de estado ARN 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 IAM função deve existir na conta de destino e você deve modificar sua política de confiança para permitir que a conta de origem assuma essa função temporariamente. Além disso, você pode controlar quem pode assumir a IAM função alvo.

Depois de criar a relação de confiança, um usuário da conta de origem pode usar a AssumeRoleAPIoperação 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 IAM console em https://console.aws.amazon.com/iam/.

  2. No painel de navegação do console, escolha Funções e use a caixa Pesquisar para pesquisar a IAM função de destino. Por exemplo, LambdaRole.

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

  4. 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 a IAM funçãoARN. O campo sts:ExternalId controla ainda mais quem pode assumir o perfil. O nome da máquina de estado deve incluir somente os caracteres que ela AWS Security Token Service AssumeRole API suporta. Para obter mais informações, consulte AssumeRolena AWS Security Token Service APIReferência.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::123456789012: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:us-east-1:123456789012:stateMachine:testCrossAccount" //// ARN of the state machine that will assume the role. } } } ] }
  5. 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

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

  1. Escolha a aba Permissões.

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

  3. Escolha a JSONguia e substitua o conteúdo existente com a seguinte permissão. Certifique-se de substituir sua função Lambda. ARN

    { "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 } ] }
  4. Escolha Revisar política.

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

O Step Functions não gera automaticamente a AssumeRolepolítica para todas as integrações de serviços entre contas. Você deve adicionar a permissão necessária na função de execução da máquina de estado para permitir que ela assuma uma IAM função de destino em uma ou mais Contas da AWS.

  1. Abra a função de execução da sua máquina de estado no IAM console em 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.

    2. Na página de detalhes da máquina de estado, escolha IAMfunção ARN.

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

  3. Escolha a JSONguia e substitua o conteúdo existente com a seguinte permissão. Certifique-se de substituir sua função Lambda. ARN

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/LambdaRole" // The target role to be assumed } ] }
  4. Escolha Revisar política.

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