JSON(JavaScript Object Notation)は、JavaScriptでオブジェクトを表現するための軽量なデータ交換形式です。PythonでもJSONを扱うことができ、その活用例は多岐にわたります。
LambdaでのJSONパースの実装例
Lambdaは、サーバーレスアーキテクチャを実現するためのAWSのサービスです。LambdaでJSONをパースする場合は、次のような実装例が考えられます。
import json def lambda_handler(event, context): json_data = event['json'] parsed_data = json.loads(json_data) # ここでparsed_dataを使った処理を行う ...
ここでは、Lambdaが受け取るeventオブジェクトからJSONデータを取得し、json.loads()メソッドを使ってパースしています。パースされたデータは、parsed_data変数に格納されます。
LambdaでJSONをパースする際の注意点
LambdaでJSONをパースする際には、次のような注意点があります。
- JSONデータが大きい場合は、Lambdaのメモリサイズを増やす必要がある
- JSONデータが壊れている場合には、try-except文を使ってエラー処理を行う
- パースされたデータが辞書型やリスト型であるため、適切にキャストする必要がある
S3へのJSONデータの保存方法
AWSのS3は、オブジェクトストレージサービスです。S3にJSONデータを保存するには、次のような方法があります。
- コンソールから手動でアップロードする
- Boto3を使って自動でアップロードする
Boto3を使った自動アップロードの例を示します。
import boto3 import json s3 = boto3.resource('s3') def upload_json_to_s3(json_data, bucket_name, key): s3_object = s3.Object(bucket_name, key) s3_object.put(Body=json_data) if __name__ == '__main__': data = {'name': 'John', 'age': 25} json_data = json.dumps(data) bucket_name = 'my-bucket' key = 'data.json' upload_json_to_s3(json_data, bucket_name, key)
ここでは、Boto3を使ってS3にJSONデータをアップロードする関数upload_json_to_s3()を定義しています。json.dumps()メソッドを使って、PythonオブジェクトをJSONに変換しています。
S3からのJSONデータの取得とパース
S3からJSONデータを取得するには、S3オブジェクトを取得してBody属性を取得し、json.loads()メソッドを使ってパースします。
import boto3 import json s3 = boto3.resource('s3') def download_json_from_s3(bucket_name, key): s3_object = s3.Object(bucket_name, key) json_data = s3_object.get()['Body'].read().decode('utf-8') parsed_data = json.loads(json_data) return parsed_data if __name__ == '__main__': bucket_name = 'my-bucket' key = 'data.json' data = download_json_from_s3(bucket_name, key) print(data)
ここでは、S3からJSONデータをダウンロードする関数download_json_from_s3()を定義しています。S3オブジェクトのBody属性からJSONデータを取得し、json.loads()メソッドを使ってパースしています。
S3とLambdaを組み合わせたJSONパースの応用例
S3とLambdaを組み合わせて、定期的にJSONデータをパースする処理を実装することもできます。
import boto3 import json s3 = boto3.resource('s3') def lambda_handler(event, context): bucket_name = 'my-bucket' key = 'data.json' s3_object = s3.Object(bucket_name, key) json_data = s3_object.get()['Body'].read().decode('utf-8') parsed_data = json.loads(json_data) # ここでparsed_dataを使った処理を行う ...
ここでは、Lambdaが実行されるたびに、S3からJSONデータを取得してパースする処理を実装しています。
まとめ
PythonでJSONをパースする方法と、LambdaやS3と組み合わせた活用例について紹介しました。JSONを扱う際には、適切なエラー処理やキャストを行うことが重要です。