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?

AWS CDKを導入してみた記録

Last updated at Posted at 2024-07-22

目次

AWS CDK とは

IaCをAWSで実現するためのフレームワークである。
Infrastructure as Code (IaC) とは、手動のプロセスや設定の代わりにコードを使用してコンピューティングインフラストラクチャをプロビジョニングおよびサポートできることをいう。→ コードで管理できるので、Gitに残せる!

  • メリット
    • 環境を簡単に複製できる
      • 開発環境、ステージング環境、本番環境など、環境ごとに同じインフラを作成するときに、IaCを使うことで、一つの環境で作成した設定を使いまわして他の環境に作成することが容易にできる。
    • 設定エラーの低減に貢献する
      • 設定内容を更新したときに、手動でAWS環境を作成している場合は、他の環境の設定も手動で変える必要が出てくるので、ヒューマンエラーが起こりうるが、IaCを利用することで複数の環境に同じ設定を反映しやすい。
  • デメリット
    • 一つしか環境を作らない場合、逆に手間になるおそれがある
    • 対応していないAWSのサービスもある

余談: AWSでIaCの手法としてAWS CloudFormationもある。AWS CloudFormationの場合はJSONやYAML形式での記述になる。そのためAWS CloudFormationはAWS初心者やデータ記述言語に不慣れな開発者にとっては、敷居が高い可能性がある。

参考ソース元
  • AWS CDK について

The AWS Cloud Development Kit (AWS CDK) is an open-source software
development framework for defining cloud infrastructure in code and
provisioning it through AWS CloudFormation.
The AWS CDK consists of two primary parts:
AWS CDK Construct Library – A collection of pre-written modular and reusable pieces of code, called constructs, that you can use, modify, and integrate to develop your infrastructure quickly. The goal of the AWS CDK Construct Library is to reduce the complexity required to define and integrate AWS services together when building applications on AWS.
AWS CDK Toolkit – A command line tool for interacting with CDK apps. Use the AWS CDK Toolkit to create, manage, and deploy your AWS CDK projects.

公式より参考: What is the AWS CDK?

  • IaCについて

Infrastructure as Code (IaC) とは何ですか?
Infrastructure as Code (IaC) とは、手動のプロセスや設定の代わりにコードを使用してコンピューティングインフラストラクチャをプロビジョニングおよびサポートできることをいいます。どのようなアプリケーション環境であっても、オペレーティングシステム、データベース接続、ストレージなどの多くのインフラストラクチャコンポーネントが必要です。デベロッパーは、アプリケーションを開発、テスト、デプロイするためのインフラストラクチャを定期的に設定、更新、メンテナンスする必要があります。
手動のインフラストラクチャ管理は時間がかかり、エラーも発生しやすくなります。このことは、アプリケーションを大規模に管理する場合に特に当てはまります。Infrastructure as Code (IaC) により、その状態に至るまでのステップをすべて含めなくても、インフラストラクチャの望ましい状態を定義できます。インフラストラクチャ管理が自動化されるため、デベロッパーは環境の管理ではなく、アプリケーションの構築と改善に集中できます。組織は Infrastructure as Code (IaC) として使用して、コストを管理し、リスクを軽減するとともに、新しいビジネスチャンスに迅速に対応します。

公式より参考: Infrastructure as Code (IaC) とは何ですか?

AWS CDKを 導入してみよう!

公式の手順を参考に以下の手順で実際に導入する。

  1. AWS アカウントと管理者ユーザーを作成する
  2. 作成したアカウントのアクセス権を設定する
  3. AWS CLIをインストールする
  4. Node.jsとAWS CDKで使用する言語をインストールする
  5. AWS CDK CLIをインストールする
  6. AWS CDK CLIのためのセキュリティ認証情報を設定する
  7. AWS 環境をブートストラップする
  8. (オプション) 拡張のAWS CDK toolsをインストールする
  9. CDK でAWS サービスを作成する

1. AWS アカウントと管理者ユーザーを作成する

AWSのサービスを使用するために、AWS アカウント(rootユーザ)を作成する。
その後、rootアカウントは乗っ取られると危険なので、操作制限のある管理者ユーザを作成し、以後管理者ユーザーで開発を行う。

参照: なぜAWSのrootユーザの利用が危険なのか?〜アカウント作成後の運用方法についてまとめてみた〜

2.作成したアカウントのアクセス権を設定する

作成した管理者IAMにポリシーAdministratorAccessを割り振る。
AdministratorAccessが設定されることでAWS CDK CLI でアクセス可能になる

3. AWS CLIをインストールする

AWS CLIの最新バージョンのインストールまたは更新を参考にインストールする。

4. Node.jsとAWS CDKで使用する言語をインストールする

AWSを任意の言語(Typescript, Javascript, Python, Java, C#, Go)で使用するとしても、npmでaws cdkをインストールするので、まずNode.js必要。

  • Node.jsのインストール先はコチラ

その後、使用したい言語をインストールする。

  • Typescript の場合
    npm -g install typescript
    

5. AWS CDK CLIをインストールする

ついにAWS CDK を利用するためのパッケージ aws-cdkをインストールする

npm i -g aws-cdk

インストールが成功したかどうかの確認で以下のコマンドを実行する

cdk --version

もしインストール中(npm i -g aws-cdk)にエラーが生じた場合、一度以下のコマンドでアンインストールし、再度インストールする

npm uninstall -g aws-cdk

6. AWS CDK CLIのためのセキュリティクレデンシャルを設定する

セキュリティクレデンシャルをCDK CLIに設定することでCDK CLIからAWSのリソースにアクセスできるようになる。故に、設定しないと何もAWSのリソースに干渉できないので、設定必須。

参考:

IAM Identity Center SSOで認証する場合 (動作確認済み)
  1. IAM Identity CenterでAWS CDKを使用するためのユーザを作成する
  2. 1.で作成したユーザを管理者アクセス権(AdministratorAccess)を割り当てたグループに入れる
  3. プロファイルを作成する
    • aws configure sso
    • aws sso login XXXでログイン可能になる(XXXには作成したプロファイルのSSO session nameをいれる)
IAM roleで認証する場合 (← 動作未確認)

(注意: 各コマンドのset以降は任意で設定してください)

aws configure set role_arn arn:aws:iam::123456789012:role/defaultrole
aws configure set source_profile default
aws configure set role_session_name session_user1
aws configure set region ap-northeast-1
$ aws configure set output json

7. AWS 環境をブートストラップする

CDK stack をデプロイする前にデプロイ環境をブートストラップする必要がある。
以下の例のコマンドを参照に、ブートストラップする。
対象のIAM用にアクセスキーを作成していなかったため、AWSのサービスであるCloud Shellで以下を実行した。

cdk bootstrap aws://ACCOUNT-NUMBER/REGION --profile 設定を追記したアカウントのプロファイル

8.(オプション) 拡張のAWS CDK toolsをインストールする

Visual Studio CodeでAWS CDKの開発を効率よく行えるようにするための拡張機能(AWS Toolkit for Visual Studio Code)をインストールする。この拡張機能を使用するための準備として、以下のパッケージも合わせてインストールする。

  • 使用する言語のSDK
  • AWS SAM CLI
  • Docker
  • 使用する言語のパッケージマネージャー

参照: Installing the AWS Toolkit for Visual Studio Code

9. CDK でAWS サービスを作成する

公式のチュートリアルを参照に実行する。

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