Help us understand the problem. What is going on with this article?

【クラウド初心者向け】留守番電話1(kinesis Video Streamsデータ取得用情報の作成環境の準備)

概要

使用ユーザー

  • IAMユーザー

手順

kinesis Video Streamsデータ取得用情報を保存するS3の作成

  1. AWSにサインインします。

    1. アカウント、ユーザー名、パスワードを入力してサインインします。
      アカウント内(IAM)で作成したユーザーを使用してコンソールにサインインする
  2. 『AWSマネジメントコンソール』画面の右上にある《リージョン名》をクリックし、ドロップダウンます。
    image.png

  3. 『AWSマネジメントコンソール』画面にある「サービスを検索」にS3と入力し、検索結果から《S3》をクリックし、Amazon S3 コンソール(https://console.aws.amazon.com/s3/)を開きます。
    image.png

  4. S3のバケット一覧が表示されるので、営業時間の判断で作成したバケットをクリックします。
    image.png

  5. 《フォルダの作成》をクリックします。
    image.png

  6. 以下の項目を選択、入力して《保存》をクリックします。
    image.png

    1. フォルダ名:フォルダの名前
    2. 暗号化:適宜必要な暗号化設定を選択
  7. 作成したフォルダをクリックします。
    image.png

  8. 《フォルダの作成》をクリックします。
    image.png

  9. 以下の項目を選択、入力して《保存》をクリックします。
    image.png

    1. フォルダ名:フォルダの名前
    2. 暗号化:適宜必要な暗号化設定を選択

kinesis Video Streamsデータ取得用情報を作成するLambdaの作成

  • 以下のコードで各自で変える部分
    • region変数:バケットを作成したリージョン名
    • bucketName変数:作成したバケット名
    • key変数:作成したフォルダ名(終わりに『/』を入れる)
voice-message-infomation
const AWS = require("aws-sdk");
const region = 'XXXXXXXXX';
const bucketName = 'my-baseXXXXXXXXX';
const key = 'my-voicemessageXXXXXXXXX/infomation/';

exports.handler = async (event) => {

    console.log(JSON.stringify(event));

    // リクエストから必要データを取得する
    let streamInformation = {};

    const contactData = event.Details.ContactData;
    streamInformation.contactId = contactData.ContactId; // コンタクトID
    streamInformation.customerEndpoint = contactData.CustomerEndpoint.Address; // 発信者番号
    streamInformation.systemEndpoint = contactData.SystemEndpoint.Address; // 着信番号

    const audio = contactData.MediaStreams.Customer.Audio;
    streamInformation.startFragmentNumber = audio.StartFragmentNumber; // 録音データの開始フラグメント番号
    streamInformation.startTimestamp = audio.StartTimestamp; // 録音データの開始時間
    streamInformation.stopFragmentNumber = audio.StopFragmentNumber;// 録音データの終了フラグメント番号
    streamInformation.stopTimestamp = audio.StopTimestamp;// 録音データの終了時間
    streamInformation.streamARN = audio.StreamARN; // ストリームのARN

    // S3に日付文字列をキーとして保存する
    const s3 = new AWS.S3({region:region});

    const createKey = key + createKeyName();
    const body = JSON.stringify(streamInformation);
    const params = {
        Bucket: bucketName,
        Key: createKey,
        Body: body
    };

    await s3.putObject(params).promise();
    return {};
};

function createKeyName() {

    const date = new Date();    
    const year = date.getFullYear();
    const mon = (date.getMonth() + 1);
    const day = date.getDate();
    const hour = date.getHours();
    const min = date.getMinutes();
    const sec = date.getSeconds();

    const space = (n) => {
        console.log(n);
        return ('0' + (n)).slice(-2);
    };

    let result = year + '_';
    result += space(mon) + '_';
    result += space(day) + '_';
    result += space(hour) + '_';
    result += space(min) + '_';
    result += space(sec);
    return result;
};

  1. AWSにサインインします。

    1. アカウント、ユーザー名、パスワードを入力してサインインします。
      アカウント内(IAM)で作成したユーザーを使用してコンソールにサインインする
  2. 『AWSマネジメントコンソール』画面の右上にある《リージョン名》をクリックし、ドロップダウンます。
    image.png

  3. 『AWSマネジメントコンソール』画面にある「サービスを検索」にLambdaと入力し、検索結果から《Lambda》をクリックし、Amazon Lambda コンソール(https://console.aws.amazon.com/lambda/)を開きます。
    image.png

  4. Lambdaの関数一覧画面が表示されるので《関数の作成》をクリックします。
    image.png

  5. 「関数名」を入力して《関数の作成》をクリックします。
    image.png

    1. 関数名:voice-message-infomation
  6. 関数のベースが作成されました。関数コードを入力するため下にスクロールして「関数コード」を表示します。
    image.png

  7. 「関数コード」に初期で登録されているコードを削除して、上記voice-message-infomationをコピー&ペーストします。
    image.png

  8. 日本時間に対応させるため、画面を下にスクロールして「環境変数」に以下の値を入力し《保存》ボタンをクリックします。
    image.png

    1. キー:TZ、値:Asia/Tokyo
  9. LambdaにS3へのアクセス権を設定するため下にスクロールして「実行ロール」を表示し、《XXXXXXXXロールを表示》をクリックします。
    image.png

    1. Lambdaを作成する毎に自動的にLambda名の付いたロールが一つ作成されます。
    2. Lambdaで利用しているAPIのアクセス権を付与します。
      1. 今回は、kinesis Video Streamsデータ取得用情報をS3に保存するための権限を付与します。
  10. 選択したロールの概要が表示されるのでポリシー名の「▶」をクリックします。
    image.png

  11. 《ポリシーの編集》をクリックします。
    image.png

  12. ビジュアルエディタが表示されるので《さらにアクセス許可を追加する》をクリックします。
    image.png

    1. Lambdaの実行ログを記録するため、デフォルトでCloudWatch Logsの権限が付与されます。
  13. 《サービスの選択》をクリックします。
    image.png

  14. 「サービス」にS3と入力し、検索結果から《S3》をクリックします。
    image.png

  15. 「アクション」に今回利用するPutObjectを入力し、《PutObject》をクリックし、選択状態にします。
    image.png

  16. 《リソース》をクリックします。
    image.png

  17. 《ARNの追加》をクリックします。
    image.png

  18. 以下の項目を選択、入力して《追加》をクリックします。
    image.png

    1. Bucket name:kinesis Video Streamsデータ取得用情報を保存するS3のバケット名+フォルダ名(バケット名とフォルダ名やフォルダ名とフォルダ名の間は『/』で連結する)
      1. Bucket name:my-baseXXXXXXXXX/my-voicemessageXXXXXXX/infomation
    2. Object name:すべてにチェックを付ける(テキストボックスには*が入力される)
  19. 《ポリシーの確認》をクリックします。
    image.png

  20. 内容を確認して、《変更の保存》をクリックします。
    image.png

参考サイト

目次に戻る

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした