35
28

More than 1 year has passed since last update.

お題は不問!Qiita Engineer Festa 2023で記事投稿!

先輩がノリで作ったAWSをちゃんとコード化してみた1 (AWS CDKの導入)

Last updated at Posted at 2023-06-19

先輩がノリで作ったAWS

先輩が開発環境を構築。ノリでAWS環境に構築したらしい
そこで後輩はコード化と本番環境構築を対応します
完了したので手順などのメモです

全5話

  1. AWS CDKの導入(この記事)
  2. CodePipelineのコード化
  3. EventBridge Schedulerのコード化
  4. ECS clusterとserviceのコード化
  5. 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)が作成されて
スクリーンショット 2023-06-07 16.06.40.png
S3にもバケットが作成されました!
スクリーンショット 2023-06-07 16.16.53.png
不要なので cdk destroy で削除
リソース残るタイプなのでバケット削除も実行

次回

CodePipelineを少しだけ触ったことがあったのでCodePipelineからコード化していきます

35
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
28