0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS LambdaでサクッとAPIを叩きたい

Last updated at Posted at 2021-09-09

#AWS マネジメントコンソール上でLambdaを実装して、APIを叩きたい
サクッとWEBAPIをLambdaで叩きたい人向けです。
AWSのコンソール上のコードエディターのみで作業を完結させたいときに。

##こんな人向け
・WEBAPIを実行したい
・AWSマネジメントコンソールのみで作業を完結させたい
・headerに認証キーを付けたい
・認証キーは環境変数に入れておきたい
・返り値はステータスコードだけ取れればよい

##環境情報
AWS Lambda

  • ランタイム:Python3.9

##ソースコード(PUT API)
Lambda 標準の同包モジュールのみでの実装するため、
AWS Lambda コードエディター上に下記を張り付けるだけです。

import os
import json
import urllib.request
    
def lambda_handler(event, context):
    
    #PUT API
    url_str = "https://APIURL/"
    headers = {"Authorization" : os.environ.get('BearerToken')}
    data = "data"
    request = urllib.request.Request(url_str, data.encode('utf-8'), method='PUT', headers=headers)
    response = urllib.request.urlopen(request)
    res_code = response.getcode()
    
    # PRINT STATUS CODE
    print(res_code)    
    return {
        'statusCode': res_code
    }

##環境変数の設定
AWS Lambda上、「設定」タブ内にある「環境変数」を設定しましょう。
環境変数の名称は、ソースコードの**"BearerToken"**です。

##出会ったエラー

TypeError: POST data should be bytes or an iterable of bytes. It cannot be of type str.

dataはstr型ではなくbytes型である必要があります。
スタックオーバーフローで同じエラーを抱えている人に多く出会いました。
結論としてはdataをエンコードしてあげる必要があります。

##おわりに
ちょっと確認したいだけだから5分でできると思ったら15分掛かったので記事にしました。
久しぶりのpythonは、アレっとなりますね。
開発初期の検証などに。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?