Políticas de IAM para usar estados Map Distributed - AWS Step Functions

Políticas de IAM para usar estados Map Distributed

Al crear flujos de trabajo con la consola de Step Functions, Step Functions puede generar automáticamente políticas de IAM basadas en los recursos de la definición de flujo de trabajo. Las políticas generadas incluyen los privilegios mínimos necesarios para permitir que el rol de la máquina de estado invoque la acción de la API StartExecution para el estado Distributed Map y acceda a los recursos de AWS, como buckets y objetos de Amazon S3 y las funciones de Lambda.

Le recomendamos que incluya únicamente los permisos necesarios en las políticas de IAM. Por ejemplo, si el flujo de trabajo incluye un estado Map en modo Distribuido, aplique las políticas al bucket y a la carpeta de Amazon S3 específicos que contengan los datos.

importante

Si especifica un bucket y un objeto de Amazon S3, o un prefijo, con una ruta de referencia a un par clave-valor existente en la entrada del estado Map Distributed, no olvide actualizar las políticas de IAM para el flujo de trabajo. Limite las políticas hasta los nombres de objeto y bucket a los que se dirige la ruta en tiempo de ejecución.

Ejemplo de política de IAM para ejecutar un estado Map Distributed

Cuando se incluye un estado Map Distributed en los flujos de trabajo, Step Functions necesita los permisos adecuados para permitir que el rol de la máquina de estado invoque la acción de la API StartExecution para el estado Map Distributed.

El siguiente ejemplo de política de IAM otorga los privilegios mínimos necesarios al rol de la máquina de estado para ejecutar el estado Map Distributed.

nota

No olvide reemplazar stateMachineName por el nombre de la máquina de estado en la que está utilizando el estado Map Distributed. Por ejemplo, arn:aws:states:region:account-id:stateMachine:mystateMachine.

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

Ejemplo de política de IAM para redriving de estado Map Distributed

Puede reiniciar las ejecuciones fallidas de flujos de trabajo secundarios en un flujo de trabajo basado en Map Run mediante redriving del flujo de trabajo principal. Un flujo de trabajo principal redriven redrives todos los estados fallidos, incluido el estado Map Distributed. Asegúrese de que la función de ejecución tenga los privilegios mínimos necesarios para poder invocar la acción de la API RedriveExecution en el flujo de trabajo principal.

El siguiente ejemplo de política de IAM otorga los privilegios mínimos necesarios para el rol de la máquina de estado para redriving de un estado Map Distributed.

nota

No olvide reemplazar stateMachineName por el nombre de la máquina de estado en la que está utilizando el estado Map Distributed. Por ejemplo, arn:aws:states:region:account-id:stateMachine:mystateMachine.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachineName/myMapRunLabel:*" } ] }

Ejemplos de políticas de IAM para leer datos desde conjuntos de datos de Amazon S3

En los siguientes ejemplos se muestran técnicas para otorgar los privilegios mínimos necesarios para acceder a los conjuntos de datos de Amazon S3 mediante las acciones de la API ListObjectsV2 y GetObject.

ejemplo condición que usa un objeto de Amazon S3 como conjunto de datos

La siguiente condición otorga privilegios mínimos para acceder a los objetos de una carpeta processImages de un bucket de Amazon S3.

"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } }
ejemplo uso de un archivo CSV como conjunto de datos

En el siguiente ejemplo se muestran las acciones necesarias para acceder a un archivo CSV denominado ratings.csv.

"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ]
ejemplo uso de un inventario de Amazon S3 como conjunto de datos

A continuación, se muestran ejemplos de recursos para un manifiesto de inventario y archivos de datos de Amazon S3.

"Resource": [ "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/data/*" ]
ejemplo uso de ListObjectsV2 para restringirlo a un prefijo de carpeta

Al usar ListObjectsV2, se generarán dos políticas. Una es necesaria para poder mostrar el contenido del bucket (ListBucket) y otra política permitirá recuperar los objetos del bucket (GetObject).

A continuación, se muestran ejemplos de acciones, recursos y una condición:

"Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "/path/to/your/json/" ] } }
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path/to/your/json/*" ]

Tenga en cuenta que GetObject no se limitará al ámbito y utilizará un comodín (*) para el objeto.

Ejemplo de política de IAM para escribir datos en un bucket de Amazon S3

El siguiente ejemplo de política de IAM otorga los privilegios mínimos necesarios para escribir los resultados de la ejecución del flujo de trabajo secundario en una carpeta denominada csvJobs de un bucket de Amazon S3 mediante la acción PutObject de la API.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/csvJobs/*" ] } ] }

Permisos de IAM para bucket de Amazon S3 cifrado AWS KMS key

El estado Map Distributed utiliza cargas multiparte para escribir los resultados de ejecución del flujo de trabajo secundario en un bucket de Amazon S3. Si el bucket se cifra con una clave AWS Key Management Service (AWS KMS), también debe incluir los permisos en la política IAM para realizar las acciones kms:Decrypt, kms:Encrypt y kms:GenerateDataKey sobre la clave Estos permisos son necesarios, ya que Amazon S3 debe descifrar y leer datos de las partes de archivos cifrados antes de finalizar la carga multiparte.

El siguiente ejemplo de política de IAM concede permisos a las acciones kms:Decrypt, kms:Encrypt y kms:GenerateDataKey sobre la clave utilizada para cifrar el bucket de Amazon S3.

{ "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/111aa2bb-333c-4d44-5555-a111bb2c33dd" ] } }

Para obtener más información, consulte Cargar un archivo grande en Amazon S3 con cifrado mediante AWS KMS key en el AWS Centro de conocimientos.

Si su rol o usuario de IAM se encuentran en la misma Cuenta de AWS que la KMS key, debe tener estos permisos en la política de claves. Si el usuario o rol de IAM pertenecen a una cuenta distinta que la KMS key, debe tener los permisos tanto en la política de claves como en el usuario o rol de IAM.