Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@Y_uuu

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

More than 1 year has passed since last update.

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にデータを送るプロジェクトを作成する」をご紹介します。

参考

1
Help us understand the problem. What is going on with this article?
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
Y_uuu
fusic
個性をかき集めて、驚きの角度から世の中をアップデートしつづける。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?