Política basada en recursos para Amazon Lex V2 - Amazon Lex

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

Se adjunta 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.

Para obtener más información acerca de cómo crear un bot, consulte Compilar bots.

Utilizar la consola para especificar una política basada en recursos

Puede usar la consola de Amazon Lex para administrar las políticas basadas en recursos para sus bots y alias de bots. 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.

El editor de políticas basado en recursos de la consola de Amazon Lex.
Abrir el editor de políticas de un bot
  1. Inicie sesión en la consola Amazon Lex AWS Management Console y ábrala en https://console.aws.amazon.com/lex/.

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

  3. 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 Amazon Lex AWS Management Console y ábrala en https://console.aws.amazon.com/lex/.

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

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

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

Utilizar la API para especificar una política basada en recursos

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.

CreateResourcePolítica

Agrega una nueva política de recursos con las instrucciones de política especificadas a un bot o alias de bot.

CreateResourcePolicyStatement

Agrega una nueva declaración de política de recursos a un bot o alias de bot.

DeleteResourcePolítica

Elimina una política de recursos de un bot o un alias de bot.

DeleteResourcePolicyStatement

Elimina una declaración de política de recursos de un bot o un alias de bot.

DescribeResourcePolítica

Obtiene una política de recursos y la revisión de la política.

UpdateResourcePolítica

Sustituye la política de recursos existente para un bot o un alias de bot por una nueva.

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

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.

{ "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:Region:123456789012:bot/MYBOT" ] } ] }

Permitir a los usuarios mantener una conversación con un bot

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.

{ "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:Region: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:Region:123456789012:bot-alias/MYBOT/MYBOTALIAS" ] } ] }

Permitir que un AWS servicio utilice un bot Amazon Lex V2 específico

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.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "connect-bot-alias", "Effect": "Allow", "Principal": { "Service": [ "connect.amazonaws.com" ] }, "Action": [ "lex:RecognizeText", "lex:StartConversation" ], "Resource": [ "arn:aws:lex:Region:123456789012:bot-alias/MYBOT/MYBOTALIAS" ], "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnEquals": { "AWS:SourceArn": "arn:aws:connect:Region:123456789012:instance/instance-id" } } }, { "Sid": "lambda-function", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Action": [ "lex:RecognizeText", "lex:StartConversation" ], "Resource": [ "arn:aws:lex:Region:123456789012:bot-alias/MYBOT/MYBOTALIAS" ], "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnEquals": { "AWS:SourceArn": "arn:aws:lambda:Region:123456789012:function/function-name" } } } ] }