

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.

# Políticas de IAM para usar estados Map Distributed
<a name="iam-policies-eg-dist-map"></a>

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 la función de máquina de estado invoque la acción de la `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` API para los AWS recursos de *estado y acceso del mapa distribuido*, como los 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](amazon-states-language-paths.md#amazon-states-language-reference-paths) 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
<a name="iam-policy-run-dist-map"></a>

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](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` 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
<a name="iam-policy-redrive-dist-map"></a>

Puede reiniciar las ejecuciones fallidas de flujos de trabajo secundarios en un flujo de trabajo basado en Map Run mediante [redriving](redrive-executions.md) del [flujo de trabajo principal](state-map-distributed.md#dist-map-orchestrate-parallel-workloads-key-terms). 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](https://docs.aws.amazon.com/step-functions/latest/apireference/API_RedriveExecution.html)` 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
<a name="iam-policy-eg-item-reader"></a>

Los siguientes ejemplos muestran técnicas para conceder los privilegios mínimos necesarios para acceder a sus conjuntos de datos de Amazon S3 mediante la [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) y las acciones de la [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)API.

**Example 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}}" ]
   }
}
```

**Example 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}}"
   ]
```

**Example 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/*"
   ]
```

**Example usar ListObjects V2 para restringirlo a un prefijo de carpeta**  
Al usar [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), 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
<a name="iam-policy-eg-result-writer"></a>

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 nombrada {{csvJobs}} en un bucket de Amazon S3 mediante la acción de `[PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)` 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 un bucket de Amazon S3 AWS KMS key cifrado
<a name="multiupload-dmap-result-policy"></a>

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](https://aws.amazon.com/premiumsupport/knowledge-center/s3-large-file-encryption-kms-key/) en el *AWS Centro de conocimientos*.

Si su usuario o rol de IAM es el Cuenta de AWS mismo que elKMS key, debe tener estos permisos en la política clave. 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.