LoginSignup
4
1

More than 5 years have passed since last update.

AWS Lambdaからkintoneアプリケーションのレコードを更新してみる

Last updated at Posted at 2017-06-07

AWS Lambdaからkintoneのアプリケーションレコードを更新してみたのでその備忘録。

前提

  1. AWS Lambda Pythonを使います。
  2. LambdaはVPC内には配置しません。
  3. kitoneのアプリケーションにはデフォルトで用意されている「備品在庫管理」を利用します。

kintone側の設定

スクリーンショット 2017-05-28 17.05.06.png

手動で登録したこのレコード(ボールペン)をAWS Lambdaから変更したいと思います。

基本的にはこちらのサイトを参考にさせてもらいました。とてもわかりやすかったです。バージョンの違いなのか若干書き方が異なるところがあったりしましたが、なんとかなりました。

Lambdaの実装

以下のような実装になります。一応メソッドによって処理を変更できるような作りにはしてはみましたが、実運用で使うならきちんと設計したほうが良いですね。

def kintone_operator(event, context):
    KINTONE_URL = "https://{kintone_domain}/k/v1/record.json"
    url = KINTONE_URL.format(
        kintone_domain=os.environ['KINTONE_DOMAIN'],
        kintone_app=os.environ['KINTONE_APP']
    )
    headers_key = os.environ['KINTONE_HEADERS_KEY']
    api_key = os.environ['KINTONE_API_KEY']
    basic_headers_key = os.environ['KINTONE_BASIC_HEADERS_KEY']
    basic_headers_value =os.environ['KINTONE_BASIC_HEADERS_VALUE']

    headers = {headers_key: api_key}
    headers["Content-Type"] = "application/json"
    if basic_headers_value != '':
        headers[basic_headers_key] = basic_headers_value

    if event['api'] == 'PUT':
        result = put_record(headers, url, event['data'])
    else:
        result = 'NO KEY'

    return result

def put_record(headers, url, data):
    response_record = requests.put(url, json=data, headers=headers)
    record_data = json.loads(response_record.text)

    return record_data

全て大文字の変数は環境変数としてLambdaで定義しました。API Keyなどを公開しなくて済むので非常に楽です。

実行時には以下のようなデータを送付しました。

{
  "api": "PUT",
  "data": {
      "app": 498,
      "id": 1,
      "record": {
          "文字列__1行_": {
              "value": "シャープペンシル"
          }
      }
  }
}

で、実行してみたところ、無事更新されたようです。

スクリーンショット 2017-06-06 19.45.48.png

まとめ

いろいろなサイトをベースにさせてもらい、更新機能を作ってみました。うまくAPI Gatewayやら他の機能やらと連携できれば、kintoneとAWSでどんどんとできることが増えてきますね。

4
1
0

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
  3. You can use dark theme
What you can do with signing up
4
1