【クラウド初心者向け】留守番電話4（録音した留守番電話を聴く）

# 概要
- Amazon Connectには留守番電話機能は無いため個別に作成する。
- 基本の考え方等は『[[Amazon Connect]営業時間外に着信したビジネスチャンスを失わないように留守番電話機能をつけてみた](https://dev.classmethod.jp/cloud/aws/amazon-connect-voice-mail-from-kinesis-video-stream/)』をもとにしています。
- S3でWebサイトをホスティングします。そこに留守番電話を聴くためのHTMLを配置します。
- Cognito（コグニート）を利用してkinesis Video StreamsデータをWAVに変換したデータが保存されているバケットへアクセス権を付与します。
- セキュリティには配慮していませんので、留守番電話を聴く画面にCoginito（コグニート）のキーを貼り付けて全世界に公開しています。

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

## 手順


### Cognito（コグニート）による権限設定

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マネジメントコンソール』画面にある「サービスを検索」にCognitoと入力し、検索結果から《Cognito》をクリックし、Amazon Cognito コンソール[（https://console.aws.amazon.com/cognito/）](https://console.aws.amazon.com/cognito/)を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/64c21bab-1d98-eea6-f68b-96514985b724.png)

1. Cognitoの画面が表示されるので《IDプールの管理》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/2d028e2d-b956-1548-2090-e88c999bcc3e.png)

1. 以下の項目を選択、入力して《プールの作成》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/7798602e-99f1-62d8-5f0c-907754b3e1c6.png)
    1. IDプール名：適当な名前を入力します。
    1. 認証されていないIDに対してアクセスを有効にする：選択します。

1. IAMロール作成確認画面が表示されるので《詳細を表示》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/8217efef-13df-718d-0882-3324b006524a.png)

1. 未承認のロールを使用しますので、ロール名をメモしてから《許可》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/68e26dfc-9c1d-ac53-b05b-ae1ac5782fe0.png)

1. サンプルコードの画面が表示されるので、「プラットフォーム」からJavaScriptを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/20cb5e98-e4d0-8898-21b1-2b5b1d9e9225.png)

1. AWS認証情報の取得に表示されている「region」と「IdentityPoolId」をメモします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/74d0f455-3e46-d553-1416-861020788cec.png)

1. 作成したロールに必要な権限を付与するため、『AWSマネジメントコンソール』画面にある「サービスを検索」にIAMと入力し、検索結果から《IAM》をクリックし、IAM コンソール[（https://console.aws.amazon.com/iam/）](https://console.aws.amazon.com/iam/)を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/18a28814-fa36-310d-913b-bd7cf06e7f37.png)

1. 『IAMコンソール』画面のメニューから《ロール》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/006124b9-5d6b-0725-381d-4ee1a0d167f3.png)

1. ロール一覧から先ほど作成したロールをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/ba2353c6-0cc7-b9f0-3e4e-2f0495139e46.png)
    1. WAV変換後のデータをS3から取得するための権限
        1. Bucketに設定する権限
            1. ListBucket
            1. GetBucketTagging
        1. フォルダに設定する権限
            1. GetObject
            1. GetObjectTagging

1. 選択したロールの概要が表示されるのでポリシー名の「▶」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/33e59c18-00eb-0de0-6afc-4cef21a0e8a6.png)

1. 《ポリシーの編集》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/16f6b386-ee39-0098-59d3-9c1a60db658f.png)

1. ビジュアルエディタが表示されるので、登録されている権限の《削除》をクリックします。（今回は利用しないため）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/704dbbe3-d3b0-c3c8-80ff-4434a5e047c2.png)

1. 《さらにアクセス許可を追加する》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/119a87b7-e292-3de9-ad52-ec6884c813f5.png)

1. 《サービスの選択》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/533bf377-fbcd-f318-5012-0534e4ede6ba.png)

1. 「サービス」にS3と入力し、検索結果から《S3》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/fe12c71d-1c33-e33b-4dda-9d716af3fa2f.png)

1. 「アクション」に今回利用するListBucketを入力し、《ListBucket》をクリックし、選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/70317b3d-488c-82f2-3d1f-845da965d868.png)

1. 「アクション」に今回利用するGetBucketTaggingを上書き入力し、《GetBucketTagging》をクリックし、選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/447dce26-b557-70f3-c15f-edd3932f959d.png)

1. 《リソース》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/ba4f876e-28a9-4167-a4e4-a8ac23433318.png)

1. 《ARNの追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d45b0f8b-4818-46c5-28ea-4d7d2d7177b2.png)

1. 以下の項目を選択、入力して《追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/9ef17ce1-b5e1-db55-cd64-e8af21687641.png)
    1. Bucket name：kinesis Video StreamsデータをWAVに変換したデータが保存されているS3のバケット名
        1. Bucket name：my-baseXXXXXXXXX

1. 《さらにアクセス許可を追加する》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/87391dd5-6576-a46d-9d3d-b885dd68088a.png)

1. 《サービスの選択》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e86b58df-08a6-6ce2-868f-2485d9f923a3.png)

1. 「サービス」にS3と入力し、検索結果から《S3》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/6a375ec2-ad79-453d-6030-11a6714348db.png)

1. 「アクション」に今回利用するGetObjectを入力し、《GetObject》をクリックし、選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/a7fd77d0-3481-a5b9-d21a-dc37914080db.png)

1. 「アクション」に今回利用するGetObjectTaggingを上書き入力し、《GetObjectTagging》をクリックし、選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d6c412da-1eac-4e04-4713-eb1364ea229e.png)

1. 《リソース》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/3856b74a-6171-f96d-9574-85166ea0b415.png)

1. 《ARNの追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/aa376633-f83f-1a84-eedd-5b7fa85dd41c.png)

1. 以下の項目を選択、入力して《追加》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/7e97289d-68a4-11ea-80d7-28d390a1f9a3.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/7446ed19-da3d-becc-74bd-c6730b6e5198.png)

1. 内容を確認して、《変更の保存》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/0e7b74dc-8b2f-b7b4-9607-5dff04cb8ef7.png)

### 留守番電話を聴く画面の作成

- 以下のコードで各自で変える部分
    - AWS.config.region変数、AWS.config.credentials変数：先ほどメモした、CognitoのreagionとIdentityPoolIdを設定する
    - bucketName変数、prefix変数に指定する値：kinesis Video StreamsデータをWAVに変換したデータが保存されているS3のバケット名とフォルダ名

```html:index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Voice Mail Viewer</title>
    <script src="https://sdk.amazonaws.com/js/aws-sdk-2.283.1.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <!-- <link rel="stylesheet" type="text/css" href="style.css"> -->
  </head>
  <body>
    <h1 id="time">留守番電話</h1>
     
    <audio id="sound" preload="auto">
    </audio>
 
    <table id="contents"/ border=1>
    <script>
        AWS.config.region = 'XXXXXXXXX'; 
        AWS.config.credentials = new AWS.CognitoIdentityCredentials({
            IdentityPoolId: 'XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        });
        const bucketName = 'my-baseXXXXXXXXX';
        const prefix = 'my-voicemessageXXXXXXXXX/wav/'
        const s3 = new AWS.S3();
 
        async function refresh(){
            const list = await s3.listObjects({Bucket: bucketName, Prefix: prefix}).promise();
            const keys = list.Contents.map(v => v.Key).filter( v => {
                if (v.indexOf('.wav') >= 0) {
                    return true;
                }
            });

            let items = await Promise.all(keys.map(async (key)=>{
                 
                // S3上のオブジェクトのタグ情報を取得する
                const tagging = await s3.getObjectTagging({Bucket: bucketName, Key: key }).promise();
                const customerEndpoint = tagging.TagSet.find((v => { return v.Key == "customerEndpoint"}))["Value"];
                const startTimestamp = Number(tagging.TagSet.find((v => { return v.Key == "startTimestamp"}))["Value"]);
 
                const item = {
                    customerEndpoint: customerEndpoint,
                    startTimestamp: dateString(new Date(startTimestamp)), // yyyy/mm/dd hh:mm
                    key: key
                };
                return item;
            }));
            // 録音時間でソートする
            items = items.sort((a, b) => b.startTimestamp - a.startTimestamp);
 
            const table = $("#contents");
            const tr = table.append($("<tr></tr>"))
            tr.append("<th>着信時間</th>")
            tr.append("<th>発信番号</th>")
            tr.append("<th></th>")
 
            // 一覧の表示
            items.forEach( item => {
                const customerEndpoint = $("<td></td>").text(item.customerEndpoint.replace("81","0"));
                const startTimestamp = $("<td></td>").text(item.startTimestamp);
                const listenButton = $("<td><img src=listen.png></td>").click(()=> {listen(listenButton,item.key)});
                const tr = table.append($("<tr></tr>"))
                tr.append(startTimestamp)
                tr.append(customerEndpoint)
                tr.append(listenButton)
            });
        }
 
        refresh();
 
        // スピーカーのアイコンをクリックした際にWAVファイルを取得する
        async function listen(element, key) {
            var params = {
                Bucket: bucketName,
                Key: key
            };
            const data = await s3.getObject(params).promise();
            var blob = new Blob([data.Body], {type : 'audio/wav'});
            element.html('<audio src=' + URL.createObjectURL(blob) + ' controls></audio>');
        }
 
        function dateString(date) {
            const year = date.getFullYear();
            const mon = (date.getMonth() + 1);
            const day = date.getDate();
            const hour = date.getHours();
            const min = date.getMinutes();
 
            const space = (n) => {
                return ('0' + (n)).slice(-2)
            }
 
            let result = year + '/';
            result += space(mon) + '/';
            result += space(day) + ' ';
            result += space(hour) + ':';
            result += space(min);
            return result;
        }
 
    </script>
</body>
</html>

```

1. 留守番電話一覧画面で利用するアイコンをダウンロードするので[ICOON MONO](https://icooon-mono.com/)を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e013f2cb-ed26-6311-ce5b-7a56e76971c1.png)

1. アイコンを検索するので検索欄に以下の文言を入力して検索します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d3887fa4-06ad-4035-2a4b-9c5a512d844d.png)
    1. 検索文言：スピーカー

1. 《可愛いスピーカーアイコン》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/4289670e-25a9-915e-c3c0-a382362dc941.png)

1. PNG形式のアイコンをダウンロードするので、サイズから《32px》を選択し、《PNG》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e85c9397-b663-e254-9127-98bf0c34e3eb.png)

1. ファイル名を「listen.png」に変更して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d7b41409-2f32-f5b4-7562-bf3327e3de5b.png)

1. アイコンを保存したフォルダにテキストファイルを作成し、開いて上記のindex.htmlをコピー＆ペーストします。

1. 保存してテキストファイルを閉じます。

1. テキストファイルの名前を「index.html」に変更します。

### 留守番電話を聴く画面をホスティングするS3を作成

- my-hostingXXXXXXXXX：作成したバケット名に変更してください。

```json:バケットポリシー
{
   "Version":"2012-10-17",
   "Statement":[{
 	"Sid":"PublicReadForGetBucketObjects",
         "Effect":"Allow",
 	  "Principal": "*",
       "Action":["s3:GetObject"],
       "Resource":["arn:aws:s3:::my-hostingXXXXXXXXX/*"
       ]
     }
   ]
 }
```
- my-hostingXXXXXXXXX：作成したバケット名に変更してください。
- reagionXXXXXX：作成したバケットのリージョン名に変更してください。

```xml:CORS構成
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>http://my-hostingXXXXXXXXX.s3-website-reagionXXXXXX.amazonaws.com</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
    <AllowedHeader>X-Amz-Content-Sha256</AllowedHeader>
    <AllowedHeader>X-Amz-Date</AllowedHeader>
    <AllowedHeader>x-amz-security-token</AllowedHeader>
    <AllowedHeader>X-Amz-User-Agent</AllowedHeader>
</CORSRule>
</CORSConfiguration>
```

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のバケット一覧が表示されるので、《バケットを作成する》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/4287ad46-679b-dce2-5f2d-5ff7cc7d86b3.png)

1. 「バケット作成」画面が表示されるので、以下の項目を選択、入力して《次へ》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/01d1922f-7a84-7fdb-c25d-eca94e655daf.png)
    1. バケット名：世界中で一意になる名前を付ける
        1. my-hostingXXXXXXXXX
    1. リージョン：作成するを選択します。

1. 適宜必要な設定を行い《次へ》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/a0559c02-c49c-b9e4-bd62-2509e9a58802.png)
    1. 今回はデフォルトのまま

1. 適宜必要な設定を行い《次へ》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/3a717020-064d-ce62-e5b1-13733b2dd597.png)
    1. 今回はデフォルトのまま

1. 設定内容を確認して《バケットを作成》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/cc27c858-8729-8ef0-90ae-c508c872609e.png)

1. S3のバケット一覧が表示されるので、作成したバケットをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/b8f86f9f-b1ca-82e0-8f64-c5ee888ac81b.png)

1. 《アップロード》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/9faf4859-a4ce-35e0-8333-38f6ac35f157.png)

1. 「アップロード」画面が表示されるので、ドラッグ＆ドロップまたは、《ファイルを追加》ボタンを押してindex.htmlとlisten.pngをアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/21310ed9-56d1-a7e1-c29f-ea0378fcfd79.png)

1. 指定したファイルを確認して、《次へ》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d7120c4d-412d-d0da-9d37-9df741428a97.png)

1. アクセス許可の設定を確認して、《次へ》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/5c6599ee-f488-098d-c44b-f747cf36a8e1.png)
    1. 今回はデフォルトのまま

1. ストレージクラスの設定を確認して、《次へ》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/10953f53-abac-a917-b070-cffaffb8140b.png)
    1. 今回はデフォルトのまま

1. 設定を確認して、《アップロード》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/cba69c26-e9ab-fca3-7f3d-3a8678bed84b.png)

1. ファイルがアップロードされました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/f4c3b32e-1751-c2ca-087a-39a7af755743.png)

1. S3にホスティングの設定を行うため《プロパティ》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/7a6dd7d5-f0d7-52cc-1e08-f3798c83e27e.png)

1. 《Static website hosting》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e7e11bfe-9c1f-809b-34e7-51de37323777.png)

1. 以下の項目を選択、入力して《保存》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e796c93a-30c0-7f9d-605d-5a4bbb3529a0.png)
    1. このバケットを使用してウェブサイトをホストする：選択します。
    1. インデックスドキュメント：index.html

1. このバケットをインターネットに公開するように設定するので《アクセス権限》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/1fd189cd-0218-ab75-2b2e-bdeaf7f340b6.png)

1. ブロックパブリックアクセスの設定を変更するので《編集》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/8fb56fbf-1ece-9ddf-548c-fec97708cda3.png)

1. 以下の項目を選択して《保存》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/7ad14615-026f-255d-0189-fdcb71c9062d.png)
    1. パブリックアクセスをすべてブロック

1. 確認画面が表示されるので、以下の項目を入力して《確認》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/5c98eb61-6c0b-6632-86b1-eabcb56ea7b1.png)
    1. 確認フィールド：確認

1. 《バケットポリシー》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/6e73d9bf-d221-ca37-1ece-437760381a88.png)

1. バケットポリシーエディターに上記のバケットポリシーを貼り付けて《保存》をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/e243c929-f497-15d3-1b9a-5b1974e2f85a.png)

1. 保存すると「パブリック」という表示がでます。これでインターネット上に公開されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/5f706e26-d9d7-1216-d4e7-5231341d2cb2.png)

1. kinesis Video StreamsデータをWAVに変換したデータが保存されているS3のバケットを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/8f997b42-4268-f285-cf62-cfcfcaa7253c.png)

1. HTMLが保存されているバケットからJavaScriptでデータを取得できるようにするため《アクセス権限》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/7692ce8a-6f89-114e-54cf-850a1d0b5b2c.png)

1. 《CORSの設定》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/c1e33d38-d567-4045-8ee7-1a145523cc92.png)

1. CORS 構成エディターに上記のCORS構成を貼り付けて《保存》をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/97763cfc-96c2-6aa3-c034-92478f735f50.png)

1. 留守番電話画面の動作を確認するため、パブリック設定にしたバケットを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/a5f19e65-3274-121a-0483-139745857afa.png)

1. 《プロパティ》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/d40099f1-6df1-4512-b603-8b19ff60b68c.png)

1. 《Static website hosting》をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/7ce8b24a-b2c1-8780-e628-29ce478a6539.png)

1. エンドポイントに表示されているURLをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/8e0cde41-d4f1-a960-d757-a4f3b610dd96.png)

1. 留守番電話画面が表示されます。リストから聞きたいものを選択して《スピーカー》アイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/cf660e67-2323-6a60-7365-e39bc8859220.png)

# 参考サイト
- [[Amazon Connect]営業時間外に着信したビジネスチャンスを失わないように留守番電話機能をつけてみた](https://dev.classmethod.jp/cloud/aws/amazon-connect-voice-mail-from-kinesis-video-stream/)
- [例: 静的ウェブサイトをセットアップする](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/HostingWebsiteOnS3Setup.html)
- [CloudFrontとS3のCORS対応](https://qiita.com/b_a_a_d_o/items/2fa94f5e929b396a24ad)
- [CORS(Cross-Origin Resource Sharing)について整理してみた](https://dev.classmethod.jp/etc/about-cors/)

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