将 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_code 和 reason 值以及疑难解答指南:
| 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_code 和 reason 值以及疑难解答指南:
| 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_prefix 的 session_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" } } }