

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ítica basada en recursos para Amazon Lex V2
<a name="security_iam_resource-based-policy-examples"></a>

Se asocia una *política basada en recursos* a un recurso, como un bot o un alias de bot. Con una política basada en recursos puede especificar quién tiene acceso al recurso y qué acciones puede realizar en él. Por ejemplo, puede añadir políticas basadas en recursos que permitan a un usuario modificar un bot específico o utilizar operaciones en tiempo de ejecución en un alias de bot específico.

Cuando utiliza una política basada en recursos, puede permitir que otros servicios de AWS accedan a los recursos de su cuenta. Por ejemplo, puede permitir que Amazon Connect acceda a un bot de Amazon Lex V2.

Para obtener más información acerca de cómo crear un bot, consulte [Uso de bots Amazon Lex V2](building-bots.md).

**Topics**
+ [Utilizar la consola para especificar una política basada en recursos](#security_iam_resource-based-policy-examples-console)
+ [Utilizar la API para especificar una política basada en recursos](#security_iam_resource-based-policy-examples-api)
+ [Permitir que un rol de IAM actualice un bot y enumere sus alias](#security_iam_resource-based-policy-examples-allow-lex-models)
+ [Permitir a los usuarios mantener una conversación con un bot](#security_iam_resource-based-policy-examples-allow-lex-runtime)
+ [Permitir que un servicio de AWS utilice un bot Amazon Lex V2 específico](#security_iam_resource-based-policy-examples-allow-lex-connect)

## Utilizar la consola para especificar una política basada en recursos
<a name="security_iam_resource-based-policy-examples-console"></a>

Puede utilizar la consola Amazon Lex V2 para gestionar las políticas basadas en recursos para sus bots y sus alias. Usted introduce la estructura JSON de una política y la consola la asocia al recurso. Si ya hay una política asociada a un recurso, puede usar la consola para ver y modificar la política.

Al guardar una política en el editor de políticas, la consola comprueba la sintaxis de la política. Si la política contiene errores, como un usuario inexistente o una acción no compatible con el recurso, devuelve un error y no guarda la política. 

A continuación, se muestra el editor de políticas basado en recursos para un bot en la consola. El editor de políticas de un alias de bot es similar.

![\[\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/resource-policy-editor.png)


**Abrir el editor de políticas de un bot**

1. Inicie sesión en la consola de administración de AWS y abra la consola de Amazon Lex en [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. De la lista de **bots**, seleccione el bot de la política que desea editar.

1. En la sección **Política basada en recursos**, seleccione **Editar**.

**Abrir el editor de políticas de un alias de bot**

1. Inicie sesión en la consola de administración de AWS y abra la consola de Amazon Lex en [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. En la lista de **bots**, seleccione el bot que contiene el alias que quiere editar.

1. En el menú de la izquierda, seleccione **Alias** y, a continuación, seleccione el alias que desea editar.

1. En la sección **Política basada en recursos**, seleccione **Editar**.

## Utilizar la API para especificar una política basada en recursos
<a name="security_iam_resource-based-policy-examples-api"></a>

Puede usar las operaciones de la API para administrar las políticas basadas en recursos para sus bots y alias de bots. Existen operaciones para crear, actualizar y eliminar políticas.

[CreateResourcePolicy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateResourcePolicy.html)  
Agrega una nueva política de recursos con las instrucciones de política especificadas a un bot o alias de bot.

[CreateResourcePolicyStatement](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateResourcePolicyStatement.html)  
Agrega una nueva declaración de política de recursos a un bot o alias de bot.

[DeleteResourcePolicy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DeleteResourcePolicy.html)  
Elimina una política de recursos de un bot o un alias de bot.

[DeleteResourcePolicyStatement](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DeleteResourcePolicyStatement.html)  
Elimina una declaración de política de recursos de un bot o un alias de bot.

[DescribeResourcePolicy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DescribeResourcePolicy.html)  
Obtiene una política de recursos y la revisión de la política.

[UpdateResourcePolicy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateResourcePolicy.html)  
Sustituye la política de recursos existente para un bot o un alias de bot por una nueva.

### Ejemplos
<a name="collapsible-api-example"></a>

------
#### [ Java ]

En el siguiente ejemplo se muestra cómo utilizar las operaciones de política basada en recursos para administrar una política basada en recursos.

```
        /*
         * Create a new policy for the specified bot alias 
         * that allows a role to invoke lex:UpdateBotAlias on it.
         * The created policy will have revision id 1.
         */
        
        CreateResourcePolicyRequest createPolicyRequest =
                CreateResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .policy("{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"BotAliasEditor\",\"Effect\": \"Allow\",\"Principal\": {\"AWS\": \"arn:aws:iam::123456789012:role/BotAliasEditor\"},\"Action\": [\"lex:UpdateBotAlias\"],\"Resource\":[\"arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID\"]]}")

        lexmodelsv2Client.createResourcePolicy(createPolicyRequest);
        
        /*
         * Overwrite the policy for the specified bot alias with a new policy.
         * Since no expectedRevisionId is provided, this request overwrites the current revision.
         * After this update, the revision id for the policy is 2.
         */
        UpdateResourcePolicyRequest updatePolicyRequest =
        UpdateResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .policy("{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"BotAliasEditor\",\"Effect\": \"Deny\",\"Principal\": {\"AWS\": \"arn:aws:iam::123456789012:role/BotAliasEditor\"},\"Action\": [\"lex:UpdateBotAlias\"],\"Resource\":[\"arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID\"]]}")

        lexmodelsv2Client.updateResourcePolicy(updatePolicyRequest);
        
        /*
         * Creates a statement in an existing policy for the specified bot alias 
         * that allows a role to invoke lex:RecognizeText on it.
         * This request expects to update revision 2 of the policy. The request will fail
         * if the current revision of the policy is no longer revision 2.
         * After this request, the revision id for this policy will be 3.
         */
        
        CreateResourcePolicyStatementRequest createStatementRequest =
                CreateResourcePolicyStatementRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .effect("Allow")
                        .principal(Principal.builder().arn("arn:aws:iam::123456789012:role/BotRunner").build())
                        .action("lex:RecognizeText")
                        .statementId("BotRunnerStatement")
                        .expectedRevisionId(2)
                        .build();

        lexmodelsv2Client.createResourcePolicyStatement(createStatementRequest);

        /*
         * Deletes a statement from an existing policy for the specified bot alias by statementId.
         * Since no expectedRevisionId is supplied, the request will remove the statement from
         * the current revision of the policy for the bot alias. 
         * After this request, the revision id for this policy will be 4.
         */
        DeleteResourcePolicyRequest deleteStatementRequest =
                DeleteResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .statementId("BotRunnerStatement")                        
                        .build();

        lexmodelsv2Client.deleteResourcePolicy(deleteStatementRequest);
        
        /*
         * Describe the current policy for the specified bot alias
         * It always returns the current revision.
         */
        DescribeResourcePolicyRequest describePolicyRequest =
                DescribeResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .build();

        lexmodelsv2Client.describeResourcePolicy(describePolicyRequest);
        
        
        /*
         * Delete the current policy for the specified bot alias
         * This request expects to delete revision 3 of the policy. Since the revision id for 
         * this policy is already at 4, this request will fail.
         */
        DeleteResourcePolicyRequest deletePolicyRequest =
                DeleteResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .expectedRevisionId(3);
                        .build();

        lexmodelsv2Client.deleteResourcePolicy(deletePolicyRequest);
```

------

## Permitir que un rol de IAM actualice un bot y enumere sus alias
<a name="security_iam_resource-based-policy-examples-allow-lex-models"></a>

El siguiente ejemplo otorga permisos para que un rol de IAM específico llame a las operaciones de la API de creación de modelos de Amazon Lex V2 para modificar un bot existente. El usuario puede enumerar los alias de un bot y actualizarlo, pero no puede eliminar el bot o los alias del bot. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "botBuilders",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/BotBuilder"
            },
            "Action": [
                "lex:ListBotAliases",
                "lex:UpdateBot"
            ],
            "Resource": [
                "arn:aws:lex:us-east-1:123456789012:bot/MYBOT"
            ]
        }
    ]
}
```

------

## Permitir a los usuarios mantener una conversación con un bot
<a name="security_iam_resource-based-policy-examples-allow-lex-runtime"></a>

El siguiente ejemplo concede permiso a un usuario específico para llamar a las operaciones de la API de tiempo de ejecución de Amazon Lex V2 en un único alias de un bot.

Se deniega específicamente al usuario el permiso para actualizar o eliminar el alias del bot.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "botRunners",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/botRunner"
            },
            "Action": [
                "lex:RecognizeText",
                "lex:RecognizeUtterance",
                "lex:StartConversation",
                "lex:DeleteSession",
                "lex:GetSession",
                "lex:PutSession"
            ],
            "Resource": [
                "arn:aws:lex:us-east-1:123456789012:bot-alias/MYBOT/MYBOTALIAS"
            ]
        },
        {
            "Sid": "botRunners",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/botRunner"
            },
            "Action": [
                "lex:UpdateBotAlias",
                "lex:DeleteBotAlias"
            ],
            "Resource": [
                "arn:aws:lex:us-east-1:123456789012:bot-alias/MYBOT/MYBOTALIAS"
            ]
        }
    ]
}
```

------

## Permitir que un servicio de AWS utilice un bot Amazon Lex V2 específico
<a name="security_iam_resource-based-policy-examples-allow-lex-connect"></a>

El siguiente ejemplo concede permiso a Amazon Connect para llamar a AWS Lambda las operaciones de la API de tiempo de ejecución de Amazon Lex V2.

El bloque de condiciones es obligatorio para las entidades principales de servicio y debe usar las claves de contexto globales `AWS:SourceAccount` y `AWS:SourceArn`. 

`AWS:SourceAccount` es el ID de cuenta que llama al bot de Amazon Lex V2.

`AWS:SourceArn` es el recurso de la instancia de servicio Amazon Connect o la función de Lambda desde la que se origina la llamada al alias del bot de Amazon Lex V2.