2件のコメント

API GatewayとAWS Lambda(Node.js)を使い効率よくWebサービスと連携する その1

こんにちは。

株式会社フルーデンスの小巻です。

2020年03月04日に、Claris Connectがリリースされました。

Claris Connect は単純な自動化を超える飛躍をもたらします
https://www.claris.com/ja/blog/2020/developers-soar-beyond-simple-automation-with-claris-connect

大変素晴らしいサービスだと思います。

さて、今回はタイトルの通り、Claris Connectではなく、AWSの2つのサービスを活用して、効率よくWebサービスと連携する方法を書きます。


更新履歴

2023年9月25日

2023年9月25日に、以下の記事を公開しました。
簡易的にQRコードを生成できるようになりましたので、興味がありましたら、ご確認ください。

FileMakerからQRコードを生成するためのAPIを公開しました | フルーデンス

FileMakerからQRコードを生成するためのAPIを公開しました


具体的には、Amazon API GatewayとAWS Lambdaがどのようなものか、を簡単に説明するための記事です。

FileMakerではなく、Node.jsを使いますので、ご了承ください。

このようなイメージになります。

filemaker-aws-apigateway-lambda-24

記事の対象者

今回の記事に興味あるFileMaker開発者は、ほとんどいないだろうな、と思っております。

FileMakerしかできない方には、Node.jsの話のため参考になりませんし、
FileMaker以外の言語を書ける人には、既に使ったことがある方が多いと思いますので、特に参考になる情報ではないためです。

今回の記事の対象者は、以下のような方だと思います。

  • FileMakerの『URLから挿入』を使って、Webサービスと連携している方。
  • 他の言語を使えば『もっと簡単に書けるのではないか?』と思っている方。
  • 多言語を勉強しようと思っている方。
  • S3やSES、DynamoDBなどのAWSのサービスと連携したい方。

上記に当てはまらない方は、タブを閉じて頂ければと思います。

AWSのサービス

タイトルの通り、以下のサービスを使います。

AWS Lambdaで実行するコードを書く

AWSにログインし、LambdaのURLに移動します。

「関数を作成」をクリックします。

filemaker-aws-apigateway-lambda-1

「一から作成」をクリックし、適宜入力します。
「関数の作成」をクリックします。

filemaker-aws-apigateway-lambda-2

エディターが開きます。
「テストイベントの設定」をクリックします。

filemaker-aws-apigateway-lambda-3

イベント名(今回はtest)を入力し、作成をクリックします。

filemaker-aws-apigateway-lambda-4

先程作成したイベントを選択し「テスト」をクリックします。

filemaker-aws-apigateway-lambda-5

実行結果が表示されます。

filemaker-aws-apigateway-lambda-6

コードの一部を修正し、「保存」をクリックします。

変更前と変更後の差分

filemaker-aws-apigateway-lambda-23

変更後のコード

exports.handler = async event => {
  // TODO implement
  const response = {
    statusCode: 200,
    body: JSON.stringify('Hello from Lambda!'),
    event: event
  }
  return response
}

filemaker-aws-apigateway-lambda-7

改めて「テスト」をクリックします。

先程追加したテストイベントの情報がレスポンスに追加されます。

filemaker-aws-apigateway-lambda-8

今回は、シンプルな関数を実行するのみですので、これでLambdaは終了になります。

Amazon API GatewayでAPIを作成する

API GatewayのURLに移動します。
「今すぐ始める」をクリックします。

filemaker-aws-apigateway-lambda-9

「REST」「新しいAPI」を選択します。
「API名」を入力し「APIの作成」をクリックします。

filemaker-aws-apigateway-lambda-10

「アクション」の選択肢から「メソッドの作成」を選択します。
「POST」を選択します。

filemaker-aws-apigateway-lambda-11

統合タイプは「Lambda関数」を選択します。
Lambda関数は、先程作成したLambda関数名を入力します。

filemaker-aws-apigateway-lambda-12

関数名が補完されますので選択します。
「保存」をクリックします。

filemaker-aws-apigateway-lambda-13

「統合リクエスト」を選択します。

filemaker-aws-apigateway-lambda-14

「マッピングテンプレート」を選択します。

filemaker-aws-apigateway-lambda-15

Content-Typeに application/json を入力します。
フォームに $input.json('$') と入力し「保存」をクリックします。

filemaker-aws-apigateway-lambda-16

「テスト」を選択します。

filemaker-aws-apigateway-lambda-17

リクエスト本文に、適当なオブジェクトを入力し「テスト」をクリックします。

レスポンス本文を確認し、戻ります。

filemaker-aws-apigateway-lambda-18

アクションの選択肢から「APIのデプロイ」を選択します。

filemaker-aws-apigateway-lambda-19

デプロイされるステージは「新しいステージ」を選択します。
ステージ名を入力し「デプロイ」をクリックします。

filemaker-aws-apigateway-lambda-20

URLの呼び出しに https://rn4zdddyu1.execute-api.us-east-2.amazonaws.com/dev/ などのURLが表示されます。

filemaker-aws-apigateway-lambda-21

macOSのターミナル、もしくは、Windowsのコマンドプロンプト/Powershellを起動し、curlコマンドを実行します。

(ins) teruhiro@MacBook-Pro-15:~ $ curl -X POST --header "Content-Type: application/json" -d '{"key":"value"}' https://rn4zdddyu1.execute-api.us-east-2.amazonaws.com/dev | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    89  100    74  100    15     59     12  0:00:01  0:00:01 --:--:--    72
{
  "statusCode": 200,
  "body": "\"Hello from Lambda!\"",
  "event": {
    "key": "value"
  }
}

filemaker-aws-apigateway-lambda-22

APIの公開範囲

今回作成したAPIは、URLさえ分かれば誰でもアクセスできる状態です。
そのため、本来はAPIキーを発行し、リクエスト時にAPIキーを必須にする方法が最低限必要になります。

この点についても記事にします。

あとがき

Amazon API GatewayAWS Lambdaがどのようなものか?がなんとなくでも伝わりましたでしょうか。

次回以降で、FileMakerとの連携方法についても、記事にしたいと思います。

想像がついている方もいるかもしれませんが…
Node.jsの様々なモジュールを活用しコードを書き、実行した結果をFileMakerに戻すことが簡単にできるようになります。

たとえば…

などをNode.jsで書けば、FileMakerで戻り値やCSVファイルを受け取ることができるようになります。

2014年からフリーランスとして活動し、2016年に株式会社フルーデンスを設立する。 最近は、GolangでCLIツールを開発したり、GAE/GoでWebアプリケーションを開発しています。

2件のコメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください