見出し画像

AWS Lambda (Python 3.8)からWrikeのAPIを叩いてみる。

この記事の概要

AWS API Gatewayでリクエスト受けてLambdaを実行するという記事は以外にあるのですが、逆にLambdaから他の外部APIを叩くのにサンプルがほしかったのでLabmda & Python 3.8(&標準ライブラリ)からWrikeのAPIを叩いてみました。

本記事の投稿者

Python&Lambda初心者(両方とも初めて書いてみた)のでとりあえず動けばいいというレベルです。

大まかな手順

Wrikeで永続トークンを生成し、Labmdaで関数つくって貼り付ける。

Wrike永続トークンの生成は下記記事を参照。

AWS Lambdaで関数の作成

今回は1から関数を作るのでAWSコンソールからLabmdaのコンソールへ移動し、新規作成をクリックし、一から作成を選択。

画像1

アクセスロールは下記の2個を選択したものを作成もしくは既存のものを使用。1つ目はLabmdaへのアクセス、2つ目はCloud watchへのアクセス(ログ出力など)らしいです。

画像2

関数を作成したらタイムアウト3秒だと足りないので60秒くらいにします。

画像3

コードをクリックして下記のコードを入力します。

import json
import urllib.request
from pprint import pprint
permanent_token='ここに永続トークンを入力します'
url = 'https://www.wrike.com/api/v4/tasks'
header ={ 'Authorization': 'bearer '+ permanent_token}
def lambda_handler(event, context):
   req=urllib.request.Request(url, headers=header)
   
   with urllib.request.urlopen(req) as res:
   # resは http.client.HTTPResponse
       body = json.loads(res.read().decode('utf8')) # レスポンスボディ
       headers = res.getheaders() # ヘッダー(dict)
       status = res.getcode() # ステータスコード
       pprint(header)
       pprint(status)
       pprint(body)

永続トークンのところは書き換えてください。

Lambdaからの実行

Deployし、Testをクリック。

画像4

イベント名を入力(必須ですが、名前は任意)単純にGetを叩くだけなのでデータをすべて削除して作成をクリック。

画像5

再度Testをクリックすると実行されます。

画像6

こんな感じでレスポンスがあればOKです。

画像8

今回はシンプルにGetでデータをクエリを行いましたが、Jsonをパースしたりキャストしたりして他のSAASのAPI経由で連携といったこともできると思います。

Cronのように定期的にトリガーを引きたい場合はEventBridgeをトリガーに設定することでスケジューリングなどができます。

画像8

Lambdaは無料枠もかなり大きいですしサーバーレスの名の通り実行環境を構築しなくていいという点でAPIの運用にも便利な環境と思います。


この記事が気に入ったらサポートをしてみませんか?