Acceso a varias cuentas AWS recursos en Step Functions - AWS Step Functions

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceso a varias cuentas AWS recursos en Step Functions

Con el soporte de acceso multicuenta de Step Functions, puede compartir recursos configurados en diferentes Cuentas de AWS. En este tutorial, explicamos el proceso de acceso a una función Lambda multicuenta definida en una cuenta denominada Producción. Esta función se invoca desde una máquina de estado en una cuenta llamada Desarrollo. En este tutorial, la cuenta de desarrollo se denomina cuenta de origen y la cuenta de producción es la cuenta de destino que contiene el rol de destinoIAM.

Para empezar, en la definición de su Task estado, especifique la IAM función de destino que debe asumir la máquina de estado antes de invocar la función Lambda multicuenta. A continuación, modifique la política de confianza en el IAM rol de destino para permitir que la cuenta de origen asuma el rol de destino temporalmente. Además, para llamar al AWS recurso, defina los permisos adecuados en el IAM rol de destino. Por último, actualice el rol de ejecución de la cuenta de origen para especificar el permiso necesario para asumir el rol de destino.

Puede configurar su máquina de estado para que asuma una IAM función de acceso a los recursos desde varios Cuentas de AWS. Sin embargo, una máquina estatal solo puede asumir una IAM función en un momento dado según la definición del Task estado.

nota

Actualmente, entre regiones AWS SDKintegración y transregión AWS el acceso a los recursos no está disponible en Step Functions.

Requisitos previos

  • En este tutorial se utiliza el ejemplo de una función de Lambda para demostrar cómo configurar el acceso entre cuentas. Puedes usar cualquier otro AWS recurso, pero asegúrate de haber configurado el recurso en una cuenta diferente.

    importante

    IAMlas funciones y las políticas basadas en recursos delegan el acceso a las cuentas solo dentro de una única partición. Suponga, por ejemplo, que tiene una cuenta en EE. UU. Oeste (Norte de California) en la partición estándar aws. También tiene una cuenta en China (Pekín) en la partición aws-cn. No puede utilizar una política de Amazon S3 basada en recursos en su cuenta en China (Pekín) para permitir el acceso a los usuarios de su cuenta aws estándar.

  • Anote el nombre del recurso de Amazon (ARN) del recurso multicuenta en un archivo de texto. Más adelante en este tutorial, lo incluirás ARN en la definición de estado de tu máquina de Task estados. A continuación se muestra un ejemplo de una función Lambda: ARN

    arn:aws:lambda:us-east-2:123456789012:function:functionName
  • Asegúrese de haber creado la IAM función de destino que debe asumir la máquina de estados.

Paso 1: actualice la definición del estado de la tarea para especificar el rol de destino

En el estado Task del flujo de trabajo, añada un campo Credentials que contenga la identidad que debe asumir la máquina de estado antes de invocar la función de Lambda entre cuentas.

El siguiente procedimiento demuestra cómo acceder a una función de Lambda entre cuentas llamada Echo. Puedes llamar a cualquier AWS recurso siguiendo estos pasos.

  1. Abra la consola de Step Functions y seleccione Crear máquina de estado.

  2. En la página Elegir un método de creación, elija Diseñe su flujo de trabajo de forma visual y mantenga todas las selecciones predeterminadas.

  3. Para abrir Workflow Studio, elija Siguiente.

  4. En la pestaña Acciones, arrastre y suelte un estado Task en el lienzo. Esto invoca la función de Lambda entre cuentas que utiliza este estado Task.

  5. En la pestaña Configuración, haga lo siguiente:

    1. Cambie el nombre del estado a Cross-account call.

    2. En Nombre de función, elija Introducir nombre de función y, a continuación, introduzca la función Lambda ARN en el cuadro. Por ejemplo, arn:aws:lambda:us-east-2:111122223333:function:Echo.

    3. En Proporcionar IAM rol ARN, especifique el IAM rol ARN de destino. Por ejemplo, arn:aws:iam::111122223333:role/LambdaRole.

      sugerencia

      Como alternativa, también puede especificar una ruta de referencia a un par clave-valor existente en la JSON entrada del estado que contiene el IAM rol. ARN Para ello, selecciona Obtener el IAM rol ARN en tiempo de ejecución a partir de la entrada de estado. Para ver un ejemplo de cómo especificar un valor mediante una ruta de referencia, consulte Especificar JSONPath como rol IAM ARN.

  6. Elija Siguiente.

  7. En la página Revisar código generado, elija Siguiente.

  8. En la página Especificar configuración de la máquina de estado, especifique los detalles de la nueva máquina de estado, como el nombre, los permisos y el nivel de registro.

  9. Elija Crear máquina de estado.

  10. Anote la IAM función de la máquina de estados ARN y la máquina de estados ARN en un archivo de texto. Deberás proporcionarlos ARNs en la política de confianza de la cuenta de destino.

La definición de estado Task debería ser similar a la definición siguiente.

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

Paso 2: actualice la política de confianza del rol de destino

El IAM rol debe existir en la cuenta de destino y debes modificar su política de confianza para permitir que la cuenta de origen asuma este rol temporalmente. Además, puedes controlar quién puede asumir el IAM rol de destino.

Tras crear la relación de confianza, un usuario de la cuenta de origen puede utilizar la AWS Security Token Service (AWS STS) AssumeRoleAPIoperación. Esta operación proporciona credenciales de seguridad temporales que permiten el acceso a AWS recursos de una cuenta de destino.

  1. Abre la IAM consola en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación de la consola, elija Funciones y, a continuación, utilice el cuadro de búsqueda para buscar la IAM función de destino. Por ejemplo, LambdaRole.

  3. Seleccione la pestaña Relaciones de confianza.

  4. Elija Editar política de confianza y pegue la siguiente política de confianza. Asegúrese de reemplazar el Cuenta de AWS número y IAM funciónARN. El campo sts:ExternalId controla, además, quién puede asumir el rol. El nombre de la máquina de estados debe incluir solo los caracteres que AWS Security Token Service AssumeRoleAPIadmite. Para obtener más información, consulte AssumeRoleen la AWS Security Token Service APIReferencia.

    { "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. Mantenga esta ventana abierta y continúe con el siguiente paso para realizar más acciones.

Paso 3: agregue el permiso necesario en el rol de destino

Los permisos de las IAM políticas determinan si se permite o deniega una solicitud específica. El IAM rol de destino debe tener el permiso correcto para invocar la función Lambda.

  1. Elija la pestaña Permisos.

  2. Seleccione Agregar permisos y, a continuación, Crear política insertada.

  3. Elija la JSONpestaña y sustituya el contenido existente por el siguiente permiso. Asegúrese de reemplazar la función 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. Elija Revisar política.

  5. En la página Revisar política, escriba un nombre y luego elija Crear política.

Paso 4: agregue un permiso en el rol de ejecución para asumir el rol de destino

Step Functions no genera automáticamente la AssumeRolepolítica para todas las integraciones de servicios multicuenta. Debe añadir el permiso necesario en la función de ejecución de la máquina de estados para que pueda asumir una IAM función de destino en una o más Cuentas de AWS.

  1. Abre la función de ejecución de tu máquina de estados en la IAM consola de https://console.aws.amazon.com/iam/. Para ello:

    1. Abra la máquina de estado que creó en el Paso 1 en la cuenta de origen.

    2. En la página de detalles de la máquina de estado, elija IAMel rol ARN.

  2. En la pestaña Permisos, elija Agregar permisos y luego Crear política insertada.

  3. Seleccione la JSONpestaña y sustituya el contenido existente por el siguiente permiso. Asegúrese de reemplazar la función 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. Elija Revisar política.

  5. En la página Revisar política, escriba un nombre y luego elija Crear política.