GOAL:チートシート的な何か
1.Lambda 関数ハンドラー (Python)
def handler_name(event, context):
...
return some_value
1.1.テストイベントから値を取得
{
"firstname": "value1",
"lastname": "value2"
}
import json
def lambda_handler(event, context):
message = 'Hello {} {}!'.format(event['firstname'],
event['lastname'])
return {
'message' : message
}
2.boto3
2.1 バケット/キー(ファイル名)が存在するか確認 s3.list_objects
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()
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)
同一バケット内でファイルをコピー
バケットをまたいでファイルをコピーする
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()
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
テキストファイルを新規作成
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()