设置您的 Amazon Rekognition Video 和 Amazon Kinesis 资源 - Amazon Rekognition

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置您的 Amazon Rekognition Video 和 Amazon Kinesis 资源

以下过程描述了配置 Kinesis 视频流以及用于检测流视频中标签的其他资源的步骤。

先决条件

要运行此过程,必须安装 AWS SDK for Java。有关更多信息,请参阅 Amazon Rekognition 入门。您使用的 AWS 账户需要具有对 Amazon Rekognition API 的访问权限。有关更多信息,请参阅《IAM 用户指南》中的 Amazon Rekognition 定义的操作

检测视频流中的标签 (AWS SDK)
  1. 创建 Amazon S3 存储桶。记下要使用的存储桶名称和各种键前缀。稍后您将使用此信息。

  2. 创建 Amazon SNS 主题。当在视频流中首次检测到感兴趣的物体时,可使用它接收通知。记下该主题的 Amazon 资源名称 (ARN)。有关更多信息,请参阅《Amazon SNS 开发人员指南》中的创建 Amazon SNS 主题

  3. 为端点订阅 Amazon SNS 主题。有关更多信息,请参阅《Amazon SNS 开发人员指南》中的订阅 Amazon SNS 主题

  4. 创建 Kinesis 视频流并记下流的 Amazon 资源名称 (ARN)。

  5. 如果您还没有这样做,请创建一个 IAM 服务角色,让 Amazon Rekognition Video 可以访问您的 Kinesis 视频流、S3 存储桶和 Amazon SNS 主题。有关更多信息,请参阅 为标签检测流处理器提供访问权限

然后,您可以使用所选的流处理器名称创建标签检测流处理器启动流处理器

注意

只有在确认可以将媒体摄取到 Kinesis 视频流之后,才启动流处理器。

摄像机方向和设置

Amazon Rekognition Video 流视频事件可以支持 Kinesis Video Streams 支持的所有摄像机。为获得最佳效果,我们建议将摄像机放置在距离地面 0 到 45 度之间。摄像机必须处于标准的直立位置。例如,如果画面中有一个人,这个人的方向应该是垂直的,人的头部在画面中应该高于脚部。

为标签检测流处理器提供访问权限

您可以使用 AWS Identity and Access Management (IAM) 服务角色向 Amazon Rekognition Video 授予 Kinesis 视频流的读取权限。为此,请使用 IAM 角色授予 Amazon Rekognition Video 访问您的 Amazon S3 存储桶和 Amazon SNS 主题的权限。

您可以创建权限策略,允许 Amazon Rekognition Video 访问现有 Amazon SNS 主题、Amazon S3 存储桶和 Kinesis 视频流。有关使用 AWS CLI 的分步过程步骤,请参阅设置标签检测 IAM 角色的 AWS CLI 命令

授予 Amazon Rekognition Video 访问标签检测资源的权限
  1. 使用 IAM JSON 策略编辑器创建新的权限策略,然后使用以下策略。将 kvs-stream-name替换为 Kinesis 视频流的名称、将 topicarn 替换为您要使用的 Amazon SNS 主题的 Amazon 资源名称 (ARN),以及将bucket-name替换为 Amazon S3 存储桶的名称。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "KinesisVideoPermissions", "Effect": "Allow", "Action": [ "kinesisvideo:GetDataEndpoint", "kinesisvideo:GetMedia" ], "Resource": [ "arn:aws:kinesisvideo:::stream/kvs-stream-name/*" ] }, { "Sid": "SNSPermissions", "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:::sns-topic-name" ] }, { "Sid": "S3Permissions", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name/*" ] } ] }
  2. 创建 IAM 服务角色,或者更新现有 IAM 服务角色。使用以下信息创建 IAM 服务角色:

    1. 对于服务名称,选择 Rekognition

    2. 对于服务角色使用案例,选择 Rekognition

    3. 附加您在步骤 1 中创建的权限策略。

  3. 记下服务角色的 ARN。在执行视频分析操作之前,您需要使用它来创建流处理器。

  4. (可选)如果您使用自己的 AWS KMS 密钥对发送到 S3 存储桶的数据进行加密,则必须添加带有 IAM 角色的以下语句。(这是您为密钥政策创建的 IAM 角色,它与要使用的客户托管密钥相对应。)

    { "Sid": "Allow use of the key by label detection Role", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:::role/REPLACE_WITH_LABEL_DETECTION_ROLE_CREATED" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*" }

设置标签检测 IAM 角色的 AWS CLI 命令

如果您尚未完成,请使用您的凭证设置和配置 AWS CLI。

将以下命令输入到 AWS CLI 以设置具有标签检测所需权限的 IAM 角色。

  1. export IAM_ROLE_NAME=labels-test-role

  2. export AWS_REGION=us-east-1

  3. 创建包含以下内容的信任关系策略文件(例如 assume-role-rekognition.json)。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rekognition.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  4. aws iam create-role --role-name $IAM_ROLE_NAME --assume-role-policy-document file://path-to-assume-role-rekognition.json --region $AWS_REGION

  5. aws iam attach-role-policy --role-name $IAM_ROLE_NAME --policy-arn "arn:aws:iam::aws:policy/service-role/AmazonRekognitionServiceRole" --region $AWS_REGION

  6. 如果您想要接收通知的 SNS 主题名称不以“AmazonRekognition”前缀开头,请添加以下策略:

    aws iam attach-role-policy --role-name $IAM_ROLE_NAME --policy-arn "arn:aws:iam::aws:policy/AmazonSNSFullAccess" --region $AWS_REGION

  7. 如果您使用自己的 AWS KMS 密钥加密发送到 Amazon S3 存储桶的数据,请更新要使用的客户托管密钥的密钥政策。

    1. 创建一个包含以下内容的文件 kms_key_policy.json:

      { "Sid": "Allow use of the key by label detection Role", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:::role/REPLACE_WITH_IAM_ROLE_NAME_CREATED" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*" }
    2. export KMS_KEY_ID=labels-kms-key-id. 将 KMS_KEY_ID 替换为您创建的 KMS 密钥 ID。

    3. aws kms put-key-policy --policy-name default --key-id $KMS_KEY_ID --policy file://path-to-kms-key-policy.json