2
0

More than 1 year has passed since last update.

【AWS CDK】WSL2 Ubuntu環境上にAWS CDK v2環境を構築する

Last updated at Posted at 2023-06-24

はじめに

WSL2のUbuntuディストリビューション上に、AWS CDK v2の実行環境を構築する手順をまとめます。
すでに山ほどあるだろうと思ってググったのですが、断片的な情報が多い/余計な情報が付加されているものが多いので、自分用にまとめました。

環境

環境構築に用いたディストリビューションは下記のとおりです。

  • WSL2
    • Ubuntu 22.04.2 LTS

本稿の手順でWSL2 Ubuntu上にインストールされるもの、およびインストールされるバージョン(2023/6/24現在)は以下のとおりです。
Node.jsはOSに直接インストールするのではなく、nvmを利用してインストールします。

  • AWS CLI v2 2.12.3
  • Node環境
    • nvm v0.39.3
    • node.js v18.16.1
  • AWS CDK 2.85.0 (build 4e0d726)

本稿の手順は、実際にAWSアカウントにCDKのサンプルをデプロイします。
AWS環境は下記のとおりです。

  • AWS環境
    • AWS AccountID: 123456789012
    • 利用したリージョン: us-west-2
    • AWS CLIプロファイル名: yourprofile

作業手順(概要)

作業ステップは下記のとおりです。
なお環境構築完了後、CDKのサンプルをデプロイし、意図したとおりに動くことを確認します。

  1. WSL2(Ubuntu)の初期化
  2. AWS CDK v2環境の構築(各ツールのインストール)
    2-1. AWS CLI v2のインストール
    2-2. Node環境構築
    2-2-1. nvmのインストール
    2-2-2. node.jsのインストール
    2-3. AWS CDKのインストール
  3. 動作確認
    3-1. cdk bootstrapの実行
    3-2. AWS CDKのサンプルを取得
    3-3. 適当なサンプルをデプロイ

作業手順(詳細)

1. WSL2(Ubuntu)の初期化

Ubuntuディストリビューション環境が汚れている場合は、必要に応じてアンインストール/再インストールします。
再インストール手順は以下を参照してください。

2. AWS CDK v2環境の構築(各ツールのインストール)

2-1. AWS CLI v2のインストール

まずは以下の公式ドキュメントに従い、AWS CLI v2をインストールします。

unzipコマンドがおそらくインストールされていないので、インストールします。

unzipコマンドのインストール
$ sudo apt install unzip

ドキュメント通りに実行し、AWS CLI v2をインストールします。

AWS CLI v2インストール
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

インストール直後はパスが通っていないので、シェルを新しく実行しなおします。
その後、バージョンを確認します。

AWS CLIバージョン確認
# シェルの実行しなおし
$ exec bash

# バージョン確認
$ aws --version
aws-cli/2.12.3 Python/3.11.4 Linux/5.15.90.1-microsoft-standard-WSL2 exe/x86_64.ubuntu.22 prompt/off

インストール後、必要に応じてAWS CLIのプロファイルを設定しておきます。
本稿では、 yourprofile という名称で設定します。

aws configure
$ aws configure --profile yourprofile
AWS Access Key ID [None]: ****************
AWS Secret Access Key [None]: ****************
Default region name [None]: us-west-2
Default output format [None]: json

2-2. Node環境構築

2-2-1. nvmのインストール

Node環境のバージョン切り替え、作り直しが容易になるよう、nvmをインストールします。

下記、インストール手順に従いインストールします。

nvmのインストール
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

インストール後、nvmのバージョンを確認します。

nvmのバージョン確認
# シェルの実行しなおし
$ exec bash

# バージョン確認
$ nvm --version
0.39.3

2-2-2. node.jsのインストール

nvmから、Node.jsの最新のLTSを確認します。

最新LTSの確認
$ nvm ls-remote --lts
※途中省略
       v16.20.0   (LTS: Gallium)
       v16.20.1   (Latest LTS: Gallium)
       v18.12.0   (LTS: Hydrogen)
       v18.12.1   (LTS: Hydrogen)
       v18.13.0   (LTS: Hydrogen)
       v18.14.0   (LTS: Hydrogen)
       v18.14.1   (LTS: Hydrogen)
       v18.14.2   (LTS: Hydrogen)
       v18.15.0   (LTS: Hydrogen)
       v18.16.0   (LTS: Hydrogen)
       v18.16.1   (Latest LTS: Hydrogen)

本稿時点ではv18.16.1が最新なのでこれをインストールします。

Node.jsのインストール
nvm install v18.16.1

Node.jsがインストールされていることを確認します。

Node.jsの確認
$ node -v
v18.16.1

$ npm -v
9.5.1

2-3. AWS CDKのインストール

下記、Get Started with AWS CDKに従い、AWS CDKをインストールします。
https://aws.amazon.com/jp/getting-started/guides/setup-cdk/module-one/
https://aws.amazon.com/jp/getting-started/guides/setup-cdk/module-two/

まず、TypeScriptをインストールします。

TypeScriptのインストール
$ npm install -g typescript

その後、CDKをインストールします。

CDKのインストール
$ npm install -g aws-cdk

CDKのインストール後、バージョンを確認します。

CDKのバージョン確認
$ cdk --version
2.85.0 (build 4e0d726)

3. 動作確認

3-1. cdk bootstrapの実行

AWS環境上にデプロイするため、cdk bootstrapを実行します。

まず、AWS CLIに設定したプロファイルが有効であることを確認します。
aws sts get-caller-identityが成功すればOKです。

AWS CLIプロファイルの有効性を確認
$ aws --profile yourprofile sts get-caller-identity
{
    "UserId": "AROA***************:botocore-session-1687608871",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/OrganizationAccountAccessRole/botocore-session-1687608871"
}

cdk bootstrapを実行します。 --profile オプションの指定を忘れないように。

cdk bootstrapの実行
$ cdk --profile yourprofile bootstrap aws://123456789012/us-west-2

 ?  Bootstrapping environment aws://123456789012/us-west-2...
Trusted accounts for deployment: (none)
Trusted accounts for lookup: (none)
Using default execution policy of 'arn:aws:iam::aws:policy/AdministratorAccess'. Pass '--cloudformation-execution-policies' to customize.
CDKToolkit: creating CloudFormation changeset...
 ?  Environment aws://123456789012/us-west-2 bootstrapped.

3-2. AWS CDKのサンプルを取得

AWSが公式で公開しているCDKのサンプルを用います。

まず、WSL(Ubuntu)上で、上記リポジトリをcloneします。

AWS CDKサンプルのリポジトリのクローン
$ cd ~/
$ git clone https://github.com/aws-samples/aws-cdk-examples.git

3-3. 適当なサンプルをデプロイ

何をデプロイしてもよいですが、ここでは規模が小さい typescript/lambda-cron をデプロイしてみます。

まず、対象ディレクトリに移動します。

lambda-cronディレクトリへの移動
$ cd ~/aws-cdk-examples/typescript/lambda-cron/

npm install で必要なnode moduleをインストールしたのち、 npm run buildおよび cdk deploy を実行します。

lambda-cronのデプロイ
# 必要なnode moduleのインストール
$ npm install

# npm run buildの実行
$ npm run build

# デプロイ
$ cdk deploy

このサンプルは、「LambdaCronExample」という名称のStackを作ります、
デプロイ完了後、このStackが生成され、またStatusが CREATE_COMPLETE となっていることを確認します。

生成されたCloudFormation Stackの確認
$ aws --profile yourprofile cloudformation describe-stacks --query 'Stacks[?StackName==`LambdaCronExample`]'
[
    {
        "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/LambdaCronExample/6ddf4cdb-ca3f-9712-f4f3-e7674e3470a2",
        "StackName": "LambdaCronExample",
        "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/cdk-deploy-change-set/03af9f30-872b-3fa4-e158-947d34daaab1",
        "Parameters": [
            {
                "ParameterKey": "BootstrapVersion",
                "ParameterValue": "/cdk-bootstrap/hnb659fds/version",
                "ResolvedValue": "18"
            }
        ],
        "CreationTime": "2023-06-24T13:48:16.177000+00:00",
        "LastUpdatedTime": "2023-06-24T13:48:23.238000+00:00",
        "RollbackConfiguration": {},
        "StackStatus": "CREATE_COMPLETE",
        "DisableRollback": false,
        "NotificationARNs": [],
        "Capabilities": [
            "CAPABILITY_IAM",
            "CAPABILITY_NAMED_IAM",
            "CAPABILITY_AUTO_EXPAND"
        ],
        "RoleARN": "arn:aws:iam::123456789012:role/cdk-hnb659fds-cfn-exec-role-123456789012-us-west-2",
        "Tags": [],
        "DriftInformation": {
            "StackDriftStatus": "NOT_CHECKED"
        }
    }
]

おわりに

本稿の手順をそのままなぞるだけで、きちんと動く環境ができると思います。

なお環境構築手順は、環境構築するところで終わらせるのではなく、何らかのサンプルを実行したりデプロイしたりするところまで確認できるものがベターです。
本稿もそこまでの手順を記載しています。

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