Exemplos de políticas baseadas em recursos para o Amazon Lex V2 - Amazon Lex

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exemplos de políticas baseadas em recursos para o Amazon Lex V2

Uma política baseada em recursos é anexada a um recurso, como um bot ou um alias de bot. Com uma política baseada em recursos, você pode especificar quem tem acesso ao recurso e as ações que essa pessoa pode executar nele. Por exemplo, você pode adicionar políticas baseadas em recursos que permitem que um usuário modifique um bot específico ou que um usuário use operações de tempo de execução em um alias de bot específico.

Ao usar uma política baseada em recursos, você pode permitir que outrosAWS serviços acessem recursos em sua conta. Por exemplo, você pode permitir que o Amazon Connect acesse um bot do Amazon Lex.

Para saber como criar um bot ou um alias de bot, consulteConstruindo bots.

Use o console para especificar uma política baseada em recursos

Você pode usar o console Amazon Lex para gerenciar as políticas baseadas em recursos para seus bots e aliases de bots. Você insere a estrutura JSON de uma política e o console a associa ao recurso. Se já houver uma política associada a um recurso, você poderá usar o console para visualizar e modificar a política.

Quando você salva uma política com o editor de políticas, o console verifica a sintaxe da política. Se a política contiver erros, como um usuário inexistente ou uma ação que não é suportada pelo recurso, ela retornará um erro e não salvará a política.

A seguir, mostramos o editor de políticas baseado em recursos para um bot no console. O editor de políticas para um alias de bot é semelhante.


               O editor de políticas baseado em recursos do console Amazon Lex.
Para abrir o editor de políticas para um bot
  1. Faça login noAWS Management Console e abra o console do Amazon Lex em https://console.aws.amazon.com/lex/.

  2. Na lista de Bots, selecione o bot cuja política você deseja editar.

  3. Na seção Política baseada em recursos, escolha Editar.

Para abrir o editor de políticas para um alias de bot
  1. Faça login noAWS Management Console e abra o console do Amazon Lex em https://console.aws.amazon.com/lex/.

  2. Na lista de bots, escolha o bot que contém o alias que você deseja editar.

  3. No menu à esquerda, escolha Aliases e escolha o alias a ser editado.

  4. Na seção Política baseada em recursos, escolha Editar.

Use a API para especificar uma política baseada em recursos

Você pode usar operações de API para gerenciar as políticas baseadas em recursos para seus bots e aliases de bots. Existem operações para criar, atualizar e excluir políticas.

CreateResourcePolicy

Adiciona uma nova política de recursos com as declarações de política definidas a um bot ou um alias de bot ou a política de recursos do.

CreateResourcePolicyStatement

Adiciona uma nova declaração de política de recursos a um bot ou alias de bot.

DeleteResourcePolicy

Remove uma política de recursos de um bot ou alias de bot.

DeleteResourcePolicyStatement

Remove uma declaração de política de recursos de um bot ou alias de bot.

DescribeResourcePolicy

Obtém uma política de recursos e a revisão da política.

UpdateResourcePolicy

Substitui a política de recursos existente de um bot ou alias de bot por uma nova.

Java

O exemplo a seguir mostra como usar as operações de política baseada em recursos para gerenciar uma política baseada em 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 uma função do IAM atualize um bot e liste aliases de bots

O exemplo a seguir concede permissões para uma função específica do IAM para chamar operações de API de construção de modelos do Amazon Lex V2 para modificar um bot existente. O usuário pode listar aliases para um bot e atualizar o bot, mas não pode excluir o bot ou os aliases do 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 que um usuário converse com um bot

O exemplo a seguir concede permissão para um usuário específico chamar operações de API de tempo de execução do Amazon Lex V2 em um único alias de um bot.

O usuário não tem permissão específica para atualizar ou excluir o alias do 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 umAWS serviço use um bot específico do Amazon Lex V2

O exemplo a seguir concede permissão paraAWS Lambda que o Amazon Connect chame operações de API de tempo de execução do Amazon Lex V2.

O bloco de condições é necessário para diretores de serviço e deve usar as chaves de contexto globaisAWS:SourceAccountAWS:SourceArn e.

AWS:SourceAccountÉ o ID da conta que está chamando o bot Amazon Lex V2.

OAWS:SourceArn é o ARN do recurso da instância de serviço Amazon Connect ou da função Lambda da qual a chamada para o alias de bot Amazon Lex V2 se origina.

{ "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" } } } ] }