🦁
【基本】CDKの初期設定とコマンド
はじめに
CDKを使用するために必要な設定を備忘録として残しておきます。
前提:Mac使用
インストール
AWS CLIをインストール
- ブラウザで、macOS
pkg
ファイルをダウンロードします。https://awscli.amazonaws.com/AWSCLIV2.pkg - ダウンロードしたファイルを実行し、その後は画面の指示に従います。
- インストールできたことの確認。表示されればOK。
which aws
aws --version
Node, npmをインストール
リンク、Homebrew、Nodebrewなどお好きな方法でインストールしてください。
インストールできたことを確認。
node -v
npm -v
AWS CDK, TypeScriptをインストール
npm install -g aws-cdk
npm install -g typescript
CDKのセットアップ
CDKアプリケーションの作成
mkdir cdk
cd cdk
cdk init app --language typescript
以下の様にテンプレートが展開されれば設計完了です。
各ディレクトリの説明
- bin:エントリーポイントとなるファイル置き場。libのStackを記載する。
- lib:Stackの設定を記載するファイル置き場。
- node_modules:package.jsonに記載されたパッケージのインストール先。
- test:Stackのユニットテスト置き場。
- .gitignore:gitに上げたくないファイル記載。
- .npmignore:npmパッケージを公開する際に、特定のファイルやディレクトリをパッケージに含めないようにするための設定ファイル。
- cdk.json:CDKアプリケーションの設定ファイル。
- jest.config.js:テスティングフレームワークであるJestの設定ファイル。
- package.json:プロジェクトの依存関係やスクリプトが定義されたファイル。
- package-lock.json:プロジェクトの依存関係の正確なバージョン。
- README.md:セットアップ手順などを記載。
- tsconfig.json:TypeScriptコンパイラの設定ファイル。
AWSアカウントの設定
CDKを操作できる権限を持つAWSユーザをコンソールから作成します。以下は権限例です。
実際にはフルアクセスではなく必要最小限の権限のみを与えることが望ましいです。
作成したユーザに対して、アクセスキーを発行しておきましょう。
- AWSCloudFormationFullAccess
- IAMFullAccess
- AmazonS3FullAccess
- AmazonEC2ContainerRegistryFullAccess
- AmazonSSMFullAccess
aws configure
でデフォルトユーザを設定可能です。
aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [ap-northeast-1]:
Default output format [None]:
AWSユーザを~/.aws/config
に登録しておくと、コマンドで簡単にユーザが切り替えられ便利です。例えば、環境毎に設定することもできます。
vi ~/.aws/config
[cdk-prod] // 任意の名称
aws_access_key_id = XXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXX
[cdk-stg] // 任意の名称
aws_access_key_id = XXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXX
// 実行時にprofileを指定するだけ
cdk deploy --profile cdk-prod
CDKコマンド
デフォルトユーザを設定していない場合は、全コマンドにprofile
指定必要です。
CDKを新しい環境(AWSアカウント x リージョン)でデプロイする際に、最初の一回だけ実行が必要なコマンドです。
S3、IAMロール、ECRなどCDKデプロイに最低限必要なリソースが作成されます。
cdk bootstrap
設定を反映する前に、ドライランしたい場合
cdk diff
設定反映
cdk deploy
Discussion