LambdaでS3にアップロードされたjsonパラメーターを読み込む
ここ最近、業務でCloudFormationを使用する機会がかなり多くなりました。
主にStacksetsの機能を使用して複数のアカウントに対して同時デプロイを行うのですが
Stacksetsの実行はGUIでパラメーター入力しているような状態で
あまりイケてる感じはしません。
ということで、以前に勉強用として作ったStackTemplateを活用して
「S3へのパラメーターファイル(json)のアップロードをトリガーにCFnを実行する」Lambdaを作ってみたいと思っています。
とはいえほとんど知見がないので今日はS3へアップロードしたjsonファイルを
PythonのDictへ格納するところまでしか進みませんでした(作業時間:約3時間)涙
OutPut
import json import boto3 import logging import pprint client = boto3.client('s3') s3 = boto3.resource('s3') ##S3にアップロードされたパラメーターファイルを取得 def importParameter(event, context): # set logging logger = logging.getLogger() logger.setLevel(logging.INFO) # set "bucket name" and "object name" BUCKET = 's3-lambda-cfn-bucket' TEST_FILE = 'parameters/parameter.json' # get s3 object try: response = client.get_object(Bucket = BUCKET, Key = TEST_FILE) body = response['Body'].read() bodystr = body.decode('utf-8') #bodystr = json.dumps(body) js = json.loads(bodystr) except Exception as e: return logger.error("Failed to get object: {}".format(e)) return { 'parameters': js }