メニュー
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:*" ] } ] }