本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用于对话日志的 IAM 策略
根据您选择的日志类型,Amazon Lex V2 需要权限才能使用亚马逊 CloudWatch 日志和亚马逊简单存储服务 (S3) 存储桶来存储您的日志。您必须创建 AWS Identity and Access Management 角色和权限才能让 Amazon Lex V2 访问这些资源。
为对话日志创建IAM角色和策略
要启用对话日志,您必须授予 CloudWatch 日志和 Amazon S3 的写入权限。如果您为 S3 对象启用对象加密,则需要向用于加密对象的 AWS KMS 密钥授予访问权限。
您可以使用IAM控制台IAMAPI、或 AWS Command Line Interface 来创建角色和策略。这些说明使用 AWS CLI 来创建角色和策略。
注意
以下代码针对 Linux 和 macOS 编排了格式。对于 Windows,将 Linux 行继续符 (\) 替换为脱字号 (^)。
为对话日志创建IAM角色
-
在名为
LexConversationLogsAssumeRolePolicyDocument.json
的当前目录中创建一个文档,向其中添加以下代码并保存。此策略文档将 Amazon Lex V2 作为受信任实体添加到角色中。这样,Amazon Lex 可代入将日志传送到为对话日志配置的资源的角色。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lexv2.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 V2 写入 CloudWatch 日志。
创建将对话文本记录到 “ CloudWatch 日志” 的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 日志组授予写入权限的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 V2 写入存储桶的策略。
创建用于将音频记录到 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 SDK来指定用于对话日志的IAM角色时,指定对话日志角色的用户必须有权将该IAM角色传递给 Amazon Lex V2。要允许用户将角色传递给 Amazon Lex V2,您必须向该用户的IAM用户、角色或组授予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": "lexv2.amazonaws.com" }, "StringLike": { "iam:AssociatedResourceARN": "arn:aws:lex:region
:account-id
:bot:bot-name
:bot-alias
" } } } ] }