将 Amazon EventBridge 与 IVS 实时直播功能结合使用 - Amazon IVS

将 Amazon EventBridge 与 IVS 实时直播功能结合使用

您可以使用 Amazon EventBridge 来监控您的 Amazon Interactive Video Service (IVS) 流。

Amazon IVS 将有关流状态的更改事件发送到 Amazon EventBridge。传递的所有事件都有效。但是,事件将尽最大努力发出,这意味着并不能保证:

  • 传送事件:会发生指定的事件(例如,参与者发布的事件),但 Amazon IVS 可能不会向 EventBridge 发送相应的事件。Amazon IVS 尝试在放弃之前传递几个小时的事件。

  • 事件将在指定的时间范围内传递 – 您可能会收到几个小时之前的事件。

  • 按顺序传送事件:事件可能无序,尤其是在短时间内相互发送的情况下。例如,您可以在参与者发布之前看到参与者未发布的事件。

尽管事件丢失、延迟或无序的情况很少,但如果您编写了取决于通知事件的顺序或存在的关键业务程序,则应处理这些可能性。

您可以为以下任何事件创建 EventBridge 规则。

事件类型 活动 发送时间:
IVS 合成状态更改 目标故障 尝试输出到目标失败(例如,找不到 S3 存储桶、拒绝访问 S3 存储桶或者 RTMP 目标已经存在数据流)。
IVS 合成状态更改 目的地开始 输出到目标成功启动。
IVS 合成状态更改 目标结束 输出到目标已完成。
IVS 合成状态更改 目标重新连接 向目标的输出中断,正在尝试重新连接。
IVS 合成状态更改 会话开始 合成会话已创建。合成进程管道初始化成功时触发此事件。此时,合成管道已成功订阅暂存区,正在接收媒体并能够合成视频。
IVS 合成状态更改 会话结束 合成会话已完成。
IVS 合成状态更改 会话失败 由于暂存区资源不可用或任何其他内部错误,合成管道无法初始化。
IVS 参与者录制状态更改 开始录制 发布者已连接到暂存区并正在录制到 S3。
IVS 参与者录制状态更改 结束录制 发布者已断开与暂存区的连接,所有剩余文件均已写入 S3。
IVS 参与者录制状态更改 录制启动失败 发布者连接到暂存区,但由于错误(如未找到 S3 存储桶或无法访问)而无法开始录制。未录制此发布者的实时直播
IVS 参与者录制状态更改 录制结束失败 由于录制过程中遇到错误(如找不到或无法访问 S3 存储桶),录制以失败告终。某些对象可能仍会写入已配置的存储位置。
IVS 暂存区更新 参与者已发布 参与者开始发布到暂存区。
IVS 暂存区更新 参与者已取消发布 参与者已停止发布到暂存区。
IVS 暂存区更新 参与者发布错误 参与者尝试发布到暂存区失败。
IVS 暂存区更新 参与者复制开始 参与者复制开始。
IVS 暂存区更新 参与者复制结束 参与者复制结束。如果发布者已停止发布,或发布者已停止发布且重新连接窗口已过期,则复制可能会因为 StopParticipantReplication API 操作而结束。
IVS 暂存区更新 令牌已交换 某个现有的参与者令牌已交换为新令牌。这种交换会导致升级或降级令牌功能和/或更新令牌属性。

为 Amazon IVS 创建 Amazon EventBridge 规则

您可以创建针对 Amazon IVS 发出的事件进行触发的规则。请按照 Amazon EventBridge User Guide 中的 Create a rule in Amazon EventBridge 步骤操作。选择服务时,选择 Interactive Video Service(IVS)

示例:合成状态更改

目标失败:当尝试输出到目标失败(例如,找不到 S3 存储桶、拒绝访问 S3 存储桶或者 RTMP 目标已存在数据流)时,会发送此事件。

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Destination Failure", "stage_arn": "<stage-arn>", "id": "<Destination-id>", "error_code": "e.g., AccessDeniedException", "reason": "e.g., Access denied to S3 bucket. Please verify your bucket policy" } }

下表列出了目标故障事件 error_code 及其 reason 值以及疑难解答指南:

error_code reason 故障排除指导
ResourceNotFoundException 未找到 S3 存储桶 请确认您的存储桶存在。 验证您的 S3 存储桶是否存在,并位于正确的区域。
AccessDeniedException 拒绝访问 S3 存储桶。请验证您的存储桶策略。 验证 S3 存储桶策略是否授予 IVS 服务必要的权限。
ConflictException 数据流已经存在 验证同一 RTMP 目标频道上没有其他广播处于活动状态。
InternalServerException 内部服务错误 重试该操作。如果此问题仍然存在,请联系 AWS Support。

目标启动:成功启动向目标的输出时发送此事件。

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Destination Start", "stage_arn": "<stage-arn>", "id": "<destination-id>", } }

目标结束:向目标输出完成发送此事件。

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Destination End", "stage_arn": "<stage-arn>", "id": "<Destination-id>", } }

目标重新连接:向目标的输出中断并且正在尝试重新连接时,发送此事件。

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Destination Reconnecting", "stage_arn": "<stage-arn>", "id": "<Destination-id>", } }

会话开始:创建合成会话时发送此事件。合成进程管道初始化成功时触发此事件。此时,合成管道已成功订阅暂存区,正在接收媒体并能够合成视频。

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Session Start", "stage_arn": "<stage-arn>" } }

会话结束:合成会话完成并且删除了所有资源时,发送此事件。

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Session End", "stage_arn": "<stage-arn>" } }

会话失败:由于暂存区被删除、一个或多个输出失败或任何其他内部错误导致合成管道失败时,将发送此事件。

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Session Failure", "stage_arn": "<stage-arn>", "error_code": "e.g., DestinationFailure", "reason": "e.g. One or more outputs failed" } }

下表列出了会话失败事件 error_codereason 值以及疑难解答指南:

error_code reason 故障排除指导
StageDeleted 暂存区已删除 在开始合成之前,请验证暂存区是否存在。
DestinationFailure 一个或多个输出。 检查各个目标错误。
InternalServerException 内部服务错误 重试该操作。如果此问题仍然存在,请联系 AWS Support。

示例:单个参与者录制状态更改

录制开始:当发布者已连接到暂存区并正在录制到 S3 时,将发送此事件。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Participant Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2024-03-13T22:09:58Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Recording Start", "participant_id": "xYz1c2d3e4f", "recording_s3_bucket_name": "bucket-name", "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z" } }

录制结束:当发布者已断开与暂存区的连接且所有剩余文件均已写入 S3 时,将发送此事件。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Participant Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2024-03-13T22:19:04Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Recording End", "participant_id": "xYz1c2d3e4f", "recording_s3_bucket_name": "bucket-name", "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z", "recording_duration_ms": 547327 } }

录制开始失败:当发布者连接到暂存区,但由于错误(例如,如果找不到或无法访问 S3 存储桶)而无法开始录制时,将发送此事件。发布者的实时直播未录制。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Participant Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2024-03-13T22:09:58Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Recording Start Failure", "participant_id": "xYz1c2d3e4f", "recording_s3_bucket_name": "bucket-name", "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z", "error_code": "e.g., AccessDeniedException", "reason": "e.g., Access denied to S3 bucket. Please verify your bucket policy" } }

下表列出了录制开始失败事件 error_codereason 值以及疑难解答指南:

error_code reason 故障排除指导
ResourceNotFoundException 未找到 S3 存储桶 请验证您的存储桶是否存在。 验证您的 S3 存储桶是否存在,并位于正确的区域。
AccessDeniedException 拒绝访问 S3 存储桶。请验证您的存储桶策略。 验证 S3 存储桶策略是否授予 IVS 服务必要的权限。
ValidationException 不支持录制视频编解码器 确认发布者使用的是受支持的视频编解码器。
InternalServerException 内部服务错误 重试该操作。如果此问题仍然存在,请联系 AWS Support。

录制结束失败:当由于录制过程中遇到错误(例如,如果找不到或无法访问 S3 存储桶)而导致录制失败时,将发送此事件。某些对象可能仍会写入已配置的存储位置。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Participant Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2024-03-13T22:19:04Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Recording End Failure", "participant_id": "xYz1c2d3e4f", "recording_s3_bucket_name": "bucket-name", "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z", "recording_duration_ms": 547327, "error_code": "e.g., AccessDeniedException", "reason": "e.g., Access denied to S3 bucket. Please verify your bucket policy" } }

下表列出了录制结束故障事件error_code及其reason值以及疑难解答指南:

error_code reason 故障排除指导
ResourceNotFoundException 未找到 S3 存储桶 请确认您的存储桶存在。 验证您的 S3 存储桶是否存在,并位于正确的区域。
AccessDeniedException 拒绝访问 S3 存储桶。请验证您的存储桶策略。 验证 S3 存储桶策略是否授予 IVS 服务必要的权限。
InternalServerException 内部服务错误 重试该操作。如果此问题仍然存在,请联系 AWS Support。

请注意,如果启用了单个参与者录制合并,并且暂存区发布者断开了与暂存区的连接,然后重新连接,则 IVS 会尝试录制到与前一个会话相同的 S3 前缀。因此,在上面的示例中,recording_s3_key_prefixsession_id 分量可能与 detail 中的 session_id 字段具有不同的值。请参阅合并片段化的单个参与者录制

示例:暂存区更新

暂存区更新事件包括事件名称(用于对事件进行分类)和有关该事件的元数据。元数据包括触发事件的参与者 ID、相关暂存区和会话 ID 以及用户 ID。

参与者已发布:在参与者开始发布到暂存区时发送该事件。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Stage Update", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" ], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Participant Published", "event_time": "2025-11-18T16:40:32Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "replica": true, "source_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij", "source_session_id": "st-sdfdfdfgdfgh" } }

参与者已取消发布:在参与者已停止发布到暂存区时发送该事件。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Stage Update", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" ], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Participant Unpublished", "event_time": "2025-11-18T16:40:32Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "replica": true, "source_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij", "source_session_id": "st-sdfdfdfgdfgh" } }

参与者发布错误:当参与者尝试发布到暂存区失败时,将发送此事件。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Stage Update", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" ], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Participant Publish Error", "event_time": "2024-08-13T14:38:17.089061676Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "error_code": "BITRATE_EXCEEDED", "replica": true, "source_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij", "source_session_id": "st-sdfdfdfgdfgh" } }

参与者复制开始:参与者复制开始时发送该事件。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Stage Update", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" ], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Participant Replication Start", "event_time": "2025-11-18T16:40:32Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "destination_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/XYZdef1G2hij", "destination_session_id": "aBC1c2d3e4f" } }

参与者复制结束:参与者复制结束时发送该事件。如果发布者已停止发布,或发布者已停止发布且重新连接窗口已过期,则复制可能会因为 StopParticipantReplication API 操作而结束。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Stage Update", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" ], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Participant Replication End", "event_time": "2025-11-18T16:40:32Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "destination_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/XYZdef1G2hij", "destination_session_id": "aBC1c2d3e4f" } }

令牌已交换:现有的参与者令牌交换为新令牌,导致升级或降级令牌功能和/或更新令牌属性时会发送此事件。

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Stage Update", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2" "resources": [ "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" ], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Token Exchanged", "event_time": "2025-11-12T20:54:53Z", "user_id": "UpdatedUser", "participant_id": "xYz1c2d3e4f", "previous_token": { "capabilities": ["SUBSCRIBE"], "attributes": { "role": "viewer" }, "user_id": "InitialUser", "expiration_time": "2025-11-12T21:54:52Z" }, "new_token": { "capabilities": ["SUBSCRIBE", "PUBLISH"], "attributes": { "role": "moderator" }, "user_id": "UpdatedUser", "expiration_time": "2025-11-12T22:54:52Z" } } }