Amazon Lex
開発者ガイド

Amazon Lex でアイデンティティベースのポリシー (IAM ポリシー) を使用する

このトピックでは、アカウント管理者が IAM ID (ユーザー、グループ、ロール) にアクセス許可ポリシーをアタッチし、それによって Amazon Lex リソースでオペレーションを実行するアクセス許可を付与する方法を示すアイデンティティベースのポリシーの例を示します。

重要

先に進む前に、「Amazon Lex リソースへのアクセス権限の管理の概要」をご一読ください。

このセクションでは、次のトピックを対象としています。

以下は、アクセス権限ポリシーの例です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lex:PostText" ], "Resource": [ "arn:aws:lex:us-east-1:account-id:bot:OrderPizza:*" ] } ] }

このポリシーには、OrderPizza ボットで PostText アクションを使用する権限を付与する 1 つのステートメントがあります。リソースでは、OrderPizza ボットのすべてのエイリアスに権限を付与するためにワイルドカード文字 (*) を指定しています。

アイデンティティベースのポリシーでアクセス権限を得るプリンシパルを指定していないため、ポリシーでは Principal エレメントを指定していません。ユーザーにポリシーをアタッチすると、そのユーザーが暗黙のプリンシパルになります。IAM ロールにアクセス権限ポリシーをアタッチすると、ロールの信頼ポリシーで識別されたプリンシパルがアクセス権限を得ることになります。

すべての Amazon Lex API アクションとそれらが適用されるリソースの表については、「Amazon Lex API のアクセス権限: アクション、リソース、条件リファレンス」を参照してください。

Amazon Lex コンソールを使用するために必要なアクセス権限

アクセス権限のリファレンス表では、Amazon Lex API オペレーションとそれらの各オペレーションに必要なアクセス権限を示しています。Amazon Lex API オペレーションの詳細については、「Amazon Lex API のアクセス権限: アクション、リソース、条件リファレンス」を参照してください。

Amazon Lex コンソールを使用するには、以下のアクセス権限ポリシーに示しているように、追加のアクションのためのアクセス権限を付与する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:GetMetricStatistics", "cloudwatch:DescribeAlarms", "cloudwatch:DescribeAlarmsForMetric", "kms:DescribeKey", "kms:ListAliases", "lambda:GetPolicy", "lambda:ListFunctions", "lex:*", "polly:DescribeVoices", "polly:SynthesizeSpeech" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "*", "Condition": { "StringLike": { "lambda:Principal": "lex.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:DeleteRole" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots", "arn:aws:iam::*:role/aws-service-role/channels.lex.amazonaws.com/AWSServiceRoleForLexChannels" ] }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" ], "Condition": { "StringLike": { "iam:AWSServiceName": "lex.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:DetachRolePolicy" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" ], "Condition": { "StringLike": { "iam:PolicyArn": "arn:aws:iam::aws:policy/aws-service-role/AmazonLexBotPolicy" } } }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/channels.lex.amazonaws.com/AWSServiceRoleForLexChannels" ], "Condition": { "StringLike": { "iam:AWSServiceName": "channels.lex.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:DetachRolePolicy" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/channels.lex.amazonaws.com/AWSServiceRoleForLexChannels" ], "Condition": { "StringLike": { "iam:PolicyArn": "arn:aws:iam::aws:policy/aws-service-role/LexChannelPolicy" } } } ] }

Amazon Lex コンソールには、以下の理由でこれらの追加のアクセス権限が必要になります。

  • cloudwatch アクセス権限: コンソールでパフォーマンスおよびモニタリング情報を表示するために必要です。

  • iam アクションは、IAM ロールを引き受けて、Lambda 関数を呼び出し、ボットチャネル関連付けのためのデータを処理します。

  • kms アクションは、ボットチャネル関連付けを作成するときにデータを暗号化するための AWS Key Management Service キーを管理します。

  • lambda アクションは、ボットで使用できる Lambda 関数を表示し、これらの関数をボットで呼び出すために必要なアクセス権限を Lex に付与します。

  • lex アクションは、コンソールでアカウントの Amazon Lex リソースを表示できるようにします。

  • polly アクションは、コンソールで Amazon Polly 音声を表示し、テキストを読み上げるようにします。

  • iam アクションによって、コンソールでサーバーにリンクされたロールを管理し、他の AWS リソースを使用する権限を付与できます。

Amazon Lex での AWS 管理 (事前定義) ポリシー

AWS は、AWS によって作成され管理されるスタンドアロンの IAM ポリシーが提供する多くの一般的ユースケースに対応します。管理ポリシーは、一般的ユースケースに必要なアクセス権限を付与するため、必要なアクセス権限をユーザーが見極める必要がありません。詳細については、『IAM ユーザーガイド』の「AWS 管理ポリシー」を参照してください。

アカウントのユーザーにアタッチ可能な以下の AWS 管理ポリシーは、Amazon Lex に固有のものです。

  • ReadOnly — Amazon Lex リソースへの読み取り専用アクセスを許可します。

  • RunBotsOnly — Amazon Lex の会話ボットを実行するためのアクセス権を付与します。

  • FullAccess — すべて Amazon Lex リソースの作成、読み取り、更新、削除、および実行を行うためのフルアクセスを付与します。名前が AmazonLex で始まる Lambda 関数を Amazon Lex のインテントと関連付けるためのアクセス権を付与します。

注記

これらのアクセス権限ポリシーについては、IAM コンソールにサインインして特定のポリシーを検索することで確認できます。

独自のカスタム IAM ポリシーを作成して、Amazon Lex API アクションにアクセス権限を付与することもできます。これらのカスタムポリシーは、それらのアクセス権限が必要な IAM ユーザーまたはグループにアタッチできます。

カスタマー管理ポリシーの例

このセクションでは、さまざまな Amazon Lex アクションにアクセス権限を付与するユーザーポリシーの例を示します。これらのポリシーは、AWS SDK または AWS コマンドラインインターフェイス (AWS) で使用します。コンソールを使用している場合は、「Amazon Lex コンソールを使用するために必要なアクセス権限」で説明している、コンソールに固有の追加のアクセス権限を付与する必要があります。

注記

すべての例で、us-east-1 リージョンを使用しています。アカウント ID は架空のものです。

例 1: ユーザーにボットの削除を許可する

以下のアクセス権限ポリシーでは、us-east-1 リージョンに存在するボットを削除する権限をユーザーに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lex:DeleteBot" "Resource": [ "*" ] } ] }

例 2: ユーザーに特定のボットの更新を許可する

次のポリシーでは、us-east-1 リージョンで特定のボット (この例では「PizzaBot」) を更新する権限をユーザーに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lex:PutBot" "Resource": [ "arn:aws:lex:us-east-1:account-id:bot:PizzaBot:$LATEST" ] } ] }

例 3: ユーザーに特定のボットの管理を許可する

以下のアクセス権限ポリシーでは、ユーザーにピザの注文をビルドしてテストする権限を付与します。ユーザーが us-east-1 リージョンでボットを編集するときは OrderPizza インテントと Toppings スロットタイプのみを使用できます。このポリシーでは lex:associatedIntentslex:associatedSlotType を使用して、このボットでユーザーが使用できるインテントとスロットタイプを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lex:Create*Version", "lex:Post*", "lex:Put*", "lex:Delete*" ], "Resource": [ "arn:aws:lex:us-east-1:*:bot:PizzaBot:*", "arn:aws:lex:us-east-1:*:intent:OrderPizza:*", "arn:aws:lex:us-east-1:*:slottype:Toppings:*" ], "Condition": { "ForAllValues:StringEqualsIfExists": { "lex:associatedIntents": [ "OrderPizza" ], "lex:associatedSlotTypes": [ "Toppings" ] } } }, { "Effect": "Allow", "Action": [ "lex:Get*" ], "Resource": [ "arn:aws:lex:us-east-1:*:bot:*", "arn:aws:lex:us-east-1:*:intent:*", "arn:aws:lex:us-east-1:*:slottype:*" ] } ] }