AWS 環境構築 CDK用環境の設定
AWSのCDKにて基本的な設定を実施します。
AWSアカウントを作成した直後ですとデフォルトネットワークが存在しますので、不要でしたらAWS の環境設定 デフォルトネットワークの削除 を参照してください。(削除は任意です。)
AWS CLIのセットアップ
AWS CLI をインストールします。
AWS のプロファイル設定
CDKをデプロイする際にAWSプロファイルを使用しますので、AWSプロファイルを設定します。
AWS SSOを使用する場合は以下のコマンドを実行し、プロンプトに応じてプロファイルを設定してください。
aws sso configure
CDK環境の整備
CDKをTypescriptにて実装します。Node.JSがインストールされていることを前提とします。
以下のコマンドにてCDKをインストールします。
npm install -g aws-cdk
次に CDK 用のディレクトリを作成し、次のコマンドにて初期化処理を行います。
cdk init app --language typescript
CDKを環境毎に設定出来るようにしたいと思います。
config/type.ts
を作成し環境名を設定出来るように下記の定義を作成します。
config/constant.ts
を作成し、環境に限らず固定値を設定する場合に設定するファイルを作成しアプリ名を設定します。
export const APP_NAME = 'base-infra'
config/index.ts
を作成し、設定ファイルをプロジェクトから読み込めるようにします。
export type Env = 'dev' | 'stg' | 'prod'
export type Config = {
env: Env
}
config/dev/index.ts
を作成し設定を入力します。
import { Config } from '../type'
const config: Config = {
env: 'dev',
}
export default config
import { Config, Env } from './type'
import dev from './dev'
export function getConfig(env: Env): Config {
switch (env) {
case 'dev':
default:
return dev
}
}
export * from './constant'
export * from './type'
CDKのデプロイ
空のCDKを作成しましたので、AWSアカウントに反映方法を確認するためデプロイを実行してみましょう。
次のコマンドを先程のCDK用ディレクトリにて一度ビルドします。
npm run build
AWS SSOを使用している場合は次のコマンドにてログインを実施します。
aws sso login --profile profile_name
次のコマンドにてCDKのbootstrap を実行します。
cdk bootstrap --profile profile_name
次のような結果を得ることが出来ます。
⏳ Bootstrapping environment aws://xxxxxxxxxxxxx/ap-northeast-1...
Trusted accounts for deployment: (none)
Trusted accounts for lookup: (none)
Using default execution policy of 'arn:aws:iam::aws:policy/AdministratorAccess'. Pass '--cloudformation-execution-policies' to customize.
CDKToolkit: creating CloudFormation changeset...
✅ Environment aws://xxxxxxxxxxxxx/ap-northeast-1 bootstrapped.
AWSのCloudFormationを参照するとCDKToolkit
と言うスタックが作成されていることが確認出来ます。
S3にはバケットが1つ作成されていることが確認出来ます。
続いて次のコマンドを入力し、Stackをデプロイします。
cdk deploy --profile profile_name
次のような結果を得ることが出来ます。
✨ Synthesis time: 3.51s
MbcBaseInfraStack: start: Building cc8ce15d106ee4b7de285ade39acd2ea5f67acf507dd0b8671f694fdebbb9c47:current_account-current_region
MbcBaseInfraStack: success: Built cc8ce15d106ee4b7de285ade39acd2ea5f67acf507dd0b8671f694fdebbb9c47:current_account-current_region
MbcBaseInfraStack: start: Publishing cc8ce15d106ee4b7de285ade39acd2ea5f67acf507dd0b8671f694fdebbb9c47:current_account-current_region
MbcBaseInfraStack: success: Published cc8ce15d106ee4b7de285ade39acd2ea5f67acf507dd0b8671f694fdebbb9c47:current_account-current_region
Stack undefined
MbcBaseInfraStack: deploying... [1/1]
MbcBaseInfraStack: creating CloudFormation changeset...
✅ MbcBaseInfraStack
✨ Deployment time: 11.59s
Stack ARN:
arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxxx:stack/MbcBaseInfraStack/d62190a0-90e1-11ef-8a44-0a43ec52e6e1
✨ Total time: 15.1s
CloudFormation を確認すると正常にデプロイが完了していることが確認出来ます。