AWS CDK 使ってます
三日坊主 Cloudformation の記事を書いていましたが、最近は CDK を使っています。
ちょうど社内勉強会で話す機会があったので、 こちらにスライドを紹介させていただきます。 speakerdeck.com
そういえば、本番環境用の wrapper スクリプトも必要だなーってことで、適当に書いてみたのでそちらも。
./mycdk diff ./mycdk deploy
のように使っています
#!/usr/bin/env node const AWS_PRODUCTION_ACCOUNT_ID = '{YOUR_PRODUCTION_AWS_ACCOUNT_ID}' function confirm() { const yesno = require('yesno') const yes = yesno({ question: "It's production environment. Are you sure you want to continue? ([y]es/[n]o)", defaultValue: null, }) return yes } async function main() { process.argv.splice(0, 2) const command = process.argv[0] if (command == 'deploy') { console.log("checking environment...") const aws = require('aws-sdk') const sts = new aws.STS(); const data = await sts.getCallerIdentity({}).promise() const accountId = data.Account if (accountId === AWS_PRODUCTION_ACCOUNT_ID) { if (!await confirm()) { return } } } const argv = process.argv const spawn = require('child_process').spawn; const deploy = spawn('cdk', argv, { stdio: 'inherit' }) } main()
ちなみに ---profile
は使って(使えて)いません。
AWS SSO を使っている環境においての cdk --profile
がまだ対応していないためです。
なので、それぞれの環境の Command line or programmatic access
から、ACCESS_KEY / SECRET を取得し、ターミナル上に貼り付けて deploy しています。
※ nodejs 初心者です