Lambda(python)で部品的コードをいろいろ書いてみる

Lambda(python)で部品的コードをいろいろ書いてみる:

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()

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)