実現したいこと
boto3のコードの見方について理解したい
前提
指定されたS3バケットにファイルがPUTされたのをトリガーに実行するLambda関数を作成しています。その書き方でよくわからないところがあります。
対象のコード
こちらのコードで不明点があります。
import json import urllib.parse import boto3 print('Loading function') s3 = boto3.client('s3') def lambda_handler(event, context): print("Received event: " + json.dumps(event, indent=2)) # Get the object from the event and show its content type bucket = event['Records'][0]['s3']['bucket']['name'] key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8') try: response = s3.get_object(Bucket=bucket, Key=key) print("CONTENT TYPE: " + response['ContentType']) return response['ContentType'] except Exception as e: print(e) print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket)) raise e
不明点
-
s3 = boto3.client('s3')とありますが、これはコード内にあるs3がboto3を使用するリソースだ、ということでしょうか? -
bucket = event['Records'][0]['s3']['bucket']['name']にある['Records'][0]['s3']['bucket']['name']はどういう意味でこの書き方になっているのでしょうか? -
s3 = boto3.client('s3')とs3 = boto3.resource('s3')の違いはなんでしょうか?(両者ともboto3を使用するリソースはs3ですよと宣言しているのかと思っておりました)
お願いしたいこと
書き方の例やドキュメントも見ましたがよくわからない点を質問させていただきました。
ご存知の方、ご教授願います。
ドキュメント見たとありますが、念のため公式ドキュメントを張っておきます。
https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
例えば1については↓に記載がありますよ。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client
ご丁寧にリンクをありがとうございます。
理解ができているか不安なのですが、
たとえばs3 = boto3.client('s3')は、これからboto3で定義されているs3のコードを使用します!
のような宣言みたいなものなのでしょうか?
回答1件
あなたの回答
tips
プレビュー