AWSのS3バケットにjsonファイルの範囲が格納されています。ラムダを使用してS3からデータを読み取る
AWSラムダ・パイソンサービスを使用してこのjsonを解析し、解析結果をAWS RDS MySQLデータベースに送信したいとします。
私は、解析とデータベースへの書き込みを行うための安定したpythonスクリプトを持っています。 jsonファイルを反復するためにlambdaスクリプトを追加する必要があります。
各JSONファイルがリストに含まれている、単純な私が欲しいものを擬似コードでresults = [content]
からなることです:S3バケットへ
- 接続(
jsondata
) - の内容を読みますJSONファイル(
results
) - このデータにmyスクリプトを実行する(
results
)
私はで私が持っているバケットを一覧表示することができます
与えるimport boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
:
jsondata
をしかし、私はその結果を読み取るために、このバケットにアクセスすることはできません。
read
またはload
の機能はありません。
私は何かを誤解してい
for bucket in s3.buckets.all():
print(bucket.contents)
EDIT
のようなものを望みます。 S3でファイルを読み込むのではなく、ラムダがそれをダウンロードする必要があります。それは、ファイル自体にアクセスすることができ、そこから、あなたがラムダとダウンロードパスを与えなければならないようだhereから
、
import libraries
s3_client = boto3.client('s3')
def function to be executed:
blah blah
def handler(event, context):
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
s3_client.download_file(bucket, key, download_path)
応答に使用するs3オブジェクトを作成する必要があることにも注意してください。すなわち、 's3 = boto3.client( 's3')' – ScottMcC