LoginSignup
0
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-03-23

この記事の概要

AWS API Gatewayでリクエスト受けてLambdaを実行するという記事は結構あるのですが、逆にLambdaから他の外部APIを叩くのにサンプルがほしかったのでLabmda & Python 3.8(&標準ライブラリ)からWrikeのAPIを叩いてみました。
image.png
bearerトークンが使えるAPIが公開されているWeb serviceなら他のサービスでも流用できると思います。

本記事の投稿者

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

大まかな手順

Wrikeで永続トークンを生成し、LabmdaでPythonの関数つくって実行。

Wrike公式APIリファレンス(英語)

永続アクセストークンの取得

こちらの記事参照
https://note.com/katoiek/n/nf7342fd84add

AWS Lambdaで関数の作成

今回は1から関数を作るのでAWSコンソールからLabmdaのコンソールへ移動し、新規作成をクリックし、一から作成を選択。
image.png
アクセスロールは下記の2個を選択したものを作成もしくは既存のものを使用。1つ目はLabmdaへのアクセス、2つ目はCloud watchへのアクセス(ログ出力など)らしいです。
image.png
関数を作成したらタイムアウト3秒だと足りないので60秒くらいにします。
image.png
コードをクリックして下記のコードを入力します。

lambda_fucntion.py
import json
import urllib.request
from pprint import pprint

permanent_token='ここに永続トークンを入力します'
url = 'https://www.wrike.com/api/v4/tasks'
header ={ 'Authorization': 'bearer '+ permanent_token}

#HTTP methodはすべて大文字 GET, POST, PUT, DELETE
method = 'GET'

def lambda_handler(event, context):
    req=urllib.request.Request(url, headers=header,method=method)

    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をクリック。
image.png
イベント名を入力(必須ですが、名前は任意)単純にGetを叩くだけなのでデータをすべて削除して作成をクリック。
image.png
再度Testをクリックすると実行されます。
image.png
こんな感じでレスポンスがあればOKです。
image.png
今回はシンプルにGetでデータをクエリを行いましたが、Jsonをパースしたりキャストしたりして他のSAASのAPI経由で連携といったこともできると思います。

Cronのように定期的にトリガーを引きたい場合はEventBridgeをトリガーに設定することでスケジューリングなどができます。
image.png
Lambdaは無料枠もかなり大きいですしサーバーレスの名の通り実行環境を構築しなくていいという点でAPIの運用にも便利な環境と思います。

0
3
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
0
3