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 por el nombre de la máquina de estado en la que está utilizando el estado Map Distributed. Por ejemplo, stateMachineNamearn: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 por el nombre de la máquina de estado en la que está utilizando el estado Map Distributed. Por ejemplo, stateMachineNamearn: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 de un bucket de Amazon S3.processImages
"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
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.