先輩がノリで作ったAWS
先輩が開発環境を構築。ノリでAWS環境に構築したらしい
そこで後輩はコード化と本番環境構築を対応します
完了したので手順などのメモです
全5話
- AWS CDKの導入(この記事)
- CodePipelineのコード化
- EventBridge Schedulerのコード化
- ECS clusterとserviceのコード化
- ElastiCacheのコード化、本番環境構築
開発環境とコード化の対象
リポジトリはAPI用、管理画面用、バッチ処理用の3つ
バッチ処理はEventBridge Schedulerで定義している
APIと管理画面はGithubのdevelopブランチにpushされたらCodePipelineでECSサービスのデプロイまで完了するように設定されている
先輩から開発環境構築を行った結果コード化したいとの要望があったリソースは下記
- ECS(クラスタ、サービス、タスク定義)
- VPCの基本機能らへん(サブネットとか)
- CodePipeline(設定ややこしいので絶対やりたい)
- EventBridge Scheduler
選定とか
- AWS環境でコード化なのでAWS CDKを使用する
- インフラ用のリポジトリを作成する
- アプリケーションの言語がサーバーサイドkotlinなので合わせてkotlinに決定
早速AWS CDKの導入
コマンド実行してインストールとか構築とか
$ npm install -g aws-cdk
$ mkdir infra
$ cd infra
$ gradle init
$ cdk bootstrap
試しでS3のバケットを作成
App.kt
package infra
import software.amazon.awscdk.App
fun main(args: Array<String>): Unit {
val app = App()
InfraStack(app, "developmentInfraStack")
app.synth()
}
InfraStack.kt
package infra
import software.amazon.awscdk.Stack
import software.amazon.awscdk.services.s3.Bucket
import software.constructs.Construct
class InfraStack(parent: Construct, name: String): Stack(parent, name) {
init {
Bucket.Builder.create(this, "cdkTestBucket").build()
}
}
cdk deploy
でデプロイ実行すると、
CloudFormationにスタック(developmentInfraStack)が作成されて
S3にもバケットが作成されました!
不要なので cdk destroy
で削除
リソース残るタイプなのでバケット削除も実行
次回
CodePipelineを少しだけ触ったことがあったのでCodePipelineからコード化していきます