Exemples de politiques basées sur les ressources pour Amazon Lex V2 - Amazon Lex

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples de politiques basées sur les ressources pour Amazon Lex V2

Une politique basée sur les ressources est attachée à une ressource, telle qu'un bot ou un alias de bot. Avec une politique basée sur les ressources, vous pouvez spécifier qui a accès à la ressource et les actions qu'il peut effectuer sur celle-ci. Par exemple, vous pouvez ajouter des politiques basées sur les ressources qui permettent à un utilisateur de modifier un bot spécifique ou d'utiliser des opérations d'exécution sur un alias de bot spécifique.

Lorsque vous utilisez une politique basée sur les ressources, vous pouvez autoriser d'autres AWS services à accéder aux ressources de votre compte. Par exemple, vous pouvez autoriser Amazon Connect à accéder à un robot Amazon Lex.

Pour savoir comment créer un bot ou un alias de bot, consultezConstruire des robots.

Utiliser la console pour définir une politique basée sur les ressources

Vous pouvez utiliser la console Amazon Lex pour gérer les politiques basées sur les ressources pour vos robots et alias de robots. Vous entrez la structure JSON d'une politique et la console l'associe à la ressource. Si une politique est déjà associée à une ressource, vous pouvez utiliser la console pour afficher et modifier la politique.

Lorsque vous enregistrez une politique dans l'éditeur de stratégie, la console vérifie la syntaxe de la stratégie. Si la politique contient des erreurs, telles qu'un utilisateur inexistant ou une action non prise en charge par la ressource, elle renvoie une erreur et n'enregistre pas la politique.

Ce qui suit montre l'éditeur de stratégie basé sur les ressources pour un bot dans la console. L'éditeur de politique pour un alias de bot est similaire.

L'éditeur de politiques basé sur les ressources de la console Amazon Lex.
Pour ouvrir l'éditeur de politiques pour un bot
  1. Connectez-vous à la console Amazon Lex AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/lex/.

  2. Dans la liste des robots, choisissez le bot dont vous souhaitez modifier la politique.

  3. Dans la section Stratégie basée sur les ressources, choisissez Modifier.

Pour ouvrir l'éditeur de politiques pour un alias de bot
  1. Connectez-vous à la console Amazon Lex AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/lex/.

  2. Dans la liste des robots, choisissez le bot qui contient l'alias que vous souhaitez modifier.

  3. Dans le menu de gauche, choisissez Alias, puis choisissez l'alias à modifier.

  4. Dans la section Stratégie basée sur les ressources, choisissez Modifier.

Utiliser l'API pour définir une politique basée sur les ressources

Vous pouvez utiliser les opérations d'API pour gérer les politiques basées sur les ressources pour vos robots et alias de robots. Des opérations permettent de créer, de mettre à jour et de supprimer des politiques.

CreateResourcePolitique

Ajoute une nouvelle politique de ressources avec les déclarations de politique spécifiées à un bot ou à un alias de bot.

CreateResourcePolicyStatement

Ajoute une nouvelle déclaration de politique de ressources à un bot ou à un alias de bot.

DeleteResourcePolitique

Supprime une politique de ressources d'un bot ou d'un alias de bot.

DeleteResourcePolicyStatement

Supprime une déclaration de politique de ressources d'un bot ou d'un alias de bot.

DescribeResourcePolitique

Obtient une politique de ressources et la révision de la politique.

UpdateResourcePolitique

Remplace la politique de ressources existante pour un bot ou un alias de bot par une nouvelle.

Java

L'exemple suivant montre comment utiliser les opérations de stratégie basées sur les ressources pour gérer une stratégie basée sur les ressources.

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

Autoriser un rôle IAM à mettre à jour un bot et à répertorier les alias du bot

L'exemple suivant accorde des autorisations à un rôle IAM spécifique pour appeler les opérations d'API de création de modèles Amazon Lex V2 afin de modifier un bot existant. L'utilisateur peut répertorier les alias d'un bot et le mettre à jour, mais ne peut pas supprimer le bot ou les alias du 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" ] } ] }

Autoriser un utilisateur à avoir une conversation avec un bot

L'exemple suivant autorise un utilisateur spécifique à appeler les opérations de l'API d'exécution Amazon Lex V2 sur un alias unique d'un bot.

L'utilisateur se voit spécifiquement refuser l'autorisation de mettre à jour ou de supprimer l'alias du 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" ] } ] }

Autoriser un AWS service à utiliser un bot Amazon Lex V2 spécifique

L'exemple suivant autorise Amazon Connect à appeler les AWS Lambda opérations de l'API d'exécution Amazon Lex V2.

Le bloc de condition est obligatoire pour les principaux de service et doit utiliser les clés de contexte globales AWS:SourceAccount etAWS:SourceArn.

AWS:SourceAccountIl s'agit de l'ID de compte qui appelle le bot Amazon Lex V2.

AWS:SourceArnIl s'agit de l'ARN de ressource de l'instance de service Amazon Connect ou de la fonction Lambda d'où provient l'appel à l'alias du bot 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" } } } ] }