🔌

kintoneアプリのレコードをAWS経由でJSONとして公開する

に公開

こんにちは、本橋です。

kintoneのレコードをJSONで公開するときに、AWSを使うとこんな手軽にできますよ、というCDKモジュールの紹介です。kintoneレコードをJSONとして公開するまでのセットアップ手順を書きました。

モジュールはMITライセンスで公開しています。

https://github.com/motohasystem/OnewayCRUD_CDK

事前準備

  • AWSの登録
  • aws cliのインストールとセットアップ
  • CDKのインストールとセットアップ

このあたりの記事が参考になりそうです。

https://zenn.dev/issy/articles/zenn-cdk-overview

CDKのインストールコマンドとかまでは書いていないので、適宜AIにお尋ねください。AWS関係の情報はLLMにかなり詰まっています。

手順

  1. リポジトリをクローンしてディレクトリを移動
$ git clone https://github.com/motohasystem/OnewayCRUD_CDK.git
$ cd OnewayCRUD_CDK
  1. .envの中身を確認する
PROJECT_NAME=SampleOnewayCrudCdk
PROJECT_VERSION=0.1.0
HIDE_FLAG=hideUserInfo

見るのはPROJECT_NAMEだけです。適当に書き換えても良いですし、このままでもよいです。

  1. npmライブラリをインストール
$ npm install
  1. AWSのプロファイルを選択する
$ set AWS_PROFILE=<<YOUR_PROFILE_NAME>>

たまにプロファイル間違えてデプロイしてしまうことがあったので自戒を込めて。

  1. デプロイする
$ cdk deploy

エラーが無ければ、

Do you wish to deploy these changes (y/n)?

と確認を求められます。yes!

  1. デプロイ成功後の出力を確認する
 ✅  SampleOnewayCrudCdk-Stack

✨  Deployment time: 69.13s

Outputs:
SampleOnewayCrudCdk-Stack.AllowedIpAddresses = 103.79.14.0/24
SampleOnewayCrudCdk-Stack.HidingMode = hideUserInfo
SampleOnewayCrudCdk-Stack.KintoneWebhookURL = https://xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/api/oneway
SampleOnewayCrudCdk-Stack.ReadonlyDynamodbApiEndPointSample = https://yyyyyyyy.execute-api.ap-northeast-1.amazonaws.com/prod/<<appid>>/items
SampleOnewayCrudCdk-Stack.ReadonlyDynamodbApiEndpointD809A163 = https://yyyyyyyy.execute-api.ap-northeast-1.amazonaws.com/prod/
SampleOnewayCrudCdk-Stack.SampleOnewayCrudCdkOnewayCrudApiEndpoint99B4FE51 = https://xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/
Stack ARN:
arn:aws:cloudformation:ap-northeast-1:9999999999:stack/SampleOnewayCrudCdk-Stack/7da44e70-41c8-11f0-b92f-06c4b04cf76b

いろいろ出力されますが、今回必要なのはkintoneアプリのWebhookとして指定したい KintoneWebhookURL です。

SampleOnewayCrudCdk-Stack.KintoneWebhookURL = https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/api/oneway

"=" の後ろのURLを、kintoneにWebhookとして登録してあげてください。

  1. kintoneアプリにWebhookをセットする

先の手順で取得したWebhookURLをお好みのkintoneアプリにセットしてあげましょう。

もう一つ、このバージョンではレコードの公開/非公開を切り替える機能を付与しています。
フィールドコード"__access__"というフィールドを作成して、値を"Public"としたレコードをJSONとして公開します。

なおWebhookを設定した後はアプリの更新も忘れがちなのでこちらも自戒を込めて。

  1. DynamoDB / JSONを確認

DynamoDBの確認はAWSコンソールなどからどうぞ。

JSONによる公開APIは以下のOutputを使って、appidを書き換えてご利用ください。

SampleOnewayCrudCdk-Stack.ReadonlyDynamodbApiEndPointSample = https://yyyyyyyyyy.execute-api.ap-northeast-1.amazonaws.com/prod/{appid}/items

https://yyyyyyyyyy.execute-api.ap-northeast-1.amazonaws.com/prod/999/items

以下のようにAttributeValue形式でJSONが表示されていれば成功です!

{
  "Count": 1,
  "Items": [
    {
      "$revision": {
        "S": "3"
      },
      "更新日時": {
        "S": "2025-06-05T04:58:00Z"
      },
      "対応詳細": {
        "L": [
          {
            "M": {
              "value": {
                "M": {
                  "文字列__複数行__1": {
                    "M": {
                      "type": {
                        "S": "MULTI_LINE_TEXT"
                      },
                      "value": {
                        "S": ""
                      }
                    }
                  },
                  "添付ファイル": {
                    "M": {
                      "type": {
                        "S": "FILE"
                      },
                      "value": {
                        "L": []
                      }
                    }
                  },
                  "日時_0": {
                    "M": {
                      "type": {
                        "S": "DATETIME"
                      },
                      "value": {
                        "S": "2025-06-05T04:53:00Z"
                      }
                    }
                  }
                }
              },
              "id": {
                "S": "707537"
              }
            }
          }
        ]
      },
      "作成日時": {
        "S": "2025-05-20T00:24:00Z"
      },
      "Detail": {
        "S": "新しい担当者を、製品セミナーに参加させたい"
      },
      "文字列__1行__0": {
        "S": ""
      },
      "レコード番号": {
        "S": "21"
      },
      "ReceptionDate": {
        "S": "2025-05-20T00:24:00Z"
      },
      "Status": {
        "S": "完了"
      },
      "LimitDay": {
        "S": "2018-02-01"
      },
      "__appid__": {
        "N": "645"
      },
      "QType": {
        "S": "その他"
      },
      "Person": {
        "L": []
      },
      "requestContext.stage": {
        "S": "prod"
      },
      "Customer": {
        "S": "株式会社Piacco"
      },
      "__access__": {
        "S": "Public"
      },
      "$id": {
        "N": "21"
      }
    }
  ],
  "ScannedCount": 1
}

なんだか空っぽいのJSONが表示されてしまっている場合は、さきほどの"access"フィールドの追加ができているか見直してみてください。

Discussion