Amazon Lex V2 内のリソースベースのポリシーの例 - Amazon Lex

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Lex V2 内のリソースベースのポリシーの例

あるリソースベースのポリシーは、ボットやボットのエイリアスなどのリソースにアタッチされています。リソースベースのポリシーによって、リソースにアクセスできるユーザーと、そのユーザーが実行できるアクションを指定できます。例えば、ユーザーが特定のボットを変更できるようにするリソースベースのポリシーを追加したり、特定のボットエイリアスに対してユーザーがランタイムオペレーションを使用することができます。

リソースベースのポリシーを使用するときは、アカウントのリソースに他の AWS サービスがアクセスすることを許可することができます。例えば、Amazon Connect に Amazon Lex ボットへのアクセスを許可できます。

ボットまたはボットエイリアスを作成する方法については、「ボットの構築」を参照してください。

コンソールを使用してリソースベースのポリシーを指定します。

Amazon Lex コンソールを使用して、ボットとボットエイリアスのリソースベースのポリシーを管理できます。ポリシーの JSON 構造を入力すると、コンソールがそれをリソースに関連付けます。リソースにポリシーがすでに関連付けられている場合は、コンソールを使用してポリシーを表示および変更できます。

ポリシーエディタでポリシーを保存すると、コンソールはポリシーの構文をチェックします。ポリシーに、存在しないユーザーやリソースでサポートされていないアクションなどのエラーが含まれている場合は、エラーを返し、ポリシーを保存しません。

次に、コンソール内のボットのリソースベースのポリシーエディタを示します。ボットエイリアスのポリシーエディタも同様です。


               Amazon Lex コンソールのリソースベースのポリシーエディター。
ボットのポリシーエディタを開くには
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/lex/ にある Amazon Lex コンソールを開きます。

  2. [ボット] リストから、ポリシーを編集するボットを選択します。

  3. [リソースベースのポリシー] セクションで、[編集]を選択します。

ボットエイリアスのポリシーエディタを開くには
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/lex/ にある Amazon Lex コンソールを開きます。

  2. [ボット] リストから、編集するエイリアスを含むボットを選択します。

  3. 左側のメニューから、[エイリアス] を選択し、[エイリアスの作成] を選択します。

  4. [リソースベースのポリシー] セクションで、[編集]を選択します。

API を使用してリソースベースのポリシーを指定する

API オペレーションを使用して、ボットとボットのエイリアスのリソースベースのポリシーを管理できます。ポリシーを作成、更新、および削除するオペレーションがあります。

CreateResourcePolicy

指定されたポリシーステートメントを持つ新しいリソースポリシーをボットまたはボットのエイリアスに追加します。

CreateResourcePolicyStatement

新しいリソースポリシーステートメントをボットまたはボットのエイリアスに追加します。

DeleteResourcePolicy

ボットまたはボットのエイリアスからリソースポリシーを削除します。

DeleteResourcePolicyStatement

ボットまたはボットのエイリアスからリソースポリシーステートメントを削除します。

DescribeResourcePolicy

リソースポリシーとポリシーリビジョンを取得します。

UpdateResourcePolicy

ボットまたはボットのエイリアスの既存のリソースポリシーを新しいリソースポリシーに置き換えます。

Java

次の例では、リソースベースのポリシーオペレーションを使用してリソースベースのポリシーを管理する方法を示しています。

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

IAM ロールがボットを更新し、ボットのエイリアスを一覧表示できるようにする。

次の例では、特定の IAM ロールに対して Amazon Lex V2 モデル構築 API オペレーションを呼び出して、既存のボットを変更する権限を付与します。ユーザーはボットのエイリアスを一覧表示してボットを更新できますが、ボットまたはボットのエイリアスは削除できません。

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

ユーザーにボットとの会話を許可する

次の例では、ボットの単一のエイリアスで Amazon Lex V2 ランタイム API オペレーションを呼び出す権限を特定のユーザーに付与します。

ユーザーには、ボットエイリアスを更新または削除する許可が特に拒否されています。

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

AWS サービスが特定の Amazon Lex V2 ボットを使用することを許可する

次の例では、Amazon Connect に Amazon Lex V2 ランタイム API AWS Lambda オペレーションを呼び出すためのアクセス権限を付与しています。

条件ブロックはサービスプリンシパルに必要であり、グローバルコンテキストキー AWS:SourceAccount および AWS:SourceArn を使用する必要があります。

AWS:SourceAccount は、Amazon Lex V2 ボットを呼び出しているアカウント ID です。

AWS:SourceArn は、Amazon Lex V2 ボットエイリアスの呼び出し元となる Amazon Connect サービスインスタンスまたは Lambda 関数のリソース ARN です。

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