【クラウド初心者向け】留守番電話3（kinesis Video StreamsデータをWAV形式に変換してS3に保存）

# 概要
- Amazon Connectには留守番電話機能は無いため個別に作成する。
- 基本の考え方等は『[[Amazon Connect]営業時間外に着信したビジネスチャンスを失わないように留守番電話機能をつけてみた](https://dev.classmethod.jp/cloud/aws/amazon-connect-voice-mail-from-kinesis-video-stream/)』をもとにしています。
- ここまで作成すると、留守番電話で受け付けた音声がWAV形式でS3に保存されます。

## 使用ユーザー
-  IAMユーザー

## 手順

### WAVデータを保存するS3の作成
1. AWSにサインインします。
    1. アカウント、ユーザー名、パスワードを入力してサインインします。  
     [アカウント内（IAM）で作成したユーザーを使用してコンソールにサインインする](https://qiita.com/echolimitless/items/129495c920217916a14f#%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E5%86%85iam%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AB%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B)

1. 『AWSマネジメントコンソール』画面の右上にある《リージョン名》をクリックし、ドロップダウンます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/02487090-54eb-e851-6d7a-674e88da61c9.png)

1. 『AWSマネジメントコンソール』画面にある「サービスを検索」にS3と入力し、検索結果から《S3》をクリックし、Amazon S3 コンソール[（https://console.aws.amazon.com/s3/）](https://console.aws.amazon.com/s3/)を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/495a24a5-5eee-529b-fec8-65d369b2e9d6.png)

1. S3のバケット一覧が表示されるので、[営業時間の判断](https://qiita.com/echolimitless/items/a8d8d9221a05c64de150)で作成したバケットをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/14cbcbfb-688a-8b26-0365-0f57b33c8022.png)

1. 先ほど作成したフォルダをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/fe4289ac-d6c1-9b60-ecd5-649372b11b89.png)

1. 《フォルダの作成》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/956065e0-ae78-de52-7fa9-553a7489bcf4.png)

1. 以下の項目を選択、入力して《保存》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d66b6ee3-9aec-eb0a-095b-884425bd5b84.png)
    1. フォルダ名：フォルダの名前
    1. 暗号化：適宜必要な暗号化設定を選択

### Lambdaでebmlを利用するための準備

1. Node.jsをインストールする
    1. 詳細は、[Windows 10へNode.jsをインストールする](https://qiita.com/echolimitless/items/83f8658cf855de04b9ce)を参照してください。

1. Windows PowerShellを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/25decd1a-b498-b4a2-88f2-8512fed311b5.png)

1. ebmlをダウンロードするため「nodejs」フォルダを作成するためコマンドを入力して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/cb1540fc-0fd0-e4ca-1bd9-d654aabebc81.png)
    1. `md nodejs`

1. nodejsフォルダに移動するためコマンドを入力して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/042d7f4a-5325-07d1-5939-e74a95d6fe80.png)
    1. `cd nodejs` 

1. ebmlをダウンロードするためコマンドを入力して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/87c0f5e2-0dc7-9637-705b-10cf3a696556.png)
    1. `npm install ebml`

1. 作成したnodejsフォルダをZip形式で圧縮します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/4820ce43-399c-9233-0eb7-4d64a59ea7ce.png)
    1. 作成したnodejsフォルダの中身ではなくフォルダ自体を圧縮します。

1. AWSにサインインします。
    1. アカウント、ユーザー名、パスワードを入力してサインインします。  
     [アカウント内（IAM）で作成したユーザーを使用してコンソールにサインインする](https://qiita.com/echolimitless/items/129495c920217916a14f#%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E5%86%85iam%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AB%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B)

1. 『AWSマネジメントコンソール』画面の右上にある《リージョン名》をクリックし、ドロップダウンます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/02487090-54eb-e851-6d7a-674e88da61c9.png)

1. 『AWSマネジメントコンソール』画面にある「サービスを検索」にLambdaと入力し、検索結果から《Lambda》をクリックし、Amazon Lambda コンソール[（https://console.aws.amazon.com/lambda/）](https://console.aws.amazon.com/lambda/)を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/32593de3-75e1-39b7-cb8c-cac6dd09b77a.png)

1. Lambdaの関数一覧画面が表示されるので左側のメニューから《Layers》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/bc2410fc-d28c-31a5-7fbe-edac23888d98.png)

1. 《レイヤーの作成》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e00453c2-13c7-5ed7-8426-c9bd6448e500.png)

1. 以下の項目を選択、入力して《作成》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/11b353be-d8bf-6f66-4e17-4689ca6386f5.png)
    1. 名前：ebml
    1. アップロード：先ほど作成したZipファイル
    1. ランタイム：Node.js 12.x 

### WAV形式に変換してS3に保存するLambdaの作成

- 以下のコードで各自で変える部分
    - region変数：バケットを作成したリージョン名
    - bucketName変数：作成したバケット名
    - putKey変数：作成したフォルダ名（終わりに『/』を入れる）

```javascript:voice-message-createwav

const AWS = require("aws-sdk");
const region = 'XXXXXXXXX';
const bucketName = 'my-baseXXXXXXXXX';
const putKey = 'my-voicemessageXXXXXXXXX/wav/';

exports.handler = async (event) => {
    console.log(JSON.stringify(event));

    const s3 = new S3(AWS, region);
 
    console.log(event.Records);
 
    for (let record of event.Records) {
        const getKey = record.s3.object.key;
        var index = getKey.lastIndexOf("/");
        var fileName = "noname";
        
        if (index >= 0) {
            fileName = getKey.substr(index + 1);
        };
        
        // S3から録音データに関する情報を取得
        const data = await s3.get(record.s3.bucket.name, getKey);
        const info = JSON.parse(data.Body);
        const streamName = info.streamARN.split('stream/')[1].split('/')[0];
        const fragmentNumber =  info.startFragmentNumber;
        
        console.log(info)
        // Kinesis Video Streamsから当該RAWデータの取得
        const raw = await getMedia(streamName, fragmentNumber);
 
        // RAWデータからWAVファイルを作成
        const wav = Converter.createWav(raw, 8000);
 
        // WAVファイルをS3に保存する
        let tagging = ''; // 付加情報をタグに追加する
        tagging += "customerEndpoint=" + info.customerEndpoint + '&';
        tagging += "systemEndpoint=" + info.systemEndpoint + '&';
        tagging += "startTimestamp=" + info.startTimestamp;
        await s3.put(bucketName, putKey + fileName + '.wav', Buffer.from(wav.buffer), tagging)
 
    }
    return {};
};
 
class S3 {
    constructor(AWS, region){
        this._s3 = new AWS.S3({region:region});
    }
    async get(bucketName, key){
        const params = {
            Bucket: bucketName,
            Key: key
        };
        return await this._s3.getObject(params).promise();
    }
 
    async put(bucketName, key, body, tagging) {
        const params = {
            Bucket: bucketName,
            Key: key,
            Body: body,
            Tagging: tagging
        };
        return  await this._s3.putObject(params).promise();
    }
 
}

const ebml = require('ebml');
 
async function getMedia(streamName, fragmentNumber) {
    // Endpointの取得
    const kinesisvideo = new AWS.KinesisVideo({region: region});
    var params = {
        APIName: "GET_MEDIA",
        StreamName: streamName
    };
    const end = await kinesisvideo.getDataEndpoint(params).promise();
 
    // RAWデータの取得
    const kinesisvideomedia = new AWS.KinesisVideoMedia({endpoint: end.DataEndpoint, region:region});
    var params = {
        StartSelector: { 
            StartSelectorType: "FRAGMENT_NUMBER",
            AfterFragmentNumber:fragmentNumber,
        },
        StreamName: streamName
    };
    const data = await kinesisvideomedia.getMedia(params).promise();
    const decoder = new ebml.Decoder();
    let chunks = [];
    decoder.on('data', chunk => {
        if(chunk[1].name == 'SimpleBlock'){
            chunks.push(chunk[1].data);
        }
    });
    decoder.write(data["Payload"]);
     
    // chunksの結合
    const margin = 4; // 各chunkの先頭4バイトを破棄する
    var sumLength = 0;
    chunks.forEach( chunk => {
        sumLength += chunk.byteLength - margin;
    })
    var sample = new Uint8Array(sumLength);
    var pos = 0;
    chunks.forEach(chunk => {
        let tmp = new Uint8Array(chunk.byteLength - margin);
        for(var e = 0; e < chunk.byteLength -  margin; e++){
            tmp[e] = chunk[e + margin];
        }
        sample.set(tmp, pos);
        pos += chunk.byteLength - margin;
 
    })
    return sample.buffer;
}

class Converter {
    // WAVファイルの生成
    static createWav(samples, sampleRate) {
        const len = samples.byteLength;
        const view = new DataView(new ArrayBuffer(44 + len));
        this._writeString(view, 0, 'RIFF');
        view.setUint32(4, 32 + len, true);
        this._writeString(view, 8, 'WAVE');
        this._writeString(view, 12, 'fmt ');
        view.setUint32(16, 16, true);
        view.setUint16(20, 1, true); // リニアPCM
        view.setUint16(22, 1, true); // モノラル
        view.setUint32(24, sampleRate, true); 
        view.setUint32(28, sampleRate * 2, true);
        view.setUint16(32, 2, true);
        view.setUint16(34, 16, true);
        this._writeString(view, 36, 'data');
        view.setUint32(40, len, true);
        let offset = 44;
        const srcView = new DataView(samples);
        for (var i = 0; i < len; i+=4, offset+=4) {
            view.setInt32(offset, srcView.getUint32(i));
        }
        return view;
    }
     
    static _writeString(view, offset, string) {
        for (var i = 0; i < string.length; i++) {
          view.setUint8(offset + i, string.charCodeAt(i));
        }
    }
}

```

1. AWSにサインインします。
    1. アカウント、ユーザー名、パスワードを入力してサインインします。  
     [アカウント内（IAM）で作成したユーザーを使用してコンソールにサインインする](https://qiita.com/echolimitless/items/129495c920217916a14f#%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E5%86%85iam%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AB%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B)

1. 『AWSマネジメントコンソール』画面の右上にある《リージョン名》をクリックし、ドロップダウンます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/02487090-54eb-e851-6d7a-674e88da61c9.png)

1. 『AWSマネジメントコンソール』画面にある「サービスを検索」にLambdaと入力し、検索結果から《Lambda》をクリックし、Amazon Lambda コンソール[（https://console.aws.amazon.com/lambda/）](https://console.aws.amazon.com/lambda/)を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/32593de3-75e1-39b7-cb8c-cac6dd09b77a.png)

1. Lambdaの関数一覧画面が表示されるので《関数の作成》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/7e37f2e4-693a-7863-29e4-abb21eae89b5.png)

1. 「関数名」を入力して《関数の作成》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/42bece10-c257-9aa9-d835-65bae3982fde.png)
    1. voice-message-createwav

1. 関数のベースが作成されました。関数コードを入力するため下にスクロールして「関数コード」を表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/7ce90434-218d-bfb8-f60e-b0249fdffac8.png)

1. 「関数コード」に初期で登録されているコードを削除して、上記voice-message-createwavをコピー＆ペーストします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/3d469e9c-1b53-cb2c-fe6a-39e9e8348e28.png)

1. 日本時間に対応させるため、画面を下にスクロールして「環境変数」に以下の値を入力し《保存》ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/6d0512d1-8514-7dfa-b3fa-3830d96813e9.png)
    1. キー：TZ、値：Asia/Tokyo

1. このLambdaは実行時間がかかるため、デフォルトの設定ではTimeOutエラー発生するためタイムアウトの設定を以下の内容に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/5ac6f044-5e3b-1215-c977-ec0c3b22a52b.png)
    1. タイムアウト：10秒

1. Lambdaにサービスへのアクセス権を設定するため下にスクロールして「実行ロール」を表示し、《XXXXXXXXロールを表示》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/b20ad56a-2d50-8483-7b97-bd893639eb41.png)
    1. Lambdaを作成する毎に自動的にLambda名の付いたロールが一つ作成されます。
    1. Lambdaで利用しているAPIのアクセス権を付与します。
        1. kinesis Video Streamsデータ取得用情報（voice-message-infomationで作成したもの）をS3から取得するための権限
            1. GetObject
        1. kinesis Video Streamsからデータを読み込むための権限
            1. GetMedia
            1. GetDataEndpoint
        1. kinesis Video StreamsデータをWAV形式に変換したものをS3に保存するための権限
            1. PutObjectTagging
            1. PutObject

1. 選択したロールの概要が表示されるのでポリシー名の「▶」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/580c9093-4866-f3ff-abe7-cf3e7534977e.png)

1. 《ポリシーの編集》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/799223d2-679e-9685-7fdf-0965b9852c90.png)

1. ビジュアルエディタが表示されるので《さらにアクセス許可を追加する》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/fb37e491-c3c1-f7e0-8173-e66b7bfce852.png)
    1. Lambdaの実行ログを記録するため、デフォルトでCloudWatch Logsの権限が付与されます。

1. 《サービスの選択》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/60468343-a854-5191-5c62-850ab4c88838.png)

1. 「サービス」にS3と入力し、検索結果から《S3》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/294fdf5a-55e2-1347-3632-f6ab152a1999.png)

1. 「アクション」に今回利用するGetObjectを入力し、《GetObject》をクリックし、選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/35934e42-8d22-774b-354a-888b4a1470c6.png)

1. 《リソース》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e07872e5-d8a5-115c-a34b-6ecc4a86538d.png)

1. 《ARNの追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e1c9f252-49c6-54cc-e6ea-e3ccf1daca70.png)

1. 以下の項目を選択、入力して《追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/ea74843a-549c-3177-0d3b-c182cd5e2041.png)
    1. Bucket name：kinesis Video Streamsデータ取得用情報が保存されているS3のバケット名＋フォルダ名（バケット名とフォルダ名やフォルダ名とフォルダ名の間は『/』で連結する）
        1. Bucket name：my-baseXXXXXXXXX/my-voicemessageXXXXXXX/infomation
    1. Object name：すべてにチェックを付ける（テキストボックスには*が入力される）

1. 《ポリシーの確認》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/53cab747-fc65-c0f2-8df1-8c3fdc17e2f0.png)

1. 内容を確認して、《変更の保存》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/c8049879-168b-1548-8b5c-cb53b617b4e3.png)

1. 再度、ポリシー名の「▶」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/580c9093-4866-f3ff-abe7-cf3e7534977e.png)

1. 《ポリシーの編集》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/799223d2-679e-9685-7fdf-0965b9852c90.png)

1. ビジュアルエディタが表示されるので《さらにアクセス許可を追加する》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d527852c-7294-fbc4-7007-e3f1a8fb488e.png)

1. 《サービスの選択》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/60468343-a854-5191-5c62-850ab4c88838.png)

1. 「サービス」にS3と入力し、検索結果から《S3》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/294fdf5a-55e2-1347-3632-f6ab152a1999.png)

1. 「アクション」に今回利用するPutObjectを入力し、《PutObject》をクリックし、選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/08468580-6aa4-e433-77f6-fa6a7318d6f0.png)

1. 「アクション」に今回利用するPutObjectTaggingを上書き入力し、《PutObjectTagging》をクリックし、選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d4e7d3fa-08e3-3a69-ff77-8195282f92cb.png)

1. 《リソース》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/15f01623-cb9a-7f10-714d-9fb9b2c2ed8c.png)

1. 《ARNの追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/6a37fb67-2740-ac0b-4377-a3429ea99929.png)

1. 以下の項目を選択、入力して《追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/ea74843a-549c-3177-0d3b-c182cd5e2041.png)
    1. Bucket name：kinesis Video StreamsデータをWAVに変換したデータを保存するS3のバケット名＋フォルダ名（バケット名とフォルダ名やフォルダ名とフォルダ名の間は『/』で連結する）
        1. Bucket name：my-baseXXXXXXXXX/my-voicemessageXXXXXXX/wav
    1. Object name：すべてにチェックを付ける（テキストボックスには*が入力される）

1. 《ポリシーの確認》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e237ece5-5f85-b8b7-44ce-5e7be99f3b5a.png)

1. 内容を確認して、《変更の保存》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/0a520c21-7eee-afd5-e6d4-588e9cf9c15c.png)

1. 再度、ポリシー名の「▶」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/580c9093-4866-f3ff-abe7-cf3e7534977e.png)

1. 《ポリシーの編集》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/799223d2-679e-9685-7fdf-0965b9852c90.png)

1. ビジュアルエディタが表示されるので《さらにアクセス許可を追加する》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/ef5fc760-3839-861a-7179-e58f47073828.png)

1. 《サービスの選択》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/60468343-a854-5191-5c62-850ab4c88838.png)

1. 「サービス」にKinesis Video Streamsと入力し、検索結果から《Kinesis Video Streams》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/64acc7fd-315b-f0e9-871c-e40f5caa3afc.png)

1. 「アクション」に今回利用するGetDAtaEndpointを入力し、《GetDAtaEndpoint》をクリックし、選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e1160218-05f7-a073-9c8c-0616cbb2cca6.png)

1. 「アクション」に今回利用するGetMediaを上書き入力し、《GetMedia》をクリックし、選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/73facfe0-7fd6-a01d-a087-f2446064e102.png)

1. 《リソース》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/12cbc446-86d5-c6b4-55f7-ad942e453cd5.png)

1. 《ARNの追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/0b790496-c9ef-bc48-ffec-a34185ab2157.png)

1. 以下の項目を選択、入力して《追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/b68b2815-5a0b-2ddd-93d6-a658f05b137b.png)
    1. Reagion：kinesis Video Streamsを作成したリージョン名
        1. Reagion : aap-northeast-1(Kinesis Video Streamsを作成したリージョン）
    1. Account：自分のアカウント名（デフォルトで入力される）
    1. Stream name：すべて
    1. Creation time：すべて

1. 《ポリシーの確認》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/8e92a90a-02d6-9283-9f59-3a388b306799.png)

1. 内容を確認して、《変更の保存》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/f21b2e13-f7ab-16c4-0287-f58c5533ee6e.png)

1. Lambdaでebmlを利用するため上にスクロールして《Layers》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/2a98fc2b-5258-59fd-6d9e-2459846d41c5.png)

1. 《レイヤーの追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/1c79e7a8-b34d-100d-a384-b206c298879e.png)

1. 以下の項目を選択して《追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/3b2c626f-1cee-b990-8826-52670c0230e3.png)
    1. 名前：ebml
    1. バージョン：先ほど作成したebmlで利用するバージョン番号 

1. kinesis Video Streamsデータ取得用情報がS3に作成された場合に動かしたいので《トリガーを追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d051acb0-9740-4528-2d21-549fc778ed7b.png)

1. 「トリガー」にS3と入力し、検索結果から《S3》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/932f5fb8-7cbc-791b-90a4-5cbf74f53922.png)

1. 以下の項目を選択して《追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d421bd81-4936-65d4-6ff2-a379c45868f0.png)
    1. バケット：kinesis Video Streamsデータ取得用情報を作成したバケット
    1. イベントタイプ：PUT
    1. プレフィックス：kinesis Video Streamsデータ取得用情報を作成したフォルダ

1. 《保存》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/eb34d3e2-7d54-c204-5d00-f3d9ccc13a14.png)

# 参考サイト
- [[Amazon Connect]営業時間外に着信したビジネスチャンスを失わないように留守番電話機能をつけてみた](https://dev.classmethod.jp/cloud/aws/amazon-connect-voice-mail-from-kinesis-video-stream/)
- [AWS Lambda Layersでnode_modulesを使う](https://xp-cloud.jp/blog/2019/01/12/4630/)
- [Kinesis ビデオストリーム API およびプロデューサーライブラリのサポート](https://docs.aws.amazon.com/ja_jp/kinesisvideostreams/latest/dg/how-it-works-kinesis-video-api-producer-sdk.html)
- [Kinesis ビデオストリーム データにアクセスする方法](https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/access-media-stream-data.html)
- [GitHub amazon-connect/amazon-connect-realtime-transcription](https://github.com/amazon-connect/amazon-connect-realtime-transcription/blob/master/src/main/java/com/amazonaws/kvstranscribestreaming/AudioUtils.java)
- [サンプリング周波数とビットレート](https://blog.goo.ne.jp/jsp_job/e/b2cbf680f1e9fbc374ecb6f0f1837237)
- [音ファイル（拡張子：WAVファイル）のデータ構造について](https://www.youfit.co.jp/archives/1418)
- [Windows 10へNode.jsをインストールする](https://qiita.com/echolimitless/items/83f8658cf855de04b9ce)

# 目次に戻る
- [【クラウド初心者向け】Amazon Connectでコールセンターを作る](https://qiita.com/echolimitless/items/e5044c73656f8ae29f93#%E7%9B%AE%E6%AC%A1)