Loading...

AWS 環境構築 CDK用環境の設定

Technology
Oct 23, 2024

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 を確認すると正常にデプロイが完了していることが確認出来ます。


関連記事

Top