Esempi di policy basate sulle risorse per Amazon Lex V2 - Amazon Lex

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di policy basate sulle risorse per Amazon Lex V2

Una policy basata sulle risorse è associata a una risorsa, ad esempio un bot o un alias di bot. Con una politica basata sulle risorse è possibile specificare chi ha accesso alla risorsa e le azioni che può eseguire su di essa. Ad esempio, è possibile aggiungere politiche basate sulle risorse che consentono a un utente di modificare un bot specifico o di consentire a un utente di utilizzare le operazioni di runtime su uno specifico alias di bot.

Quando utilizzi una politica basata sulle risorse, puoi consentire ad altri AWS servizi di accedere alle risorse del tuo account. Ad esempio, puoi consentire ad Amazon Connect di accedere a un bot Amazon Lex.

Per informazioni su come creare un bot o un alias di bot, consultaCostruire bot.

Usa la console per specificare una policy basata sulle risorse

Puoi utilizzare la console Amazon Lex per gestire le policy basate sulle risorse per i bot e gli alias dei bot. Si accede alla struttura JSON di una policy e la console la associa alla risorsa. Se esiste già una politica associata a una risorsa, puoi utilizzare la console per visualizzare e modificare la politica.

Quando si salva una politica con l'editor delle politiche, la console verifica la sintassi della politica. Se la politica contiene errori, ad esempio un utente inesistente o un'azione non supportata dalla risorsa, restituisce un errore e non salva la politica.

Di seguito viene illustrato l'editor di policy basato sulle risorse per un bot nella console. L'editor di policy per un alias bot è simile.

L'editor di policy basato sulle risorse della console Amazon Lex.
Per aprire l'editor delle politiche per un bot
  1. Accedi AWS Management Console e apri la console Amazon Lex all'indirizzo https://console.aws.amazon.com/lex/.

  2. Dall'elenco dei bot, scegli il bot di cui desideri modificare la politica.

  3. Nella sezione Politica basata sulle risorse, scegli Modifica.

Per aprire l'editor delle politiche per un alias bot
  1. Accedi AWS Management Console e apri la console Amazon Lex all'indirizzo https://console.aws.amazon.com/lex/.

  2. Dall'elenco dei bot, scegli il bot che contiene l'alias che desideri modificare.

  3. Dal menu a sinistra, scegli Alias, quindi scegli l'alias da modificare.

  4. Nella sezione Politica basata sulle risorse, scegli Modifica.

Utilizza l'API per specificare una politica basata sulle risorse

Puoi utilizzare le operazioni API per gestire le politiche basate sulle risorse per i bot e gli alias dei bot. Esistono operazioni per creare, aggiornare ed eliminare le politiche.

CreateResourcePolitica

Aggiunge una nuova politica delle risorse con le istruzioni di policy specificate a un bot o a un alias di bot.

CreateResourcePolicyStatement

Aggiunge una nuova dichiarazione sulla politica delle risorse a un bot o a un alias di bot.

DeleteResourcePolitica

Rimuove una politica delle risorse da un bot o da un alias di bot.

DeleteResourcePolicyStatement

Rimuove una dichiarazione sulla politica delle risorse da un bot o da un alias di bot.

DescribeResourcePolitica

Ottiene una politica delle risorse e la revisione della politica.

UpdateResourcePolitica

Sostituisce la politica delle risorse esistente per un bot o un alias di bot con una nuova.

Java

L'esempio seguente mostra come utilizzare le operazioni delle politiche basate sulle risorse per gestire una politica basata sulle risorse.

/* * 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);

Consenti a un ruolo IAM di aggiornare un bot ed elencare gli alias dei bot

L'esempio seguente concede le autorizzazioni per un ruolo IAM specifico per chiamare le operazioni API di creazione di modelli Amazon Lex V2 per modificare un bot esistente. L'utente può elencare gli alias per un bot e aggiornarlo, ma non può eliminare il bot o gli 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" ] } ] }

Consenti a un utente di conversare con un bot

L'esempio seguente concede l'autorizzazione a un utente specifico di chiamare le operazioni dell'API di runtime di Amazon Lex V2 su un singolo alias di un bot.

All'utente viene specificamente negata l'autorizzazione ad aggiornare o eliminare l'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" ] } ] }

Consenti a un AWS servizio di utilizzare un bot Amazon Lex V2 specifico

L'esempio seguente concede l'autorizzazione AWS Lambda e Amazon Connect a richiamare le operazioni dell'API di runtime di Amazon Lex V2.

Il blocco condition è necessario per i responsabili del servizio e deve utilizzare le chiavi di contesto globali e. AWS:SourceAccount AWS:SourceArn

AWS:SourceAccountÈ l'ID dell'account che chiama il bot Amazon Lex V2.

AWS:SourceArnÈ l'ARN della risorsa dell'istanza del servizio Amazon Connect o della funzione Lambda da cui proviene la chiamata all'alias bot di 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" } } } ] }