1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CDKでAWS 環境の作成 VPCとRDS,S3編

Posted at

概要

CDKを使ってAWS環境を作成するときの方法についてまとめていこうと思います。
今回は作成するプロジェクトを分割しての作成例になります。
前回ではまとめて作成していたので分割してみました。

準備

  • 前回の転記部分もあります。詳細は前回を参照
  • AWS SummitのCDKハンズオンを見て準備をしましょう。
  • こちらでも簡単に準備手順を
    • AWS CLIのインストール
    • AWS Configureの設定
      • アカウントはCDKで作成するリソースにアクセスできる権限を付与しましょう。(お試しでやる場合はAdministrator権限の方がいいかもしれません)
    • node.jsのインストール
    • npm install -g aws-cdk のコマンドでcdkをインストール

プロジェクトの準備

  • TypeScriptでの例となります。
  1. 空のディレクトリを用意する。
  2. ディレクトリに移動して以下のコマンドを実行する
    • cdk init --language typescript
  3. 初期ディレクトリなどが作成されるのを待ちます。

ライブラリのインストール

  • 必要に応じて npm コマンドでライブラリをインストールします。以下のようなコマンドです。
    • npm install @aws-cdk/aws-ecs
    • npm install @aws-cdk/aws-batch
    • npm install @aws-cdk/aws-ec2
    • npm install @aws-cdk/aws-iam
    • npm install @aws-cdk/aws-ecr
  • 注意点
    • ライブラリのバージョンが一致していないとコンパイルエラーやdeploy時にエラーになるので package.json のバージョンを合わせて、 package-lock.jsonnode_modules 配下を削除して npm install を実施しましょう。

コンパイルの準備

  • ライブラリインストール後にプロジェクトを作成したディレクトリに移動して以下のコマンドを実行します。windowsの場合はライブラリのインストール時には停止する必要があるので注意を
    • npm run watch

各モジュールの説明

  • モジュールはgithubで公開しています。
  • /vpc
    • VPCの設定をまとめています。
    • こちらでVPC周りを先に作成して他の部分を作成していく流れになっています。
    • こちらのデプロイを先に実施しないとRDSの方で使用するVPCIDがとれずに失敗します。
  • /rds-s3
    • RDS,S3の設定をまとめています。

    • RDS用S3用それぞれソースを分けているため変更があった時も修正するべきソースをわかりやすいかなと思います。

    • ./bin/rds-s3.ts の方で以下のように設定することで複数のソースの定義を使えるようにしています。対象が増えた場合はさらに追記していきます。

          import { RdsS3Stack } from '../lib/rds-s3-stack';
          import { CdkRdsStack } from '../lib/cdk-rds-stack';
          import { CdkS3Stack } from '../lib/cdk-s3-stack';
          import { env } from 'process';
      
          const app = new cdk.App();
      
          new RdsS3Stack(app,'RdsS3Stack',{
              env: {
                  region: 'ap-northeast-1',
                  account: env.AWS_ACCOUNT,
          }});
          new CdkRdsStack(app,'CdkRdsStack',{
              env: {
                  region: 'ap-northeast-1',
                  account: env.AWS_ACCOUNT,
          }});
          new CdkS3Stack(app,'CdkS3Stack',{
              env: {
                  region: 'ap-northeast-1',
                  account: env.AWS_ACCOUNT,
          }});
      
    • デプロイするときはStack名を指定して実施します。ワイルドカードの指定も可能です。

      • cdk deploy * または cdk deploy CdkRdsStack の用に指定します。

CDKの定義

  • VPC

    • 今回はpublicとprivateのサブネット2種類、S3用のエンドポイントを作成する形にしています。
    • VPCのIDをパラメータストアに格納して他のモジュールで参照するときに使えるようにしています。
  • S3

    • Bucketの作成とライフサイクルで30日でオブジェクトを削除するようにしています。
      • prefix で削除対象を絞っています。
        const sdfDataBucket = new s3.Bucket(this, 's3-bucket-data-1', {
        bucketName: `s3-bucket-data-1-${this.region}-${this.account}`,
        blockPublicAccess:s3.BlockPublicAccess.BLOCK_ALL,
        lifecycleRules:[
            {
            expiration:cdk.Duration.days(30),
            prefix:'data',
            id:'delete for data'
            }
    
        ]
        });
    
    • 設定した結果はコンソールから確認できます。
      image.png
  • RDS

    • セキュリティグループの設定をこちらで実施しています。
    • master のユーザID,パスワードはパラメータストアに設定しています。
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?