ChaliceとCDKを組み合わせた場合、chaliceの設定がややこしいです。
公式ではstageの下にlambda_functions
を定義していますが、Chalice CDKではstagesと同階層にlambda_functions
を定義します。
stagesの下に定義しても有効になりませんでした。
.chalice/config.jsonの編集
- runtime/.chalice/config.json
{
"version": "2.0",
"app_name": "myapp",
"lambda_functions": {
"target_lambda_function": {
"lambda_timeout": 300
}
},
"stages": {
"dev": {
"api_gateway_stage": "api",
"environment_variables": {
"FOO": "BAR"
}
}
}
}
chaliceの設定をCDKで読み込むようにする
chaliceapp.pyでは、stage_configとしてruntime/.chalice/config.json
と別の定義を要求されます。設定が分散して不具合やオペレーションミスに繋がるため、runtime/.chalice/config.json
に一本化するのをおすすめします。
- infrastructure/stacks/chaliceapp.py
import os
import json
import aws_cdk as cdk
from chalice.cdk import Chalice
RUNTIME_SOURCE_DIR = os.path.abspath(os.path.join(
os.path.dirname(os.path.dirname(__file__)), os.pardir, "runtime"
))
config_file = os.path.join(RUNTIME_SOURCE_DIR, '.chalice', 'config.json')
with open(config_file, 'r') as fi:
stage_config = json.loads(fi.read())
class ChaliceApp(cdk.Stack):
def __init__(self, scope, id, **kwargs):
super().__init__(scope, id, **kwargs)
self.chalice = Chalice(
self,
"ChaliceApp",
source_dir=RUNTIME_SOURCE_DIR,
stage_config=stage_config["stages"][os.environment["STAGE"]],
)