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

mockmockでSORACOM Funkを呼んでみる

これは

先日発表されたmockmockのSORACOM連携機能に、待望のSORACOM Funkが対応しましたので早速試してみました。

以下の記事も参考にしてください。

Lambda関数の準備

とりあえずLambda関数を準備します。SORACOM固有情報(context.client_context.custom)と、渡されたJSONデータをそのままダンプするPython3の関数です。

import json

def hello(event, context):
    body = {
        "input": event,
        "context": context.client_context.custom
    }

    return body

Funkの設定に使いますので、この関数のarnを保存しておきます。また、この関数を呼び出す権限を付与したIAMユーザを作成し、そのaccessKeyIdとsecretAccessKeyを保存しておきます。

mockmockにSORACOM Funkを設定する

Beamを動かしたときの記事と同じ手順でmockグループを作成したら、以下のjsonを流し込んでFunkの設定をします。

[
    {
    "key":"enabled",
    "value": true
    },
    {
    "key":"contentType",
    "value":"application/json"
    },
    {
    "key":"credentialsId",
    "value": {
        "accessKeyId": "*****************",
        "secretAccessKey": "**********************"
    }
    },
    {
    "key":"destination",
    "value": {
        "provider":"aws",
        "resourceUrl": "arn:aws:lambda:********************",
        "service":"lambda"
    }
    }

]

流し込む際のcliと結果はこんな感じです。Namespaceは「SoracomFunk」です。

%soracom --profile mockmock groups --group-id "************" --namespace "SoracomFunk"\
 put-config --body @mockmock-funk-setup.json

{
        "configuration": {
                "SoracomFunk": {
                        "contentType": "application/json",
                        "credentialsId": {
                                "accessKeyId": "**********",
                                "secretAccessKey": "**********************"
                        },
                        "destination": {
                                "provider": "aws",
                                "resourceUrl": "arn:aws:lambda:*******:******:function:****************",
                                "service": "lambda"
                        },
                        "enabled": true
                }
        },
        "createdAt": **************,
        "createdTime": *************,
        "groupId": "**********************",
        "lastModifiedAt": **************,
        "lastModifiedTime": ***********,
        "operatorId": "OP*********",
        "tags": {
                "name": "**************"
        }
}

動かしてみる

以下のJSONを渡して、mockmockのテスト送信を実施してみましょう。

{
  "hello":"world"
}

mockmock-funk.png

うまくいきましたね!

なお、BeamとFunkを同時に設定すると、unified endpointに投げたときと同じくそれぞれの返り値をまとめたJSONが戻ってきます。

まとめ

これでSORACOM Airが手元になくてもmockmockさえあればFunkを経由してAWS LambdaなどのFaaSを直接実行できるようになります。
デバイスからはFunkでクラウドの機能を呼び出すような開発をするとき、デバイスがなくてもクラウド側の開発が捗りますね!

kkimura
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
ユーザーは見つかりませんでした