AWS S3의 설정 정보를 lambda(python + boto3)로 취득했을 때의 메모

소개



AWS S3의 설계서를 만들게 되어 화면을 보면서 설정값을 복사하고 있으면 의식이 없어져 좌절했으므로 lambda에서 취득한 json을 설계서라고 했습니다.

공식 자료에서는 어느 것이 어느 설정인지 알기 어렵고, qiita에도 없는 것 같기 때문에 스스로 때문에 1개 1개 조사했습니다
htps : // 보토 3. 아마조나 ws. 코 m/v1/도쿠멘들 온/아피/ㅁ st/레후 렌세/세 rゔ ㄱ세 s/s3. HTML #C

본문



설정 정보 취득에 이용한 메소드 리스트



모든 인수는 버킷 이름입니다.

import boto3
client = boto3.client('s3')
client.method(
    Backet='backet_name'
)



메소드 이름
화면의 해당 부분


get_bucket_versioning()
속성 > 버전 관리

get_bucket_logging()
속성 > 서버 액세스 로깅

get_bucket_website()
속성 > Static website hosting

get_bucket_location()
속성 > 객체 수준 로깅

get_bucket_encryption()
속성 > 기본 암호화

get_object_lock_configuration()
속성 > 객체 잠금

get_bucket_tagging()
속성 > Tags

get_bucket_accelerate_configuration()
속성 > Transfer acceleration

get_bucket_notification_configuration()
속성 > Events

get_bucket_request_payment()
속성 > 요청자 지불

get_public_access_block()
액세스 권한 > 공용 액세스 설정

get_bucket_acl()
액세스 권한 > 액세스 제어 목록

get_bucket_policy()
액세스 권한 > 버킷 정책

get_bucket_cors()
액세스 권한 > CORS 설정

get_bucket_lifecycle_configuration()
관리 > 라이프사이클

get_bucket_replication()
관리 > 복제

list_bucket_analytics_configurations()
관리 > 분석

list_bucket_metrics_configurations()
관리 > 지표

list_bucket_inventory_configurations()
관리 > 인벤토리


※개요는 보통의 파일이나 폴더이므로, 다른 것을 참고해 주세요.

코드



코코

show-S3-setting.py

# S3の設計書用の設定情報取得lambda
# bucketごとに情報を設定する

import json
import boto3
from datetime import date, datetime, timedelta

def lambda_handler(event, context):

    client = boto3.client('s3')
    #設定情報を取得するバケットリストを取得
    buckets = client.list_buckets()

    # 設定情報を代入するjson
    json_buckets_setting = {}
    json_buckets_setting['Owner'] = buckets['Owner']
    json_buckets_setting['Buckets'] = []

    for bucket in buckets['Buckets']:
        setting_info = {}

        # 引数が全てBucketなのでevalでメソッドを実行する
        client_methods = [
            'get_bucket_accelerate_configuration', 'get_bucket_acl', 'get_bucket_cors', 'get_bucket_encryption', 'get_bucket_lifecycle_configuration', 'get_bucket_location', 'get_bucket_logging', 'get_bucket_notification_configuration', 'get_bucket_policy_status', 'get_bucket_request_payment', 'get_bucket_tagging', 'get_bucket_versioning', 'get_bucket_website', 'get_object_lock_configuration', 'get_public_access_block', 'list_bucket_analytics_configurations', 'list_bucket_inventory_configurations', 'list_bucket_metrics_configurations'
        ]
        for method_name in client_methods:
            response = None
            try:
                response = eval("client." + method_name)(
                    Bucket=bucket['Name']
                )
            except:
                pass
            setting_info[method_name] = response

        #メソッド毎に設定値を代入
        bucket["s3_setting"] = setting_info
        json_buckets_setting['Buckets'].append(bucket)

    return json.dumps(json_buckets_setting, default=json_serial)

# 日付タイプの変換
def json_serial(obj):
    if isinstance(obj, (datetime, date)):
        # 時差の修正9時間
        obj = obj - timedelta(hours=-9)
        return obj.strftime('%Y/%m/%d %H:%M')
    raise TypeError("Type %s not serializable" % type(obj))




결론



이제 설계 문서를 최신화하는 것이 매우 쉬워졌습니다
그리고 같은 S3 만드는 것도 이 값과 boto3의 메소드 사용해 만들 수 있을 것・・・

다음도 할 수 있으면 하고 싶은 예정
cloudfront의 설정 정보를 lambda(python + boto3)로 취득했을 때의 메모
lambda 설정 정보를 lambda (python + boto3)로 얻은 메모
API Gateway의 설정 정보를 lambda(python + boto3)로 취득했을 때의 메모

좋은 웹페이지 즐겨찾기