Lambda(python)で部品的コードをいろいろ書いてみる
Lambda(python)で部品的コードをいろいろ書いてみる:
GOAL:チートシート的な何か
https://hacknote.jp/archives/37097/
abort_multipart_upload()
can_paginate()
complete_multipart_upload()
copy()
copy_object()
create_bucket()
create_multipart_upload()
delete_bucket()
delete_bucket_analytics_configuration()
delete_bucket_cors()
delete_bucket_encryption()
delete_bucket_inventory_configuration()
delete_bucket_lifecycle()
delete_bucket_metrics_configuration()
delete_bucket_policy()
delete_bucket_replication()
delete_bucket_tagging()
delete_bucket_website()
delete_object()
delete_object_tagging()
delete_objects()
delete_public_access_block()
download_file()
download_fileobj()
generate_presigned_post()
generate_presigned_url()
get_bucket_accelerate_configuration()
get_bucket_acl()
get_bucket_analytics_configuration()
get_bucket_cors()
get_bucket_encryption()
get_bucket_inventory_configuration()
get_bucket_lifecycle()
get_bucket_lifecycle_configuration()
get_bucket_location()
get_bucket_logging()
get_bucket_metrics_configuration()
get_bucket_notification()
get_bucket_notification_configuration()
get_bucket_policy()
get_bucket_policy_status()
get_bucket_replication()
get_bucket_request_payment()
get_bucket_tagging()
get_bucket_versioning()
get_bucket_website()
get_object()
get_object_acl()
get_object_tagging()
get_object_torrent()
get_paginator()
get_public_access_block()
get_waiter()
head_bucket()
head_object()
list_bucket_analytics_configurations()
list_bucket_inventory_configurations()
list_bucket_metrics_configurations()
list_buckets()
list_multipart_uploads()
list_object_versions()
list_objects()
list_objects_v2()
list_parts()
put_bucket_accelerate_configuration()
put_bucket_acl()
put_bucket_analytics_configuration()
put_bucket_cors()
put_bucket_encryption()
put_bucket_inventory_configuration()
put_bucket_lifecycle()
put_bucket_lifecycle_configuration()
put_bucket_logging()
put_bucket_metrics_configuration()
put_bucket_notification()
put_bucket_notification_configuration()
put_bucket_policy()
put_bucket_replication()
put_bucket_request_payment()
put_bucket_tagging()
put_bucket_versioning()
put_bucket_website()
put_object()
put_object_acl()
put_object_tagging()
put_public_access_block()
restore_object()
select_object_content()
upload_file()
upload_fileobj()
upload_part()
upload_part_copy()
GOAL:チートシート的な何か
1.Lambda 関数ハンドラー (Python)
def handler_name(event, context): ... return some_value
1.1.テストイベントから値を取得
1.君の名は.testevent
{ "firstname": "value1", "lastname": "value2" }
1.君の名は.py
import json def lambda_handler(event, context): message = 'Hello {} {}!'.format(event['firstname'], event['lastname']) return { 'message' : message }
2.boto3
2.1 バケット/キー(ファイル名)が存在するか確認 s3.list_objects
key_exists.py
def lambda_handler(event, context): import boto3 import botocore s3 = boto3.client('s3') bucket_name = 'jtakasuryuji-22' file_name = 'cat1.png' try: ################################################################## list_object = s3.list_objects(Bucket=bucket_name, Prefix=file_name) file_exists = False if 'Contents' in list_object: message="Found" print (message) else: message="NotFound" #ファイルないんだけど print (message) ################################################################## except botocore.exceptions.ClientError as e: if e.response['Error']['Code'] == 'NoSuchBucket': message="NoSuchBucket" #そもそもバケット自体がないんだけど print (message) ################################################################## return { 'message' : message }
ダウンロード用の署名つきURLを取得する generate_presigned_url()
generate_presigned_url.py
def lambda_handler(event, context): import boto3 s3 = boto3.client('s3') bucket_name = 'jtakasuryuji-22' file_name = 'cat1.png' header_location = s3.generate_presigned_url( ClientMethod = 'get_object', Params = {'Bucket' : bucket_name, 'Key' : file_name}, ExpiresIn = 60, HttpMethod = 'GET' ) print (header_location)
同一バケット内でファイルをコピー
https://hacknote.jp/archives/37097/
バケットをまたいでファイルをコピーする
WARNING_NOTWORK_WIP_filecopy_another_bucket.py
import boto conn = boto.connect_s3() myBucket = 'jtakasuryuji-22' myKey = '20181118b.txt' newBucket = 'jtakasuryuji-33' #copy src = conn.get_bucket(myBucket) dst = conn.get_bucket(newBucket) dst.copy_key(mykey,src.name,mykey)
バケット内のファイルを削除する delete_object() object().delete()
deletekey.py
def lambda_handler(event, context): import boto3 s3 = boto3.resource('s3') myBucket = 'jtakasuryuji-22' myKey = '20181118b.txt' #つくる #s3_obj = s3.Object(myBucket,myKey) #s3_obj.put(Body="") #消す s3.Object(myBucket,myKey).delete()
ファイル名を変更する COPY+DELETE
テキストファイルを新規作成
create_new_file.py
def lambda_handler(event, context): import boto3 s3 = boto3.resource('s3') myBucket = 'jtakasuryuji-22' myKey = '20181118b.txt' #つくる s3_obj = s3.Object(myBucket,myKey) s3_obj.put(Body="") #消す s3.Object(myBucket,myKey).delete()
boto s3 だけでいっぱいある...
abort_multipart_upload()can_paginate()
complete_multipart_upload()
copy()
copy_object()
create_bucket()
create_multipart_upload()
delete_bucket()
delete_bucket_analytics_configuration()
delete_bucket_cors()
delete_bucket_encryption()
delete_bucket_inventory_configuration()
delete_bucket_lifecycle()
delete_bucket_metrics_configuration()
delete_bucket_policy()
delete_bucket_replication()
delete_bucket_tagging()
delete_bucket_website()
delete_object()
delete_object_tagging()
delete_objects()
delete_public_access_block()
download_file()
download_fileobj()
generate_presigned_post()
generate_presigned_url()
get_bucket_accelerate_configuration()
get_bucket_acl()
get_bucket_analytics_configuration()
get_bucket_cors()
get_bucket_encryption()
get_bucket_inventory_configuration()
get_bucket_lifecycle()
get_bucket_lifecycle_configuration()
get_bucket_location()
get_bucket_logging()
get_bucket_metrics_configuration()
get_bucket_notification()
get_bucket_notification_configuration()
get_bucket_policy()
get_bucket_policy_status()
get_bucket_replication()
get_bucket_request_payment()
get_bucket_tagging()
get_bucket_versioning()
get_bucket_website()
get_object()
get_object_acl()
get_object_tagging()
get_object_torrent()
get_paginator()
get_public_access_block()
get_waiter()
head_bucket()
head_object()
list_bucket_analytics_configurations()
list_bucket_inventory_configurations()
list_bucket_metrics_configurations()
list_buckets()
list_multipart_uploads()
list_object_versions()
list_objects()
list_objects_v2()
list_parts()
put_bucket_accelerate_configuration()
put_bucket_acl()
put_bucket_analytics_configuration()
put_bucket_cors()
put_bucket_encryption()
put_bucket_inventory_configuration()
put_bucket_lifecycle()
put_bucket_lifecycle_configuration()
put_bucket_logging()
put_bucket_metrics_configuration()
put_bucket_notification()
put_bucket_notification_configuration()
put_bucket_policy()
put_bucket_replication()
put_bucket_request_payment()
put_bucket_tagging()
put_bucket_versioning()
put_bucket_website()
put_object()
put_object_acl()
put_object_tagging()
put_public_access_block()
restore_object()
select_object_content()
upload_file()
upload_fileobj()
upload_part()
upload_part_copy()
コメント
コメントを投稿