[初心者向け]AWS CDK触ってみた!S3バケットをコード化してデプロイしてみた編
こんにちは!前越です。
前回の記事「[初心者向け]AWS CDK触ってみた!環境構築編」では、AWS CDK (Cloud Development Kit) を使うための準備を整えました。
皆さん、CDK環境のセットアップは無事に完了しましたか?
今回はその続きとして、いよいよ AWS CDK を使って実際にAWSリソースを作成 していきます!
今回やること
AWS CDK を利用して、最も基本的なストレージサービスの一つである S3 バケット を TypeScript で定義し、AWS 環境にデプロイします。
具体的には、以下のステップで進めていきます。
- CDKプロジェクトの初期化
- S3バケットを定義するコードの記述
- CDKコマンドによるデプロイ
- デプロイ結果の確認
- リソースの削除
S3バケットはシンプルながら非常に多くの用途で使われるため、CDKの最初のステップとして学ぶには最適です ✨
事前準備
前回の記事で解説した以下の環境が構築されていることを前提とします。
- Node.js (npm 含む)
- AWS CLI (認証情報設定済み)
- AWS CDK (グローバルインストール済み)
- CDKブートストラップ (実行済み)
まだの方は、ぜひ前回の記事を参考に準備を済ませてくださいね!
やってみる
1. CDKプロジェクトの初期化
まずは、CDKプロジェクト用のディレクトリを作成し、その中でCDKプロジェクトを初期化します。
mkdir my-cdk-s3-project
cd my-cdk-s3-project
cdk init app --language typescript
cdk init app --language typescript コマンドを実行すると、TypeScript を使ったCDKアプリケーションの雛形が生成されます。
無事 \ ✅ All done! /と表示されれば成功です。
プロジェクトのディレクトリ構造は以下のようになります(主要なもののみ抜粋)。
.
├── bin/
│ └── my-cdk-s3-project.ts # CDKアプリケーションのエントリーポイント
├── lib/
│ └── my-cdk-s3-project-stack.ts # メインのスタック定義ファイル
├── package.json
├── tsconfig.json
└── cdk.json
bin/my-cdk-s3-project.ts: CDKアプリケーションのエントリーポイントです。
ここで lib/ ディレクトリ内のスタックをインスタンス化します。
lib/my-cdk-s3-project-stack.ts: ここにAWSリソースを定義するコードを記述していきます。今回の主役です!
2. S3バケットを定義するコードの記述
それでは、lib/my-cdk-s3-project-stack.ts ファイルを編集して、S3バケットを作成するコードを記述しましょう。
エディタで lib/my-cdk-s3-project-stack.ts を開いて、以下のように編集します。
lib/my-cdk-s3-project-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3'; // S3モジュールをインポート
export class MyCdkS3ProjectStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// S3バケットを作成する
new s3.Bucket(this, 'MyFirstCdkBucket', {
// バケット名はCDKがユニークな名前を自動生成しますが、
// 明示的に指定したい場合は bucketName プロパティを使用します。
// ただし、バケット名はグローバルでユニークである必要があるため注意が必要です。
bucketName: 'cdk-s3-for-maegoshi',
versioned: true, // バージョニングを有効にする
removalPolicy: cdk.RemovalPolicy.DESTROY, // スタック削除時にバケットも削除する (開発時向け)
autoDeleteObjects: true, // スタック削除時にバケット内のオブジェクトも自動削除する (開発時向け)
});
}
}
3. CDKコマンドの実行
コードが書けたら、いよいよCDKコマンドを使ってAWS環境に反映させていきましょう!
- cdk synth (シンセサイズ)
まず、cdk synth コマンドを実行します。これは、記述したTypeScriptコードをAWS CloudFormationテンプレートに変換するコマンドです。
cdk synth
実行すると、CloudFormationテンプレート (YAML形式) が標準出力に表示されます。
ここでエラーが出なければ、コードの構文は問題ないということです。
- cdk deploy (デプロイ)
いよいよデプロイです! cdk deploy コマンドを実行すると、CloudFormationを通じてAWS環境にリソースが作成(または更新)されます。
cdk deploy
✅ MyCdkS3ProjectStack のようなメッセージが表示されればデプロイ成功です!🎉
4. デプロイ結果の確認
S3バケットが作成されたか、AWSマネジメントコンソールで確認してみましょう。
- AWSマネジメントコンソールにログインします。
- サービス検索で「S3」と入力し、S3の管理画面に移動します。
- バケット一覧に、CDKが作成したバケットが表示されているはずです!
また、CloudFormationの管理画面も確認してみましょう。
- サービス検索で「CloudFormation」と入力し、CloudFormationの管理画面に移動します。
- スタック一覧に MyCdkS3ProjectStack という名前のスタックが作成され、ステータスが CREATE_COMPLETE になっていることを確認できます。
これで、CDKを使ってコードからS3バケットをプロビジョニングできました!
- スタック一覧に MyCdkS3ProjectStack という名前のスタックが作成され、ステータスが CREATE_COMPLETE になっていることを確認できます。
5. リソースの削除
作成したリソースを削除するのも簡単です。cdk destroy コマンドを実行します。
cdk destroy
確認のプロンプトが表示されるので、y を入力して進めます。
これにより、CloudFormationスタックが削除され、設定したS3バケットも一緒に削除されます。
まとめ
今回は、AWS CDK と TypeScript を使って S3 バケットを作成し、デプロイ、そして削除するまでの一連の流れを体験しました。
「マネジメントコンソールでポチポチ操作する方が簡単なのでは?」と思っていた方もいるかもしれません。確かに、最初の環境構築には少し手間がかかる部分もあります。
しかし、一度環境ができてしまえば、数行のコードといくつかのコマンドだけで、AWS上にリソースを確実に、そして何度でも同じようにプロビジョニングできる 手軽さと強力さを感じていただけたのではないでしょうか。
ぜひ皆さんも、まずは簡単なリソース作成からAWS CDKに触れてみてください!
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新ITテクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。