用于对话日志的 IAM 策略 - Amazon Lex

用于对话日志的 IAM 策略

根据您选择的日志记录类型,Amazon Lex V2 需要具有使用 Amazon CloudWatch Logs 和 Amazon Simple Storage Service(S3)存储桶的权限才能存储日志。您必须创建允许 Amazon Lex V2 访问这些资源的 AWS Identity and Access Management 角色和权限。

为对话日志创建 IAM 角色和策略

要启用对话日志,您必须授予对 CloudWatch Logs 和 Amazon S3 的写入权限。如果您为 S3 对象启用对象加密,则需要授予对用于加密对象的 AWS KMS 密钥的访问权限。

您可以使用 IAM 控制台、IAM API 或 AWS Command Line Interface 来创建角色和策略。这些说明使用 AWS CLI 创建角色和策略。

注意

以下代码针对 Linux 和 macOS 编排了格式。对于 Windows,将 Linux 行继续符(\)替换为脱字号(^)。

为对话日志创建 IAM 角色
  1. 在名为 LexConversationLogsAssumeRolePolicyDocument.json 的当前目录中创建一个文档,向其中添加以下代码并保存。此策略文档将 Amazon Lex V2 作为受信任实体添加到角色中。这允许 Amazon Lex V2 代入将日志传送到为对话日志配置的资源的角色。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lexv2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 在 AWS CLI 中,运行以下命令为对话日志创建 IAM 角色。

    aws iam create-role \ --role-name role-name \ --assume-role-policy-document file://LexConversationLogsAssumeRolePolicyDocument.json

接下来,创建策略并将其附加到允许 Amazon Lex V2 写入到 CloudWatch Logs 的角色。

要创建用于将对话文本的日志记录到 CloudWatch Logs 的 IAM 策略,请执行以下操作:
  1. 在名为 LexConversationLogsCloudWatchLogsPolicy.json 的当前目录中创建一个文档,向其中添加 IAM 策略并保存。

  2. 在 AWS CLI 中,创建向 CloudWatch Logs 日志组授予写入权限的 IAM 策略。

    aws iam create-policy \ --policy-name cloudwatch-policy-name \ --policy-document file://LexConversationLogsCloudWatchLogsPolicy.json
  3. 将该策略附加到您为对话日志创建的 IAM 角色中。

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::account-id:policy/cloudwatch-policy-name \ --role-name role-name

如果要将音频日志记录到 S3 存储桶,请创建允许 Amazon Lex V2 写入存储桶的策略。

要创建用于将音频日志记录到 S3 存储桶中的 IAM 策略,请执行以下操作:
  1. 在名为 LexConversationLogsS3Policy.json 的当前目录中创建一个文档,向其中添加以下策略并保存。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::bucket-name/*" } ] }
  2. 在 AWS CLI 中,创建向 S3 存储桶授予写入权限的 IAM 策略。

    aws iam create-policy \ --policy-name s3-policy-name \ --policy-document file://LexConversationLogsS3Policy.json
  3. 将该策略附加到您为对话日志创建的角色。

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::account-id:policy/s3-policy-name \ --role-name role-name

授予传递 IAM 角色的权限

使用控制台、AWS Command Line Interface 或 AWS 开发工具包指定用于对话日志的 IAM 角色时,指定对话日志 IAM 角色的用户必须具有将角色传递给 Amazon Lex V2 的权限。要允许用户将角色传递给 Amazon Lex V2,您必须向该用户的 IAM 用户、角色或组授予 PassRole 权限。

以下策略定义要授予用户、角色或组的权限。您可以使用 iam:AssociatedResourceArniam:PassedToService 条件键来限制权限的范围。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的向用户授予将角色传递给 AWS 服务的权限以及 IAM 和 AWS STS 条件上下文键

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/role-name", "Condition": { "StringEquals": { "iam:PassedToService": "lexv2.amazonaws.com" }, "StringLike": { "iam:AssociatedResourceARN": "arn:aws:lex:region:account-id:bot:bot-name:bot-alias" } } } ] }