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 Laufzeitoperationen 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 unterBots bauen.

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 Amazon Lex Lex-Konsole an AWS Management Console und öffnen Sie sie 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 Amazon Lex Lex-Konsole an AWS Management Console und öffnen Sie sie 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 die API, 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.

CreateResourceRichtlinie

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.

DeleteResourceRichtlinie

Entfernt eine Ressourcenrichtlinie von einem Bot oder Bot-Alias.

DeleteResourcePolicyStatement

Entfernt eine Ressourcenrichtlinien-Erklärung von einem Bot oder Bot-Alias.

DescribeResourceRichtlinie

Ruft eine Ressourcenrichtlinie und die Änderung der Richtlinie ab.

UpdateResourceRichtlinie

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

Erlaubt 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 V2-API-Operationen zur Modellerstellung, um einen vorhandenen Bot zu ändern. 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 V2-Runtime-API-Operationen 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 V2-Runtime-API-Operationen 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 der Ressourcen-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" } } } ] }