

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Kinesis Video Streams で通知を設定する
<a name="notifications"></a>

メディアフラグメントが使用可能になると、Kinesis Video Streams は Amazon Simple Notification Service (Amazon SNS) 通知を使用してお客様に通知します。

**注記**  
Amazon Kinesis Video Streams は、通信に Amazon SNS 標準トピックを使用します。FIFO トピックは現在サポートされていません。

以下のトピックでは、通知の使用を開始する方法について説明します。

**Topics**
+ [通知設定の管理](#manage-configurations)
+ [プロデューサー MKV タグについて](#producer-mkv-tags)
+ [Amazon SNS メッセージ](#sns-messages)
+ [クロスアカウント Amazon SNS 通知の発行](#cross-account-sns)

## 通知設定の管理
<a name="manage-configurations"></a>

通知設定を管理するには、 `UpdateNotificationConfiguration`と を使用します`DescribeNotificationConfiguration`。詳細については、以下を参照してください。

### UpdateNotificationConfiguration
<a name="update-notification-config"></a>

この API オペレーションを使用して、ストリームの通知情報を更新します。`UpdateNotificationConfiguration` 機能の詳細については、*Amazon Kinesis Video Streamsデベロッパーガイド*」の[UpdateNotificationConfiguration](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/API_UpdateNotificationConfiguration.html)」を参照してください。 ****

**注記**  
通知設定を更新してから通知を開始するには、少なくとも 1 分かかります。更新呼び出し`PutMedia`後に を呼び出す前に、少なくとも 1 分待ちます。

### DescribeNotificationConfiguration
<a name="describe-notification-config"></a>

この API を使用して、ストリームにアタッチされた通知設定を記述します。`DescribeNotificationConfiguration` 機能の詳細については、*Amazon Kinesis Video Streamsデベロッパーガイド*」の「[DescribeNotificationConfiguration](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/API_DescribeNotificationConfiguration.html)」を参照してください。 ****

## プロデューサー MKV タグについて
<a name="producer-mkv-tags"></a>

 Kinesis Video Streams プロデューサー SDK を使用して、SDK で API オペレーションを公開することで、関心のある特定のフラグメントにタグを付けることができます。[このセクションのコードで](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/samples/kvs_gstreamer_sample.cpp#L404)、この仕組みのサンプルを参照してください。この API を呼び出すと、SDK はフラグメントデータとともに事前定義された MKV タグのセットを追加します。Kinesis Video Streams は、これらの特別な MKV タグを認識し、タグ付けされたフラグメントの通知を開始します。

Notification MKV タグとともに提供されるフラグメントメタデータは、Amazon SNS トピックペイロードの一部として公開されます。

### プロデューサー MKV タグの構文
<a name="producer-mkv-tags-syntax"></a>

```
|+ Tags
| + Tag
|  // MANDATORY: Predefined MKV tag to trigger the notification for the fragment
|  + Simple
|   + Name: AWS_KINESISVIDEO_NOTIFICATION
|   + String
| // OPTIONAL: Key value pairs that will be sent as part of the Notification payload
|  + Simple
|   + Name: CUSTOM_KEY_1 // Max 128 bytes
|   + String:CUSTOM_VALUE_1 // Max 256 bytes
|  + Simple
|   + Name: CUSTOM_KEY_2 // Max 128 bytes
|   + String: CUSTOM_VALUE_2 // Max 256 bytes
```

### MKV タグの制限
<a name="mkv-tag-limits"></a>

次の表に、メタデータタグに関連する制限を示します。メタデータタグの制限が調整可能な場合は、アカウントマネージャーを通じて引き上げをリクエストできます。


| 制限 | 最大値 | 引き上げ可能 | 
| --- | --- | --- | 
|  オプションのメタデータキーの長さ  |  128  |  いいえ  | 
|  オプションのメタデータ値の長さ  |  256  |  いいえ  | 
|  オプションのメタデータの最大数  |  10  |  [Yes (はい)]  | 

## Amazon SNS メッセージ
<a name="sns-messages"></a>

このトピックには、Amazon SNS メッセージとトピックペイロードに関する詳細情報が含まれています。

**Topics**
+ [Amazon SNS トピックペイロード](#topic-payload)
+ [Amazon SNS メッセージを表示する](#viewing-messages)

### Amazon SNS トピックペイロード
<a name="topic-payload"></a>

前のワークフローで開始された通知は、次の例に示すように、Amazon SNS トピックペイロードを配信します。この例は、 Amazon Simple Queue Service (Amazon SQS) キューから通知データを消費した後に発生する Amazon SNS Amazon SQS メッセージです。

```
{
"Type" : "Notification",
"MessageId" : Message ID,
"TopicArn" : SNS ARN,
"Subject" : "Kinesis Video Streams Notification",
"Message" : "{\"StreamArn\":\Stream Arn,\"FragmentNumber\":\Fragment Number,\"FragmentStartProducerTimestamp\":FragmentStartProducerTimestamp,
                \"FragmentStartServerTimestamp\":FragmentStartServerTimestamp,\"NotificationType\":\"PERSISTED\",\"NotificationPayload\":{\ CUSTOM_KEY_1:\CUSTOM_VALUE_1,
                \CUSTOM_KEY_2:\CUSTOM_VALUE_2}}",
"Timestamp" : "2022-04-25T18:36:29.194Z",
"SignatureVersion" : Signature Version,
"Signature" : Signature,
"SigningCertURL" : Signing Cert URL,
"UnsubscribeURL" : Unsubscribe URL
}
```

```
Subject: "Kinesis Video Streams Notification"
Message: 
{
    "StreamArn":Stream Arn,
    "FragmentNumber":Fragment Number,
    "FragmentStartProducerTimestamp":Fragment Start Producer Timestamp,
    "FragmentStartServerTimestamp":Fragment Start Server Timestamp,
    "NotificationType":"PERSISTED",
    "NotificationPayload":{
        CUSTOM_KEY_1:CUSTOM_VALUE_1,
        CUSTOM_KEY_2:CUSTOM_VALUE_2
    }
}
```

### Amazon SNS メッセージを表示する
<a name="viewing-messages"></a>

Amazon SNS トピックから直接メッセージを読み取ることはできません。そのための API がないためです。メッセージを表示するには、SQS キューを SNS トピックにサブスクライブするか、他の [Amazon SNS でサポートされている送信先](https://docs.aws.amazon.com//sns/latest/dg/sns-event-destinations.html)を選択します。ただし、メッセージを表示するための最も効率的なオプションは、Amazon SQS を使用することです。

**Amazon SQS を使用して Amazon SNS メッセージを表示するには Amazon SQS**

1. [Amazon SQS キュー](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-create-queue.html)を作成します。

1. から AWS マネジメントコンソール、 の宛先として設定された Amazon SNS トピックを開きます`NotificationConfiguration`。

1. **サブスクリプションの作成**を選択し、最初のステップで作成した Amazon SQS キューを選択します。

1. 通知設定を有効にし、通知 MKV タグをフラグメントに追加して`PutMedia`セッションを実行します。

1. Amazon SQS コンソールで Amazon SQS キューを選択し、Amazon SQS キューの**メッセージの送受信**を選択します。

1. メッセージのポーリング。このコマンドには、`PutMedia`セッションによって生成されたすべての通知が表示されます。ポーリングの詳細については、[Amazon SQSショートポーリングとロングポーリング」を参照してください。](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)

## クロスアカウント Amazon SNS 通知の発行
<a name="cross-account-sns"></a>

別の AWS アカウントのトピックに Amazon SNS 通知を発行するには、アイデンティティベースのポリシーとリソースベースのポリシーの両方を設定する必要があります。この設定により、Kinesis Video Streams は、あるアカウントから別のアカウントの Amazon SNS トピックに通知を発行できます。

### ID ベースのポリシー設定
<a name="cross-account-identity-policy"></a>

`PutMedia` API を呼び出す IAM ロールまたはユーザーには、クロスアカウント Amazon SNS トピックに対する`sns:Publish`アクセス許可が必要です。ID ベースのポリシーに次のポリシーステートメントを追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesisvideo:PutMedia",
            "Resource": "arn:aws:kinesisvideo:us-east-1:123456789012:stream/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:123456789012:*"
            ]
        }
    ]
}
```

------

### リソースベースのポリシー設定
<a name="cross-account-resource-policy"></a>

送信先アカウントの Amazon SNS トピックには、送信元アカウントにメッセージの発行を許可するリソースベースのアクセスポリシーが必要です。Amazon SNS トピックアクセスポリシーを次のように設定します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:us-east-1:123456789012:topic-name"
    }
  ]
}
```

------

`<kvs_streams_account_id>` を Kinesis Video Streams ストリームがある AWS アカウント ID に置き換え、 を Amazon SNS トピックの ARN `<sns_topic_arn>`に置き換えます。

### 要件と考慮事項
<a name="cross-account-requirements"></a>
+ ID ベースのポリシー (ソースアカウント内) とリソースベースのポリシー (送信先アカウント内) の両方を、クロスアカウント発行が機能するように設定する必要があります。
+ `PutMedia` オペレーションに使用される IAM ロールには、ロールエイリアスで IoT 証明書を使用する場合でも、`sns:Publish`アクセス許可を含める必要があります。