0
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?

CDK を使って AWS を構築しながらアプリケーション開発

Last updated at Posted at 2022-09-06

AWS CDK とは

AWS CDK は Python や TypeScript など一般のプログラミング言語で記述でき、ほとんどの AWSサービス をカバーしている CloudFormation の拡張機能です。CloudFormation よりも一般に少ないコード量で記述ができます。

事前準備

前提

  • cdk version 2.39.0
  • npm version 8.18.0

AWS CDK CLI のインストール

npm install -g aws-cdk
cdk --version

AWSアカウントのブートストラップ

CDK はデプロイ中、 S3 にファイルアップロードをするためブートストラップという作業します。この作業は 初回のみ です。

# Get the account ID
aws sts get-caller-identity

# Bootstrap the account
cdk bootstrap aws://ACCOUNT-NUMBER/REGION

異なるアカウントとリージョンを使用したい場合は、必ずそれぞれをブートストラップしてください。

CDK で 実装 ( AWS リソースの定義)

TypeScript で進めます。次のコマンドで空プロジェクトを作成します。

mkdir hogehoge && cd hogehoge
cdk init app --language=typescript

# CDKがデプロイのために使用するS3バケットを作成(対象アカウント、リージョンにつき1回だけ実施)
cdk bootstrap
.
├── README.md
├── bin
│   └── hogehoge.ts # 最初に読まれるファイル。環境変数やタグはここで定義
├── cdk.json
├── jest.config.js
├── lib
│   └── hogehoge-stack.ts # ここでさまざまな AWS リソースを定義していく
├── node_modules
├── package-lock.json
├── package.json
├── test
│   └── hogehoge.test.ts
└── tsconfig.json

実装する上での参考資料

空プロジェクトが作れたら、いざ、実装! なのですが、どうしたら良いか 分からないという方、ご安心を!
AWS が公式にサンプルコードを公開しています。ほぼコピペで AWS を定義できてしまいます。

例えば、。

  • S3の静的ホスティングを構築したい場合
  • API Gateway + Lambda + DynamoDB でサーバレスアプリケーション環境を構築したい場合

みたいな感じです。

CloudFormataion テンプレートの出力

定義したリソースは、次のコマンドで CloudFormation テンプレートを出力できます。実行結果は cdk.out/HogeHogeStack.template.json に出力されます。

cdk synth

CDK では、下記の環境変数を参照することで AWS アカウント ID と リージョン を取得できます。

  • CDK_DEFAULT_ACCOUNT
  • CDK_DEFAULT_REGION

--profile オプションで AWSプロファイル を指定すれば切り替えることができます。

AWS にデプロイ

作成した CDK は AWS にデプロイしてみましょう。全部が完成していなくても少しずつデプロイしながら実装してみましょう。

cdk deploy --require-approval never --hotswap

--require-approval 承認が必要な場合の変更レベルで never を指定すれば承認不要になります。
--hotswap CloudFormation を介さずに直接 AWSリソース が更新される。AWSリソースに変更がなく、ソースコードのみに変更がある場合は、このオプションを付けることで ソースコードのみをAWSに反映できます。便利です。(Lambda 関数、Step Functions ステート マシン、および Amazon ECS コンテナ イメージをサポートしています。)

アプリケーション開発

ローカルでソースコードを変更したら 次のコマンドで AWS に自動デプロイが可能です。watch しておくと CloudWatch ログの内容がリアルタイムに出力されるため、こちらも開発する上でとても便利です。

cdk watch

cdk.json

watch 対象は cdk.json で定義されています。例えば、js ファイルを watch 対象にする場合はデフォルトだと js が exclude されているため、削除すれば良いです。

cdk.json
{
  "app": "npx ts-node --prefer-ts-exts bin/hogehoge.ts",
  "watch": {
    "include": [
      "**"
    ],
    "exclude": [
      "README.md",
      "cdk*.json",
      "**/*.d.ts",
-     "**/*.js",
      "tsconfig.json",
      "package*.json",
      "yarn.lock",
      "node_modules",
      "test"
    ]
  },
:
0
1
1

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
0
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?