Beispiele für ressourcenbasierte Richtlinien für Amazon Lex V2 - Amazon Lex

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiele für ressourcenbasierte Richtlinien für Amazon Lex V2

Eine ressourcenbasierte Richtlinie ist an eine Ressource angehängt, z. B. an einen Bot oder einen Bot-Alias. Mit einer ressourcenbasierten Richtlinie können Sie angeben, wer Zugriff auf die Ressource hat und welche Aktionen sie mit ihr ausführen können. Sie können beispielsweise ressourcenbasierte Richtlinien hinzufügen, die es einem Benutzer ermöglichen, einen bestimmten Bot zu ändern oder einem Benutzer die Verwendung von Runtime-Operationen für einen bestimmten Bot-Alias zu ermöglichen.

Wenn Sie eine ressourcenbasierte Richtlinie verwenden, können Sie anderen AWS Diensten den Zugriff auf Ressourcen in Ihrem Konto ermöglichen. Sie können Amazon Connect beispielsweise den Zugriff auf einen Amazon Lex Lex-Bot gestatten.

Informationen zum Erstellen eines Bot oder Bot-Alias finden Sie unterArbeiten mit Amazon Lex V2-Bots.

Verwenden Sie die Konsole, um eine ressourcenbasierte Richtlinie anzugeben

Sie können die Amazon Lex Lex-Konsole verwenden, um die ressourcenbasierten Richtlinien für Ihre Bots und Bot-Aliase zu verwalten. Sie geben die JSON Struktur einer Richtlinie ein und die Konsole ordnet sie der Ressource zu. Wenn einer Ressource bereits eine Richtlinie zugeordnet ist, können Sie die Richtlinie in der Konsole anzeigen und ändern.

Wenn Sie eine Richtlinie mit dem Richtlinien-Editor speichern, überprüft die Konsole die Syntax der Richtlinie. Wenn die Richtlinie Fehler enthält, z. B. dass ein Benutzer nicht existiert oder eine Aktion, die von der Ressource nicht unterstützt wird, wird ein Fehler zurückgegeben und die Richtlinie wird nicht gespeichert.

Im Folgenden wird der ressourcenbasierte Policy-Editor für einen Bot in der Konsole gezeigt. Der Policy-Editor für einen Bot-Alias ist ähnlich.

Der ressourcenbasierte Policy-Editor der Amazon Lex Lex-Konsole.
Um den Policy-Editor für einen Bot zu öffnen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon Lex Lex-Konsole unter https://console.aws.amazon.com/lex/.

  2. Wählen Sie aus der Bot-Liste den Bot aus, dessen Richtlinie Sie bearbeiten möchten.

  3. Wählen Sie im Abschnitt Ressourcenbasierte Richtlinie die Option Bearbeiten aus.

Um den Policy-Editor für einen Bot-Alias zu öffnen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon Lex Lex-Konsole unter https://console.aws.amazon.com/lex/.

  2. Wählen Sie aus der Bot-Liste den Bot aus, der den Alias enthält, den Sie bearbeiten möchten.

  3. Wählen Sie im linken Menü Aliase und dann den Alias aus, den Sie bearbeiten möchten.

  4. Wählen Sie im Abschnitt Ressourcenbasierte Richtlinie die Option Bearbeiten aus.

Verwenden Sie denAPI, um eine ressourcenbasierte Richtlinie anzugeben

Sie können API Operationen verwenden, um die ressourcenbasierten Richtlinien für Ihre Bots und Bot-Aliase zu verwalten. Es gibt Operationen zum Erstellen, Aktualisieren und Löschen von Richtlinien.

CreateResourcePolicy

Fügt einem Bot oder Bot-Alias eine neue Ressourcenrichtlinie mit den angegebenen Richtlinienanweisungen hinzu.

CreateResourcePolicyStatement

Fügt einem Bot oder Bot-Alias eine neue Ressourcenrichtlinien-Anweisung hinzu.

DeleteResourcePolicy

Entfernt eine Ressourcenrichtlinie von einem Bot oder Bot-Alias.

DeleteResourcePolicyStatement

Entfernt eine Anweisung zur Ressourcenrichtlinie von einem Bot oder Bot-Alias.

DescribeResourcePolicy

Ruft eine Ressourcenrichtlinie und deren Revision ab.

UpdateResourcePolicy

Ersetzt die bestehende Ressourcenrichtlinie für einen Bot oder Bot-Alias durch eine neue.

Java

Das folgende Beispiel zeigt, wie die ressourcenbasierten Richtlinienoperationen verwendet werden, um eine ressourcenbasierte Richtlinie zu verwalten.

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

Erlauben Sie einer IAM Rolle, einen Bot zu aktualisieren und Bot-Aliase aufzulisten

Das folgende Beispiel gewährt einer bestimmten IAM Rolle Berechtigungen zum Aufrufen von Amazon Lex API V2-Modellerstellungsoperationen zur Änderung eines vorhandenen Bots. Der Benutzer kann Aliase für einen Bot auflisten und den Bot aktualisieren, aber den Bot oder die Bot-Aliase nicht löschen.

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

Erlauben Sie einem Benutzer, eine Konversation mit einem Bot zu führen

Das folgende Beispiel gewährt einem bestimmten Benutzer die Erlaubnis, Amazon Lex API V2-Laufzeitoperationen für einen einzelnen Alias eines Bots aufzurufen.

Dem Benutzer wird ausdrücklich die Erlaubnis verweigert, den Bot-Alias zu aktualisieren oder zu löschen.

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

Erlauben Sie einem AWS Service, einen bestimmten Amazon Lex V2-Bot zu verwenden

Das folgende Beispiel erteilt Amazon Connect die AWS Lambda Erlaubnis, Amazon Lex API V2-Laufzeitoperationen aufzurufen.

Der Bedingungsblock ist für Service Principals erforderlich und muss die globalen Kontextschlüssel AWS:SourceAccount und AWS:SourceArn verwenden.

Das AWS:SourceAccount ist die Konto-ID, die den Amazon Lex V2-Bot anruft.

Das AWS:SourceArn ist die Ressource ARN der Amazon Connect Connect-Serviceinstanz oder Lambda-Funktion, von der der Aufruf des Amazon Lex V2-Bot-Alias stammt.

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