はじめに
APIを作ってみましょう!
APIの使い方はこちら
AWS Lambda でシンプルなAPIを作成
Lambda 関数の作成
1.AWS Lambdaコンソールで新しい関数を作成します
2.関数名を入力し、ランタイムとしてPython 3.13を選択します
3.以下のコードを実装します:
import json
def lambda_handler(event, context):
# HTTPメソッドを取得
http_method = event['requestContext']['http']['method']
if http_method == 'GET':
# クエリパラメータから名前を取得
query_parameters = event.get('queryStringParameters', {})
name = query_parameters.get('name') if query_parameters else None
if name:
# 名前がクエリパラメータにある場合
return {
'statusCode': 200,
'body': json.dumps({
'message': f'こんにちは、{name}さん!'
}, ensure_ascii=False)
}
else:
# 名前がない場合(通常の挨拶)
return {
'statusCode': 200,
'body': json.dumps({
'message': 'こんにちは!'
}, ensure_ascii=False)
}
elif http_method == 'POST':
# POSTリクエストの処理
try:
# リクエストボディからデータを取得
body = json.loads(event['body'])
name = body.get('name', '名無し')
return {
'statusCode': 200,
'body': json.dumps({
'message': f'こんにちは、{name}さん!'
}, ensure_ascii=False)
}
except:
return {
'statusCode': 400,
'body': json.dumps({
'message': 'リクエストボディが不正です'
}, ensure_ascii=False)
}
else:
# サポートしていないHTTPメソッド
return {
'statusCode': 405,
'body': json.dumps({
'message': 'メソッドはGETまたはPOSTのみサポートしています'
}, ensure_ascii=False)
}
テスト実行
{
"requestContext": {
"http": {
"method": "GET"
}
},
"queryStringParameters": {
"name": "Satoshi"
}
}
2.テストを実行して、正しくレスポンスが返ることを確認します
関数URLの設定
APIの動作確認
ブラウザでの確認
1.関数URLに直接アクセス
2.クエリパラメータを付けてアクセス(例:?name=Satoshi)
Pythonから実行
GETリクエスト
import requests
def get_message(name=None):
# APIのURL
url = "https://ddorzwnxzqjveigdy6trzz7r5m0ooacy.lambda-url.ap-northeast-1.on.aws/"
# クエリパラメータの設定
params = {}
if name:
params["name"] = name
try:
# GETリクエストを送信(クエリパラメータ付き)
response = requests.get(url, params=params)
# レスポンスが正常(200)の場合
if response.status_code == 200:
# JSONレスポンスを取得
data = response.json()
print(f"受信したメッセージ: {data['message']}")
else:
print(f"エラー: ステータスコード {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"リクエスト中にエラーが発生しました: {e}")
if __name__ == "__main__":
# nameパラメータを指定して呼び出す例
name = input("あなたの名前を入力してください: ")
get_message(name)
POSTリクエスト
import requests
def post_message(name=None):
# APIのURL
url = "https://ddorzwnxzqjveigdy6trzz7r5m0ooacy.lambda-url.ap-northeast-1.on.aws/"
# POSTリクエストのJSONボディ
data = {"name": name}
try:
# POSTリクエストを送信
response = requests.post(url, json=data)
# レスポンスが正常(200)の場合
if response.status_code == 200:
# JSONレスポンスを取得
result = response.json()
print(f"受信したメッセージ: {result['message']}")
else:
print(f"エラー: ステータスコード {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"リクエスト中にエラーが発生しました: {e}")
if __name__ == "__main__":
# nameパラメータを指定して呼び出す例
name = input("あなたの名前を入力してください: ")
post_message(name)
まとめ
AWS Lambdaを使用して、シンプルな挨拶を返すAPIを作成しました。GETとPOSTの両方のHTTPメソッドに対応し、名前をパラメータとして受け取ることができます。このAPIは関数URLを通じて直接アクセス可能で、ブラウザやPythonプログラムから簡単に利用できます。