Open4
AWS CDKの勉強なのだ

Stack=デプロイ単位のこと
Stage=環境のこと

CDK_DEFAULT_ACCOUNT
とCDK_DEFAULT_REGION
という環境変数がawsのprofile経由で渡されるらしい。

cdkがv2.18.0、v1.150.0未満だとawsのssoによる参照ができない。
なので実行時はaws-vault等との併用が必要になる
aws-vault exec プロファイル名 -- npx aws-cdk@1.x deploy
なお、以降のバージョンでは以下のようにssoのログインを行った上で実行が可能
aws sso login --profile 対象プロファイル名
npx aws-cdk@1.x deploy --profile 対象プロファイル名

LambdaでAWS Parameters and Secrets Lambda 拡張機能を使う場合
ssm:GetParameter
とkms:DecryptSecureString
のロールを前もってLambdaに付与しておく
import {
aws_lambda as lambda,
} from 'aws-cdk-lib'
const paramsAndSecrets = lambda.ParamsAndSecretsLayerVersion.fromVersion(
lambda.ParamsAndSecretsVersions.V1_0_103,
{
cacheSize: 500,
logLevel: lambda.ParamsAndSecretsLogLevel.DEBUG,
}
);
CDKのバージョンをそれなりにちゃんと上げてればこのパラメータ名がlambdaの関数を作成する際にパラメータとして設定できるのでセットすれば良い
ただこれはイメージを利用しない場合だけ。
イメージを利用する場合は拡張のレイヤーを自分で埋め込む必要がある。
FROM public.ecr.aws/aws-cli/aws-cli:2.15.29 as extension-layer
ARG AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION:-"ap-northeast-1"}
ARG AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-""}
ARG AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-""}
ENV AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}
ENV AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
ENV AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
RUN mkdir -p /opt
RUN yum update -y \
&& yum install -y unzip
RUN curl $(aws lambda get-layer-version-by-arn --arn arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension:2 --query 'Content.Location' --output text) --output layer.zip
RUN unzip layer.zip -d /opt
RUN rm layer.zip
FROM 実行イメージ
COPY /opt /opt
この通り、厄介なところでAWSの認証情報でビルドしないと行けなかったりする
この拡張の実装はいわゆるプロキシであるためここまでやるよりはアプリケーション側で吸収させるほうが良い可能性もある・・・