本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Lex V2 基于资源的策略示例
基于资源的策略将附加到诸如机器人或机器人别名等资源上。通过使用基于资源的策略,您可以指定有权访问资源的用户,以及该等用户可以对资源执行的操作。例如,您可以添加基于资源的策略,以允许用户修改特定的机器人,或者允许用户对特定的机器人别名使用运行时操作。
当您使用基于资源的策略时,可以允许其他 AWS 服务访问您账户中的资源。例如,您可以允许 Amazon Connect 访问 Amazon Lex 机器人。
要了解如何创建机器人或机器人别名,请参阅 使用 Amazon Lex V2 机器人。
使用控制台来指定基于资源的策略
您可以使用 Amazon Lex 控制台来针对机器人和机器人别名管理基于资源的策略。您输入策略的JSON结构,控制台会将其与资源关联。如果已有策略与资源关联,则可以使用控制台来查看和修改该策略。
使用策略编辑器保存策略时,控制台会检查策略的句法。如果策略中存在错误,例如用户不存在或存在资源不支持的操作,则会返回错误且不会保存该策略。
下图是针对控制台中机器人的基于资源的策略编辑器。机器人别名的策略编辑器与此类似。
要打开机器人的策略编辑器,请执行以下操作:
登录 AWS Management Console 并打开 Amazon Lex 控制台,网址为https://console.aws.amazon.com/lex/
。 -
从机器人列表中,选择要编辑其策略的机器人。
-
在基于资源的策略部分中,选择编辑。
要打开机器人别名的策略编辑器,请执行以下操作:
登录 AWS Management Console 并打开 Amazon Lex 控制台,网址为https://console.aws.amazon.com/lex/
。 -
从机器人列表中,选择包含要编辑别名的机器人。
-
在左侧菜单中选择别名,然后选择要编辑的别名。
-
在基于资源的策略部分中,选择编辑。
使用API来指定基于资源的策略
您可以使用API操作来管理针对您的机器人和机器人别名的基于资源的策略。这些操作包括创建、更新和删除策略的操作。
- CreateResourcePolicy
-
将带有指定策略语句的新资源策略添加到机器人或机器人别名中。
- CreateResourcePolicyStatement
-
将新资源策略语句添加到机器人或机器人别名中。
- DeleteResourcePolicy
-
从机器人或机器人别名中删除资源策略。
- DeleteResourcePolicyStatement
-
从机器人或机器人别名中删除资源策略语句。
- DescribeResourcePolicy
-
获取资源策略和策略修订。
- UpdateResourcePolicy
-
将机器人或机器人别名的现有资源策略替换为新的资源策略。
允许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 机器人
以下示例授予 AWS Lambda 和 Amazon Connect 调用 Amazon Lex V2 运行时API操作的权限。
条件块是服务主体所必需的,并且必须使用全局上下文键 AWS:SourceAccount
和 AWS:SourceArn
。
AWS:SourceAccount
是调用 Amazon Lex V2 机器人的账户编号。
AWS:SourceArn
是 Amazon Connect 服务实例或 Lambda 函数的资源ARN,对 Amazon Lex V2 机器人别名的调用源自该资源。
{ "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
" } } } ] }