LoginSignup
1

More than 3 years have passed since last update.

posted at

updated at

mockmockでSORACOM Funkにデータを送るプロジェクトを作成する

mockmockでSORACOM Funkにデータを送るプロジェクトを作成する

この記事はmockmockアドベントカレンダー9日目の記事です。
昨日は@m-shimaoによる「mockmockでSORACOM Funnelにデータを送るプロジェクトを作成する」でした。

本日も昨日に引き続きSORACOMのサービスの一つである「Funk」へデータを送るプロジェクトの作成手順をまとめます。

やりたいこと

mockmockからSORACOM FunkにJSONデータを送信します。SORACOM FunkはAWS Lambdaを起動するよう設定しておきます。

AWS LambdaがJSONで受け取った文字列をSlack投稿することで、起動を確認します。
Untitled_mockmock_-_Cacoo.png

AWSの設定

AWS Lambdaの設定

Lambdaのコンソールへアクセスして、「関数の作成」をクリックしてください。
Lambda_Management_Console.png

「一から作成」をクリックし、「基本的な情報」を以下のように入力した後、「関数の作成」をクリックしてください。
Lambda_Management_Console.png

項目 入力値
関数名 任意の関数名(ex.mockmock-soracom-funk-test)
ランタイム Node.js 12.x
実行ロール 基本的なLambdaアクセス権限で新しいロールを作成

Lambdaの設定画面が開いたら、関数コードを以下内容にコピペしてください。

その際、slackUrl には自身が使用しているSlackにて発行したIncoming Webhook ULRを代入するよう修正してください。
Lambda_Management_Console.png

const https = require('https');
const url = require('url');
const slackUrl = '<SlackのIncoming Webhook URLに置き換えてください>'

exports.handler = function(e, ctx, cb) {
    const slackReqOptions = url.parse(slackUrl);
    const payload = {
        "text": "SORACOM Funkから送信されたメッセージがあります",
        "attachments": [ {
            "title": "メッセージ",
            "color": "#34cdd7",
            "text": e.message,
        } ]
    };
    const body = JSON.stringify(payload);

    slackReqOptions.method = 'POST';
    slackReqOptions.headers = { 'Content-Type': 'application/json' };
    slackReqOptions.headers = {
        'Content-Type': 'application/json',
        'Content-Length': Buffer.byteLength(body),
    };

    const req = https.request(slackReqOptions, function(res) {
        if (res.statusCode === 200) {
            console.log('Posted to slack');
            cb(null, {"result":"ok"});
        } else {
            cb(false, {"result":"ng", "reason":'Failed to post slack ' + res.statusCode})
        }
        return res;
    });
    req.write(body);
    req.end();
};

mockmockの設定

プロジェクトの作成

mockmockの「プロジェクト新規作成」画面へアクセスし、以下の通り入力した後、「登録」をクリックしてください。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f66336666323066642d316238332d326331342d636530352d6264333737356165626566322e706e67.png

項目 入力値
プロジェクト名 任意のプロジェクト名(ex.soracom-funk-test)
サーバタイプ SORACOM
キャパシティ cs1

SORACOM認証情報の作成

後の手順でSORACOM側の設定を変更するために必要な「SORACOM認証キー」を作成します。
mockmockの「プロジェクト設定画面」にアクセスし「SORACOM認証キー一覧」の「新規作成」をクリックしてください。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f38643066623463302d353961652d303939372d623033622d6433303634363536336637612e706e67.png

「認証キーをダウンロード」をクリックしてください。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f38663233636165632d303737312d653961322d393838312d6565366436613364316134352e706e67.png

続いて、「SORACOM 認証情報ストア」を作成します。
d057cc38-f031-b11d-c905-07a70cf4424d.png

以下のように「SORACOM認証情報ID」が表示されていればOKです。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f63323263633839352d653765322d326335642d353939332d6230363531326532383862642e706e67.png

バケットバリュージェネレータの作成

サイドメニューの「バケット」の右側の「+」をクリックし、以下の通り入力した後、「登録」をクリックしてください。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f66316163613732312d356562372d343866392d373464612d3937333931653632336261352e706e67.png

項目 入力値
バケットバリュージェネレータ名 任意のバリュージェネレータ名(ex. message)
送信ルール ランダム
データリスト 任意の文字列(ex.SORACOM Funkを使ったシステムのテストはmockmockにおまかせ!)

データテンプレートの作成

続いて、データテンプレートを作成します。
サイドメニューの「テンプレート」の右側の「+」をクリックし、以下の通り入力した後、「登録」をクリックしてください。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f34333930666439322d623835352d303065342d373530622d3138643733653561386262372e706e67.png

項目 入力値
テンプレート名 任意のテンプレート名(ex. message)
元になるjson { "message": "message" }

作成後、表示された画面で「message」をクリックしてください。
2fdd4c61-4c93-b955-9573-5d6fc27f570e.png

以下の通り入力した後、「登録」をクリックしてください。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f31316537383333332d636532382d306661392d363035652d3332633039343538633466612e706e67.png

項目 入力値
キー message
String
生成タイプ bucket
ジェネレーター名 message

mockグループの作成

サイドメニューの「mockグループ」の右側の「+」をクリックし、以下の通り入力した後、「登録」をクリックしてください。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f65626630313934372d386536622d636337662d613835632d3538306530306630303038342e706e67.png

項目 入力値
mockグループ名 任意のmockグループ名(ex. message)
最大稼働時間 600

mockステータスの作成

作成したmockグループの詳細画面で「mockステータス」→「mockステータス作成」をクリックしてください。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f66306337363462392d653035642d656161612d396661642d6361336564643036306135382e706e67.png

以下の通り入力した後、「登録」をクリックしてください。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f64353431663735322d646531322d346565392d383565622d3561616335653734346330652e706e67.png

項目 入力値
状態名 任意の状態名(ex. normal)
初期状態 チェック
最小送信間隔 10
最大送信間隔 10
データテンプレート message

SORACOMの設定

SORACOM CLIのインストール

SORACOMの設定はCLI経由で行う必要があるため、以下ページに従ってSORACOM SLIをインストールしてください。

SORACOM CLI 利用ガイド

インストールが完了したらprofileを設定しておきましょう。

$ soracom configure --profile mockmock

--- SORACOM CLI セットアップ ---
/Users/user/.soracom ディレクトリがなければ作成し、そこにファイル 'mockmock.json' を作成します。

カバレッジタイプを選択してください。

1. Global
2. Japan

選択してください (1-2) > 2


認証方法を選択してください。

1. AuthKeyId と AuthKey を入力する(推奨)
2. オペレーターのメールアドレスとパスワードを入力する
3. SAM ユーザーの認証情報を入力する(オペレーターID、ユーザー名、パスワード)

選択してください (1-3) > 1
authKeyId: (SORACOM認証キーファイルに記載されているauth_key_idの値)
authKey: (SORACOM認証キーファイルに記載されているauth_key_secretの値)

SORACOM 認証情報の登録

テキストエディタ等を利用して以下のようなJSONファイルを作成します。

credential.json
{
  "type": "aws-credentials",
  "description": "for_mockmock",
  "credentials": {
    "accessKeyId": "<Lambdaの実行権限を持つIAMユーザのaccess keyを入力してください>",
    "secretAccessKey": "<Lambdaの実行権限を持つIAMユーザのsecret keyを入力してください>"
  }
}

以下コマンドを実行して、認証情報を登録します。

soracom credentials update --credentials-id <SORACOM 認証情報ID> --body @credential.json --profile mockmock
{
    "createDateTime": 1575882058,
    "credentials": {
        "accessKeyId": "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
    },
    "credentialsId": "pj-xxxxxxxxxxxxx",
    "description": "for_mockmock",
    "type": "aws-credentials",
    "updateDateTime": 1575882604
}

SORACOM Funkの設定

テキストエディタ等を利用して以下のようなJSONファイルを作成します。

funk.json
[
  {
    "key": "contentType",
    "value": "json"
  },
  {
    "key": "credentialsId",
    "value": {
      "$credentialsId": "<SORACOM 認証情報IDを入力してください>"
    }
  },
  {
    "key": "destination",
    "value": {
      "provider": "aws",
      "resourceUrl": "<LambdaのARNを入力してください>",
      "service": "lambda"
    }
  },
  {
    "key": "enabled",
    "value": true
  }
]

以下コマンドを実行して、SORACOM Funkの設定を登録します。

soracom groups put-config --group-id <デバイスグループID> --namespace SoracomFunk --body @funk.json --profile mockmock
{
    "configuration": {
        "SoracomFunk": {
            "contentType": "json",
            "credentialsId": {
                "$credentialsId": "pj-xxxxxxxxxxxxx"
            },
            "destination": {
                "provider": "aws",
                "resourceUrl": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:mockmock-soracom-funk-test",
                "service": "lambda"
            },
            "enabled": true
        }
    },
    "createdAt": 1575878572981,
    "createdTime": 1575878572981,
    "groupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "lastModifiedAt": 1575882779581,
    "lastModifiedTime": 1575882779581,
    "operatorId": "OP0085360624",
    "tags": {
        "name": "production-pj-xxxxxxxx"
    }
}

尚、デバイスグループIDはmockmockのプロジェクト設定画面にて確認できます。
170dc527-bc27-056a-6dcf-f87719b28d08.png

動作確認

mock起動

mockmockの「mock一覧」→「mock作成」の順でクリックしてください。
ce4d4325-af27-bd0d-59dc-e5352b247fcd.png

mockが作成されました。
作成したmockの「操作」→「起動」をクリックしてください。
58c54612-5e1c-fa95-ecb6-8f4ce284d16b.png

Slackにてmockmockから送信されたメッセージが確認できます。
Slack___nicole-dev___fusic.png

まとめ

本記事では、mockmockでSORACOM Funkにデータを送るプロジェクトを作成しました。
今後、FaaSを簡単に呼び出す手段としてSORACOM Funkの活用が期待されますので、テストの際にはぜひお試しください。

明日は@Kta-Mが「mockmockでAmazon API Gatewayにデータを送るプロジェクトを作成する」をご紹介します。

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1