0
0

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】もう迷わない、AWS CDKのはじめかた【CDK】

Last updated at Posted at 2024-12-21

はじめに

CDKを始めるにあたり、AWSドキュメントを参考に環境設定を試してみました
ドキュメントだけでは詰まったり方法に迷うところがあったので
手順の画面キャプチャと発生したエラーやその対応内容などを記事にしました

【CDKに関するAWSドキュメント】

この記事のゴール

AWS CDK環境を構築してローカル環境のVisualStudioからAWS環境にCloudFormationのスタックを反映する

AWS CDK のはじめかた

1.ローカルPC側の環境準備 ①インストーラーからツールのインストール

①VisualStudioCodeのインストール

私が試した環境ではVisualStudioCode(VSCode)を利用してローカル環境でCDKを利用しました
VSCodeのインストーラーは以下のページよりダウンロードしてください

②npmインストール

CDK関連のツールをインストールする際にnpmコマンドを使うため、npmもインストールしてください
インストーラーは以下のページよりNode.jsをダウンロードしてください

インストーラーからインストールが完了したら、Windows環境ではパスの設定をしてください

私の環境では「Path」に
C:\Program Files\nodejs
を追加しました

2.ローカルPC側の環境準備 ②VSCodeの環境整備

①AWS CLIのインストール

以下のURLよりインストーラーをダウンロードしてAWS CLIのインストールを実行してください
これによりターミナルから「aws~」のコマンドが実行可能になります

インストールが完了したら、VSCodeを再起動して以下のコマンドを実行し、バージョンが表示されることを確認してください

aws -- version

image.png

②CDK CLI のインストール

VSCodeのヘッダメニューから「View」→「Terminal」を選択してターミナルを開きます

ターミナルで以下のコマンドを実行してAWS CLIをインストールします

npm install -g aws-cdk

CDKのバージョンによって、この先のBootstrap実行時にエラーが出ることがあります
エラーが発生する場合は以下のコマンドでバージョン指定をおこなっってインストールしなおしてください

npm install -g aws-cdk@2.163.1 

image.png

npm list -g

インストールされたらWindowsの環境変数にパスを設定してください
パスの確認は以下のコマンドで行えます

image.png
このコマンドにより確認できる
C:\Users\【ユーザー名】\AppData\Roaming\npm
をパス登録してください
パスが通っていれば、バージョン確認のコマンドでバージョンが確認できます

cdk --version

image.png

【発生しやすいエラー】
①powershell(.ps1)の実行を無効に設定されている
→「Get-ExecutionPolicy」コマンドを実行した際に「Restricted」となっているとCDKのコマンドが実行できなくなっています
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
を実行して設定を変更してください

2.AWS側の準備(IAM Identity Center)

①ユーザ作成

ローカルPC側のCDKからデプロイコマンドを使ってAWS環境にスタック作成をする際に必要になる認証情報の設定を行います
AWSコンソール画面から「IAM Identity Center」からユーザー追加を行います
※画面の指示に従い、ユーザ情報を入力して追加を行ってください
image.png

②ユーザグループの作成

各種操作の許可を与えるためのユーザーグループを設定します
image.png
グループには先ほど作成したユーザを含めるようにします
image.png

③許可セットの作成

image.png

必要な許可セットは以下のサービスに関するものを設定してください
・AmazonEC2ContainerRegistry~
・AmazonS3~
・AmazonSSM~
・AWSCloudFormation~
・AWSConfigUserAccess
・IAM~
・AWSLambda~

④許可セットの紐づけ

AWSアカウントから作成したユーザやユーザグループに対して許可セットの設定を行います
image.png

3.CDKアプリケーションの作成:初期設定

①CDK プロジェクトの作成

以下のコマンドでプロジェクトの初期構成を作成します
※私はPythonが使い慣れているので言語はPythonを指定しています

cdk init app --language python

image.png

↓このようにプロジェクトの中身ができます
image.png

Pythonの場合は以下のコマンドを実行して実行環境に必要な設定を行います

.venv/Scripts/activate
python -m pip install -r requirements.txt

image.png

②AWS環境の設定

SSO情報を入力してAWS環境との接続セッションを確立します

aws configure sso

上記コマンドを実行すると「SSO start URL」「SSO Region」などの入力を求められます
これらの値はAWSの「アクセスポータル」画面から確認することができますので、それらの値を入力してください
↓こんな画面から参照できる
image.png

③CDK スタックの環境を設定する方法

プロジェクトの「app.py」というファイルにアカウントIDとリージョン名を設定します
#!/usr/bin/env python3
import os

import aws_cdk as cdk

from cdk_pj.cdk_pj_stack import CdkPjStack

app.py
app = cdk.App()
CdkPjStack(app, "CdkPjStack",
    # If you don't specify 'env', this stack will be environment-agnostic.
    # Account/Region-dependent features and context lookups will not work,
    # but a single synthesized template can be deployed anywhere.

    # Uncomment the next line to specialize this stack for the AWS Account
    # and Region that are implied by the current CLI configuration.

    #env=cdk.Environment(account=os.getenv('CDK_DEFAULT_ACCOUNT'), region=os.getenv('CDK_DEFAULT_REGION')),

    # Uncomment the next line if you know exactly what Account and Region you
    # want to deploy the stack to. */

    env=cdk.Environment(account='【アカウントID】', region='【リージョン名】'),

    # For more information, see https://docs.aws.amazon.com/cdk/latest/guide/environments.html
    )

app.synth()

④AWS 環境のブートストラップ

以下のコマンドを実行することで、CDK デプロイのために環境が準備されます。

cdk bootstrap --profile 【プロファイル名】

【発生しやすいエラー】
①CDKのバージョンによってはエラーが発生する
→npm install -g aws-cdk@2.163.1 で別バージョンをインストールして試してください
②Encountered a permissions error performing・・・などの権限関連エラーが出る
→AWS関連の設定に記載したポリシー設定を追加/修正してください

↓成功するとこのようなログが出る
image.png
image.png

AWS側を確認すると、CloudFormationのコンソール画面でCDKで作成したスタックが確認できる
image.png

4.CDKアプリケーションの作成:リソースの作成とデプロイ

①Lambda関数の作成

AWSに反映するリソースの例として今回はLambda関数を作成します
プロジェクトのフォルダ内にあるスタック定義のファイル(今回はcdk_pj_stack.py)を編集します

編集内容はAWSドキュメントのステップ6の内容と同じく、「Hello World!」を返すように修正します

image.png

②CloudFormationのテンプレートを作成

以下のコマンドを実行し、CloudFormationのテンプレートを作成します

cdk synth

成功すると生成されたCloudformationテンプレートの内容がログとして出力されます
image.png

③デプロイ

以下のコマンドを実行し、AWS環境にCloudFormationのテンプレートを反映してスタックを作成します

cdk deploy --profile 【プロファイル名】

image.png

セッションのタイムアウトにより、SSOの再接続が必要な場合があります
エラーメッセージで「Please log in using "aws sso login"」というメッセージが表示された場合は
以下のコマンドからSSO接続を再度行ってください

aws configure sso

5.結果確認

①スタック一覧で確認

image.png

②Lambda関数ができたことを確認

image.png

さいごに

AWSドキュメントのチュートリアルを進めることで、経験がないAWSサービスの理解を深めることができます
ただし、実際に動かしてみると意外と予想外のエラーでつまづくこともあるので
もし余裕があればドキュメントを読むだけではなく実際に手を動かしてみてください

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?