新規のお客様への AWS Cloud9 の提供は終了しました。AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら
AWS Cloud9 の AWS CDK チュートリアル
このチュートリアルでは、AWS Cloud9 開発環境で AWS Cloud Development Kit (AWS CDK) を操作する方法を示します。AWS CDK は、AWS インフラストラクチャコンポーネントをコードとしてモデル化するために開発者が使用できる、ソフトウェアツールやライブラリのセットです。
AWS CDK に含まれている AWS Construct ライブラリを使用すると、AWS の多くのタスクをすばやく解決できます。たとえば、Fleet
コンストラクトを使用すると、コードをホストのフリートに完全かつ安全にデプロイできます。独自のコンストラクトを作成してアーキテクチャのさまざまな要素をモデル化し、これらを他のユーザーと共有したり、コミュニティに公開したりできます。詳細については、「AWS Cloud Development Kit 開発者ガイド」を参照してください。
このチュートリアルに従って、このサンプルを作成すると、AWS アカウントに料金が発生する可能性があります。これには、Amazon EC2、Amazon SNS、Amazon SQS などのサービスに対して発生する可能性がある料金も含まれます。詳細については、「Amazon EC2 料金表
前提条件
このサンプルを使用する前に、設定が次の要件を満たしていることを確認します。
-
既存の AWS Cloud9 EC2 開発環境が存在している必要があります。このサンプルは、Amazon Linux または Ubuntu Server を実行する Amazon EC2 インスタンスに接続された EC2 環境が既にあることを前提としています。別のタイプの環境またはオペレーティングシステムがある場合、このサンプルの指示を関連ツールを設定する必要がある場合があります。詳細については、「AWS Cloud9 で環境を作成する」を参照してください。
-
既存の環境に既に AWS Cloud9 IDE が開いています。環境を開くと、AWS Cloud9 によってその環境の IDE がウェブブラウザで開かれます。詳細については、「AWS Cloud9 で環境を開く」を参照してください。
ステップ 1: 必要なツールをインストールする
このステップでは、TypeScript プログラミング言語で記述されたサンプルを AWS CDK が実行するために必要なすべてのツールを環境にインストールします。
-
Node Version Manager (
nvm
)。後で Node.js をインストールするために使用します。 -
Node.js。サンプルに必要であり、Node Package Manager または
npm
が含まれています。これを使用して、後で TypeScript と AWS CDK をインストールします。 -
TypeScript。このサンプルに必要です。(AWS CDK は、他のいくつかのプログラミング言語もサポートしています。)
-
-AWSCDK。
ステップ 1.1: Node Version Manager (nvm) をインストールする
-
AWS Cloud9 IDE のターミナルセッションで、最新のセキュリティ更新プログラムとバグ修正がインストールされていることを確認します。これを行うには、
yum update
(Amazon Linux 用)またはapt update
コマンド (Ubuntu Server 用) を実行します。(新しいターミナルセッションを開始するには、メニューバーで、[Window (ウィンドウ)]、[New Terminal (新しいターミナル)]の順に選択します。)Amazon Linux の場合:
sudo yum -y update
Ubuntu Server の場合:
sudo apt update
-
nvm
がインストール済みであるかどうかを確認します。これを行うには、--version
オプションを使用してnvm
コマンドを実行します。nvm --version
成功すると、出力に
nvm
バージョン番号が表示されます。この場合、「ステップ 1.2: Node.js をインストールする」までスキップできます。 -
nvm
をダウンロードしてインストールします。これを行うには、インストールスクリプトを実行します。この例では、v0.33.0 がインストールされていますが、nvm
の最新バージョンはこちらで確認できます。 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
-
nvm
の使用を開始します。ターミナルセッションを閉じて再起動するかnvm
をロードするコマンドを含む~/.bashrc
ファイルを入手してください。. ~/.bashrc
ステップ 1.2: Node.js をインストールする
-
Node.js がインストール済みであるかどうかを確認します。インストール済みである場合は、そのバージョンが 16.17.0 以上であることを確認します。このサンプルは Node.js 16.17.0 を使用してテスト済みです。IDE でターミナルセッションがまだ開いている状態でチェックするには、
--version
オプションと共にnode
コマンドを実行します。node --version
Node.js がインストール済みである場合は、出力にバージョン番号が表示されます。バージョン番号が v16.17.0 である場合は、「ステップ 1.3: TypeScript をインストールする」に進みます。
-
nvm
コマンドをinstall
アクションと共に実行して、Node.js 16 をインストールします。注記
nvm install node
を実行して、Node.js の長期サポート (LTS) バージョンをインストールすることもできます。AWS Cloud9 のサポートでは、Node.js の LTS バージョンが追跡されます。nvm install v16
-
Node.js 16 の使用を開始します。これを行うには、
nvm
コマンドを実行します。次のようにalias
アクション、エイリアスを作成するバージョン番号、このエイリアスで使用するバージョンを指定します。nvm alias default 16
注記
上のコマンドは、Node.js 16 をデフォルトバージョンの Node.js として設定します。または、
alias
アクション (たとえば、nvm use 16.17.0
)の代わりにuse
アクションと共にnvm
コマンドとを使用できます。ただし、use
アクションを使用すると、このバージョンの Node.js の実行先は現在実行中のターミナルセッションに限られます。 -
Node.js 16 を使用していることを確認するには、
node --version
コマンドを再度実行します。正しいバージョンをインストールしている場合は、出力にバージョン v16 と表示されます。
ステップ 1.3: TypeScript をインストールする
-
TypeScript がインストール済みであるかどうかを確認します。これを行うには、IDE でターミナルセッションがまだ開いている状態で、
--version
オプションを使ってコマンドライン TypeScript コンパイラーを実行します。tsc --version
TypeScript がインストール済みである場合は、出力に TypeScript のバージョン番号が表示されます。TypeScript がインストール済みである場合は、手順 1.4: AWS CDK をインストールする に進みます。
-
TypeScript をインストールします。これを行うには、
install
アクション、-g
オプション、および TypeScript パッケージの名前を指定してnpm
コマンドを実行します。これにより、TypeScript がグローバルパッケージとして環境 にインストールされます。npm install -g typescript
-
TypeScript がインストールされていることを確認します。これを行うには、
--version
オプションを使用してコマンドライン TypeScript コンパイラーを実行します。tsc --version
TypeScript がインストール済みである場合は、出力に TypeScript のバージョン番号が表示されます。
手順 1.4: AWS CDK をインストールする
-
AWS CDK がインストール済みであるかどうかを確認します。これを行うには、IDE でターミナルセッションがまだ開いている状態で、
--version
オプションを使って、cdk
コマンドを実行します。cdk --version
AWS CDK がインストール済みである場合は、出力に AWS CDK のバージョン番号とビルド番号が表示されます。ステップ 2: コードを追加する に進んでください。
-
AWS CDK をインストールするには、
npm
コマンドを実行し、その際install
アクション、インストールする AWS CDK パッケージの名前、環境でグローバルにパッケージをインストールするための-g
オプションを使用します。npm install -g aws-cdk
-
AWS CDK がインストールされ、正しく参照されていることを確認します。これを行うには、
--version
オプションを使用してcdk
コマンドを実行します。cdk --version
成功すると、AWS CDK のバージョン番号とビルド番号が表示されます。
ステップ 2: コードを追加する
このステップでは、AWS CDK でプログラムにより AWS CloudFormation スタックをデプロイするために必要なすべてのソースコードが含まれたサンプルの TypeScript プロジェクトを作成します。このスタックでは、Amazon SNS トピックと Amazon SQS キューを AWS アカウントに作成し、キューをトピックにサブスクライブします。
-
IDE でターミナルセッションがまだ開いている状態で、プロジェクトのソースコードを保存するディレクトリ (例:
~/environment/hello-cdk
ディレクトリ) を環境に作成します。次に、このディレクトリに切り替えます。rm -rf ~/environment/hello-cdk # Remove this directory if it already exists. mkdir ~/environment/hello-cdk # Create the directory. cd ~/environment/hello-cdk # Switch to the directory.
-
このディレクトリを、AWS CDK の TypeScript 言語プロジェクトとして設定します。これを行うには、
init
アクション、sample-app
テンプレート、--language
オプション、およびプログラミング言語の名前を指定してcdk
コマンドを実行します。cdk init sample-app --language typescript
これにより、ディレクトリ内に以下のファイルとサブディレクトリが作成されます。
-
隠しサブディレクトリ
.git
と隠しファイル.gitignore
。これにより、プロジェクトは Git などのソース管理ツールと互換性を持ちます。 -
lib
サブディレクトリ。hello-cdk-stack.ts
ファイルが含まれます。このファイルには、AWS CDK スタック用のコードが含まれます。このコードは、この手順の次のステップで説明します。 -
bin
サブディレクトリ。hello-cdk.ts
ファイルが含まれます。このファイルには、AWS CDK アプリケーション用のエントリポイントが含まれます。 -
node_modules
サブディレクトリ。必要に応じてアプリケーションとスタックで使用できるサポート用のコードパッケージが含まれます。 -
隠しファイル
.npmignore
。コードのビルド時にnpm
で使用しない種類のサブディレクトリやファイルのリストが含まれます。 -
cdk.json
ファイル。このファイルの情報を使用するとcdk
コマンドを実行しやすくなります。 -
package-lock.json
ファイル。このファイルの情報を使用して、npm
はビルドや実行に伴うエラーを減らすことができます。 -
package.json
ファイル。このファイルの情報を使用すると、npm
コマンドの実行が容易になり、ビルドと実行に伴うエラーも減る可能性があります。 -
README.md
ファイル。npm
と AWS CDK で実行できる便利なコマンドのリストがあります。 -
tsconfig.json
ファイル。このファイルの情報を使用すると、tsc
コマンドの実行が容易になり、ビルドと実行に伴うエラーも減る可能性があります。
-
-
[Environment (環境)] ウィンドウで、
lib/hello-cdk-stack.ts
ファイルを開き、このファイル内で次のコードを参照します。import sns = require('@aws-cdk/aws-sns'); import sqs = require('@aws-cdk/aws-sqs'); import cdk = require('@aws-cdk/cdk'); export class HelloCdkStack extends cdk.Stack { constructor(parent: cdk.App, name: string, props?: cdk.StackProps) { super(parent, name, props); const queue = new sqs.Queue(this, 'HelloCdkQueue', { visibilityTimeoutSec: 300 }); const topic = new sns.Topic(this, 'HelloCdkTopic'); topic.subscribeQueue(queue); } }
-
Stack
、App
、StackProps
、Queue
、およびTopic
の各クラスは、AWS CloudFormation スタックとそのプロパティ、実行可能プログラム、Amazon SQS キュー、および Amazon SNS トピックをそれぞれ表します。 -
HelloCdkStack
クラスは、このアプリケーションの AWS CloudFormation スタックを表します。このスタックには、このアプリケーションの新しい Amazon SQS キューおよび Amazon SNS トピックが含まれます。
-
-
[Environment (環境)] ウィンドウで、
bin/hello-cdk.ts
ファイルを開き、このファイル内で次のコードを参照します。#!/usr/bin/env node import cdk = require('@aws-cdk/cdk'); import { HelloCdkStack } from '../lib/hello-cdk-stack'; const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack'); app.run();
このコードは、
lib/hello-cdk-stack.ts
のHelloCdkStack
クラスをロードし、インスタンス化して、実行します。 -
npm
を使用して TypeScript コンパイラーを実行し、コーディングエラーをチェックします。次に、AWS CDK を有効にしてプロジェクトのbin/hello-cdk.js
ファイルを実行します。これを行うには、プロジェクトのルートディレクトリから、npm
コマンドをrun
アクションで実行します。build
コマンドの値はpackage.json
ファイルで次のように指定します。npm run build
上のコマンドは、TypeScript コンパイラーを実行します。このコンパイラーは、
bin/hello-cdk.d.ts
ファイルとlib/hello-cdk-stack.d.ts
ファイルのサポートを追加します。また、このコンパイラーは、hello-cdk.js
ファイルおよびhello-cdk-stack.js
ファイルを、hello-cdk.ts
ファイルおよびhello-cdk-stack.ts
ファイルとしてトランスパイルします。
ステップ 3: コードを実行する
このステップでは、bin/hello-cdk.js
ファイル内のコードに基づいて AWS CloudFormation スタックテンプレートを AWS CDK で作成します。次に、 AWS CDK にスタックのデプロイを指示して、Amazon SNS トピックとAmazon SQS キューを作成し、キューをトピックにサブスクライブします。次に、トピックからキューにメッセージを送信して、トピックとキューが正常にデプロイされていることを確認します。
-
AWS CDK で AWS CloudFormation スタックテンプレートを作成します。これを行うには、 IDE でターミナルセッションがまだ開いている状態で、プロジェクトのルートディレクトリから、
synth
アクションとスタック名を使って、cdk
コマンドを実行します。cdk synth HelloCdkStack
成功すると、出力に AWS CloudFormation スタックテンプレートの
Resources
セクションが表示されます。 -
AWS CDK アプリケーションを、特定の AWS アカウントおよび AWS リージョンを組み合わせた環境に初めてデプロイする場合は、ブートストラップスタックをインストールする必要があります。このスタックには、AWS CDK でさまざまなオペレーションを実行するために必要な各種リソースが含まれています。例えば、このスタックには、デプロイプロセス中にテンプレートとアセットを保存するため AWS CDK が使用する Amazon S3 バケットが含まれます。ブートストラップスタックをインストールするには、
cdk
コマンドをbootstrap
アクションと共に実行します。cdk bootstrap
注記
オプションを指定せずに
cdk bootstrap
を実行すると、デフォルトの AWS アカウントと AWS リージョンが使用されます。プロファイルとアカウント/リージョンの組み合わせを指定して、特定の環境をブートストラップすることもできます。例:cdk bootstrap --profile test 123456789012/us-east-1
-
AWS CDK で AWS CloudFormation スタックテンプレートを実行してスタックをデプロイします。これを行うには、プロジェクトのルートディレクトリから、
cdk
コマンドにdeploy
アクションとスタック名を指定して実行します。cdk deploy HelloCdkStack
成功すると、エラーなしでデプロイされた
HelloCdkStack
スタックが出力に表示されます。注記
出力のメッセージで、スタックで環境が定義されていない、 AWS認証情報がスタンダードの場所から取得できない、リージョンが設定されていないなどと表示された場合は、AWS 認証情報が IDE に正しく設定されていることを確認し、
cdk deploy
コマンドを再度実行します。詳細については、「AWS Cloud9 の環境から AWS のサービス の呼び出し」を参照してください。 -
Amazon SNS トピックと Amazon SQS キューが正常にデプロイされたことを確認するには、トピックにメッセージを送信し、キューでメッセージが受信されたことをチェックします。これを行うには、AWS Command Line Interface (AWS CLI) や AWS CloudShell などのツールを使用できます。これらのツールの詳細については、AWS Cloud9 に関する AWS CLI および aws-shell のチュートリアル を参照してください。
たとえば、トピックにメッセージを送信するには、IDE でターミナルセッションがまだ開いている状態で、AWS CLI を使用して Amazon SNS
publish
コマンドを実行します。次のように、メッセージの件名と本文、トピックの AWS リージョン、トピックの Amazon リソースネーム (ARN) を指定します。aws sns publish --subject "Hello from the AWS CDK" --message "This is a message from the AWS CDK." --topic-arn arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K
上のコマンドで、
arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K
は、AWS CloudFormation がトピックに割り当てる ARN に置き換えてください。この ID を取得するには、Amazon SNSlist-topics
コマンドを実行できます。aws sns list-topics --output table --query 'Topics[*].TopicArn'
成功すると、
publish
コマンドの出力に、発行されたメッセージのMessageId
値が表示されます。キューでメッセージが受信されたことをチェックするには、Amazon SQS
receive-message
コマンドを実行して、キューの URL を提供します。aws sqs receive-message --queue-url https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K
上のコマンドで、
https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K
は、AWS CloudFormation がキューに割り当てる ARN に置き換えてください。この URL を取得するため、 Amazon SQSlist-queues
コマンドを実行できます。aws sqs list-queues --output table --query 'QueueUrls[*]'
成功すると、
receive-message
コマンドの出力に、受信されたメッセージの情報が表示されます。
ステップ 4: クリーンアップする
このサンプルを使い終わった後で AWS アカウントに引き続き課金されないように、AWS CloudFormation スタックを削除する必要があります。これにより、Amazon SNS トピックと Amazon SQS キューが削除されます。環境も削除する必要があります。
ステップ 4.1: スタックを削除する
IDE でターミナルセッションがまだ開いている状態で、プロジェクトのルートディレクトリから、 destroy
アクションとスタック名で cdk
コマンドを実行します。
cdk destroy HelloCdkStack
スタックの削除を確認するメッセージが表示されたら、「y
」と入力し、Enter
キーを押します。
成功すると、エラーなしで HelloCdkStack
スタックが削除されたことが出力に表示されます。
ステップ 4.2: 環境を削除する
環境を削除するには、AWS Cloud9 で環境を削除する を参照してください。