如果您使用的是 Amazon Lex V2,请改为参阅 Amazon Lex V2 指南。
如果您使用的是 Amazon Lex V1,我们建议您将机器人升级到 Amazon Lex V2。我们不再向 V1 添加新功能,强烈建议使用 V2 以获得全新的机器人。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用于对话日志的 IAM 策略
根据您选择的日志记录类型,Amazon Lex 需要具有使用 Amazon CloudWatch Logs 和 Amazon Simple Storage Service (S3) 存储桶的权限才能存储日志。您必须创建允许 Amazon Lex 访问这些资源的 AWS Identity and Access Management 角色和权限。
为对话日志创建 IAM 角色和策略
要启用对话日志,您必须授予对 CloudWatch Logs 和 Amazon S3 的写入权限。如果您为 S3 对象启用对象加密,则需要授予对用于加密对象的 AWS KMS 密钥的访问权限。
您可以使用 IAM AWS Management Console、IAM API 或 AWS Command Line Interface 来创建角色和策略。这些说明使用 AWS CLI 创建角色和策略。有关使用控制台创建策略的更多信息,请参阅《AWS Identity and Access Management 用户指南》中的在 JSON 选项卡上创建策略。
注意
以下代码针对 Linux 和 macOS 编排了格式。对于 Windows,将 Linux 行继续符 (\) 替换为脱字号 (^)。
为对话日志创建 IAM 角色
-
在名为
LexConversationLogsAssumeRolePolicyDocument.json
的当前目录中创建一个文档,向其中添加以下代码并保存。此策略文档将 Amazon Lex 作为受信任实体添加到角色中。这允许 Lex 代入将日志传送到为对话日志配置的资源的角色。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lex.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
在 AWS CLI 中,运行以下命令为对话日志创建 IAM 角色。
aws iam create-role \ --role-name
role-name
\ --assume-role-policy-document file://LexConversationLogsAssumeRolePolicyDocument.json
接下来,创建策略并将其附加到允许 Amazon Lex 写入到 CloudWatch Logs 的角色。
创建用于将对话文本的日志记录到 CloudWatch Logs 的 IAM 策略
-
在名为
LexConversationLogsCloudWatchLogsPolicy.json
的当前目录中创建一个文档,向其中添加 IAM 策略并保存。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:
region
:account-id
:log-group:log-group-name
:*" } ] } -
在 AWS CLI 中,创建向 CloudWatch Logs 日志组授予写入权限的 IAM 策略。
aws iam create-policy \ --policy-name
cloudwatch-policy-name
\ --policy-document file://LexConversationLogsCloudWatchLogsPolicy.json -
将该策略附加到您为对话日志创建的 IAM 角色中。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::
account-id
:policy/cloudwatch-policy-name
\ --role-namerole-name
如果要将音频日志记录到 S3 存储桶,请创建允许 Amazon Lex 写入存储桶的策略。
创建用于将音频日志记录到 S3 存储桶中的 IAM 策略
-
在名为
LexConversationLogsS3Policy.json
的当前目录中创建一个文档,向其中添加以下策略并保存。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::
bucket-name
/*" } ] } -
在 AWS CLI 中,创建向 S3 存储桶授予写入权限的 IAM 策略。
aws iam create-policy \ --policy-name
s3-policy-name
\ --policy-document file://LexConversationLogsS3Policy.json -
将该策略附加到您为对话日志创建的角色。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::
account-id
:policy/s3-policy-name
\ --role-namerole-name
授予传递 IAM 角色的权限
使用控制台、AWS Command Line Interface 或 AWS 开发工具包指定用于对话日志的 IAM 角色时,指定对话日志 IAM 角色的用户必须具有将角色传递给 Amazon Lex 的权限。要允许用户将角色传递给 Amazon Lex,您必须向用户、角色或组授予 PassRole
权限。
以下策略定义要授予用户、角色或组的权限。您可以使用 iam:AssociatedResourceArn
和 iam:PassedToService
条件键来限制权限的范围。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的向用户授予将角色传递给 AWS 服务的权限以及 IAM 和 AWS STS 条件上下文键。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
account-id
:role/role-name
", "Condition": { "StringEquals": { "iam:PassedToService": "lex.amazonaws.com" }, "StringLike": { "iam:AssociatedResourceARN": "arn:aws:lex:region
:account-id
:bot:bot-name
:bot-alias
" } } } ] }