

 AWS Cloud9 は新規顧客には利用できなくなりました。 AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。[詳細はこちら](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS CDK の チュートリアル AWS Cloud9
<a name="sample-cdk"></a>

このチュートリアルでは、 AWS Cloud Development Kit (AWS CDK) AWS Cloud9 開発環境で を使用する方法を示します。 AWS CDK は、開発者が AWS インフラストラクチャコンポーネントをコードとしてモデル化するために使用できる一連のソフトウェアツールとライブラリです。

 AWS CDK には、多くのタスクをすばやく解決するために使用できる AWS コンストラクトライブラリが含まれています AWS。たとえば、`Fleet` コンストラクトを使用すると、コードをホストのフリートに完全かつ安全にデプロイできます。独自のコンストラクトを作成してアーキテクチャのさまざまな要素をモデル化し、これらを他のユーザーと共有したり、コミュニティに公開したりできます。詳細については、「[AWS Cloud Development Kit 開発者ガイド](https://docs.aws.amazon.com/cdk/v2/guide/home.html)」を参照してください。

このチュートリアルに従って、このサンプルを作成すると、 AWS アカウントに料金が発生する可能性があります。これには、Amazon EC2、Amazon SNS、Amazon SQS などのサービスに対して発生する可能性がある料金も含まれます。詳細については、「[Amazon EC2 料金表](https://aws.amazon.com/ec2/pricing/)」、「[Amazon SNS 料金表](https://aws.amazon.com/sns/pricing/)」および「[Amazon SQS 料金表](https://aws.amazon.com/sqs/pricing/)」を参照してください。

**Topics**
+ [前提条件](#sample-cdk-prereqs)
+ [ステップ 1: 必要なツールをインストールする](#sample-cdk-install)
+ [ステップ 2: コードを追加する](#sample-cdk-code)
+ [ステップ 3: コードを実行する](#sample-cdk-run)
+ [ステップ 4: クリーンアップする](#sample-cdk-clean-up)

## 前提条件
<a name="sample-cdk-prereqs"></a>

このサンプルを使用する前に、設定が次の要件を満たしていることを確認します。
+ **既存の AWS Cloud9 EC2 開発環境が必要です。**このサンプルは、Amazon Linux または Ubuntu Server を実行する Amazon EC2 インスタンスに接続された EC2 環境が既にあることを前提としています。別のタイプの環境またはオペレーティングシステムがある場合、このサンプルの指示を関連ツールを設定する必要がある場合があります。詳細については、「[での環境の作成 AWS Cloud9](create-environment.md)」を参照してください。
+ **既存の環境の AWS Cloud9 IDE が既に開いている。**環境を開くと、 はウェブブラウザでその環境の IDE AWS Cloud9 を開きます。詳細については、「[で環境を開く AWS Cloud9](open-environment.md)」を参照してください。

## ステップ 1: 必要なツールをインストールする
<a name="sample-cdk-install"></a>

このステップでは、 が TypeScript プログラミング言語で記述されたサンプルを実行する AWS CDK ために必要なすべてのツールを環境にインストールします。

1.  [Node Version Manager](#sample-cdk-install-nvm) (**`nvm`**)。後で Node.js をインストールするために使用します。

1.  [Node.js](#sample-cdk-install-nodejs)。サンプルで必要であり、Node Package Manager、または TypeScript AWS CDK 以降をインストールするために使用する ** `npm` **が含まれています。

1.  [TypeScript](#sample-cdk-install-typescript)。このサンプルに必要です。( では、他のいくつかのプログラミング言語 AWS CDK もサポートされています）。

1. -[AWS CDK](#sample-cdk-install-cdk)。

### ステップ 1.1: Node Version Manager (nvm) をインストールする
<a name="sample-cdk-install-nvm"></a>

1.  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
   ```

1. ** `nvm` ** がインストール済みであるかどうかを確認します。これを行うには、** `--version` ** オプションを使用して ** `nvm` ** コマンドを実行します。

   ```
   nvm --version
   ```

   成功すると、出力に ** `nvm` ** バージョン番号が表示されます。この場合、「[ステップ 1.2: Node.js をインストールする](#sample-cdk-install-nodejs)」までスキップできます。

1. **`nvm`** をダウンロードしてインストールします。これを行うには、インストールスクリプトを実行します。この例では、v0.33.0 がインストールされていますが、**`nvm`** の最新バージョンは[こちら](https://github.com/nvm-sh/nvm#installing-and-updating)で確認できます。

   ```
   curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
   ```

1. **`nvm`** の使用を開始します。ターミナルセッションを閉じて再起動するか ** `nvm` ** をロードするコマンドを含む `~/.bashrc` ファイルを入手してください。

   ```
   . ~/.bashrc
   ```

### ステップ 1.2: Node.js をインストールする
<a name="sample-cdk-install-nodejs"></a>

1. Node.js がインストール済みであるかどうかを確認します。インストール済みである場合は、そのバージョンが 16.17.0 以上であることを確認します。**このサンプルは Node.js 16.17.0 を使用してテスト済みです。**IDE でターミナルセッションがまだ開いている状態でチェックするには、** `--version` **オプションと共に ** `node` **コマンドを実行します。

   ```
   node --version
   ```

   Node.js がインストール済みである場合は、出力にバージョン番号が表示されます。バージョン番号が v16.17.0 である場合は、「[ステップ 1.3: TypeScript をインストールする](#sample-cdk-install-typescript)」に進みます。

1. **`nvm`** コマンドを **`install`** アクションと共に実行して、Node.js 16 をインストールします。
**注記**  
**`nvm install node`** を実行して、Node.js の長期サポート (LTS) バージョンをインストールすることもできます。 AWS Cloud9 support は、Node.js の LTS バージョンを追跡します。

   ```
   nvm install v16
   ```

1. 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 の実行先は現在実行中のターミナルセッションに限られます。

1. Node.js 16 を使用していることを確認するには、**`node --version`** コマンドを再度実行します。正しいバージョンをインストールしている場合は、出力にバージョン v16 と表示されます。

### ステップ 1.3: TypeScript をインストールする
<a name="sample-cdk-install-typescript"></a>

1. TypeScript がインストール済みであるかどうかを確認します。これを行うには、IDE でターミナルセッションがまだ開いている状態で、** `--version` ** オプションを使ってコマンドライン TypeScript コンパイラーを実行します。

   ```
   tsc --version
   ```

   TypeScript がインストール済みである場合は、出力に TypeScript のバージョン番号が表示されます。TypeScript がインストール済みである場合は、[ステップ 1.4: をインストールする AWS CDK](#sample-cdk-install-cdk) に進みます。

1. TypeScript をインストールします。これを行うには、**`install` **アクション、**`-g` **オプション、および TypeScript パッケージの名前を指定して** `npm` **コマンドを実行します。これにより、TypeScript がグローバルパッケージとして環境 にインストールされます。

   ```
   npm install -g typescript
   ```

1. TypeScript がインストールされていることを確認します。これを行うには、**`--version`** オプションを使用してコマンドライン TypeScript コンパイラーを実行します。

   ```
   tsc --version
   ```

   TypeScript がインストール済みである場合は、出力に TypeScript のバージョン番号が表示されます。

### ステップ 1.4: をインストールする AWS CDK
<a name="sample-cdk-install-cdk"></a>

1. が既に AWS CDK インストールされているかどうかを確認します。これを行うには、IDE でターミナルセッションがまだ開いている状態で、** `--version` ** オプションを使って、** `cdk` ** コマンドを実行します。

   ```
   cdk --version
   ```

    AWS CDK がインストールされている場合、出力には AWS CDK バージョンとビルド番号が含まれます。[ステップ 2: コードを追加する](#sample-cdk-code) に進んでください。

1. をインストールするには、 ** `npm` ** コマンドを `install`アクション、インストールする AWS CDK パッケージの名前、 環境にパッケージをグローバルにインストールする`-g`オプションとともに AWS CDK 実行します。

   ```
   npm install -g aws-cdk
   ```

1. がインストールされ、正しく参照 AWS CDK されていることを確認します。これを行うには、** `--version` ** オプションを使用して ** `cdk` ** コマンドを実行します。

   ```
   cdk --version
   ```

   成功すると、 AWS CDK バージョンとビルド番号が表示されます。

## ステップ 2: コードを追加する
<a name="sample-cdk-code"></a>

このステップでは、 が AWS CloudFormation スタックを AWS CDK プログラムでデプロイするために必要なすべてのソースコードを含むサンプル TypeScript プロジェクトを作成します。このスタックは、 AWS アカウントに Amazon SNS トピックと Amazon SQS キューを作成し、キューをトピックにサブスクライブします。

1. 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.
   ```

1. このディレクトリを、 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`** コマンドの実行が容易になり、ビルドと実行に伴うエラーも減る可能性があります。
   + ** `npm` ** および で実行できる便利なコマンドを一覧表示する `README.md` ファイル AWS CDK。
   + `tsconfig.json` ファイル。このファイルの情報を使用すると、**`tsc`** コマンドの実行が容易になり、ビルドと実行に伴うエラーも減る可能性があります。

1. [**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` クラスは、 CloudFormation スタックとそのプロパティ、実行可能プログラム、Amazon SQS キュー、および Amazon SNS トピックをそれぞれ表します。
   + `HelloCdkStack` クラスは、このアプリケーションの CloudFormation スタックを表します。このスタックには、このアプリケーションの新しい Amazon SQS キューおよび Amazon SNS トピックが含まれます。

1. [**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` クラスをロードし、インスタンス化して、実行します。

1. ** `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: コードを実行する
<a name="sample-cdk-run"></a>

このステップでは、 `bin/hello-cdk.js` ファイル内のコードに基づいて CloudFormation スタックテンプレートを作成する AWS CDK ように に指示します。次に、スタックをデプロイ AWS CDK するように に指示します。これにより、Amazon SNS トピックと Amazon SQS キューが作成され、キューがトピックにサブスクライブされます。次に、トピックからキューにメッセージを送信して、トピックとキューが正常にデプロイされていることを確認します。

1. で CloudFormation スタックテンプレート AWS CDK を作成します。これを行うには、 IDE でターミナルセッションがまだ開いている状態で、プロジェクトのルートディレクトリから、** `synth` ** アクションとスタック名を使って、** `cdk` ** コマンドを実行します。

   ```
   cdk synth HelloCdkStack
   ```

   成功すると、出力に CloudFormation スタックテンプレート`Resources`のセクションが表示されます。

1. 特定の AWS アカウントと AWS リージョンの組み合わせの環境に AWS CDK アプリケーションを初めてデプロイする場合は、*ブートストラップスタック*をインストールする必要があります。このスタックには、 がさまざまなオペレーションを完了 AWS CDK するために必要なさまざまなリソースが含まれています。たとえば、このスタックには、デプロイプロセス中に がテンプレートとアセットを保存 AWS CDK するために使用する Amazon S3 バケットが含まれています。ブートストラップスタックをインストールするには、** `cdk` **コマンドを** `bootstrap` ** アクションと共に実行します。

   ```
   cdk bootstrap
   ```
**注記**  
オプションを指定`cdk bootstrap`せずに を実行すると、デフォルトの AWS アカウントと AWS リージョンが使用されます。プロファイルとアカウント/リージョンの組み合わせを指定して、特定の環境をブートストラップすることもできます。例えば、次のようになります。  

   ```
   cdk bootstrap --profile test 123456789012/us-east-1
   ```

1.  CloudFormation スタックテンプレート AWS CDK を実行してスタックをデプロイします。これを行うには、プロジェクトのルートディレクトリから、**`cdk`** コマンドに **`deploy`** アクションとスタック名を指定して実行します。

   ```
   cdk deploy HelloCdkStack
   ```

   成功すると、エラーなしでデプロイされた `HelloCdkStack` スタックが出力に表示されます。
**注記**  
出力に、スタックが環境を定義しておらず、 AWS 認証情報を標準の場所から取得できなかったか、リージョンが設定されていないというメッセージが表示された場合は、 AWS 認証情報が IDE で正しく設定されていることを確認し、**`cdk deploy`**コマンドを再度実行します。詳細については、「[の環境 AWS のサービス からの呼び出し AWS Cloud9](credentials.md)」を参照してください。

1. Amazon SNS トピックと Amazon SQS キューが正常にデプロイされたことを確認するには、トピックにメッセージを送信し、キューでメッセージが受信されたことをチェックします。これを行うには、 AWS Command Line Interface (AWS CLI) や などのツールを使用できます AWS CloudShell。これらのツールの詳細については、[AWS CLI および の aws-shell チュートリアル AWS Cloud9](sample-aws-cli.md) を参照してください。

   たとえば、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
   ```

   前述のコマンドで、 を トピック CloudFormation に割り当てる ARN `arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K`に置き換えます。この ID を取得するには、Amazon SNS **`list-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
   ```

   前述のコマンドで、 をキュー CloudFormation に割り当てる ARN `https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K`に置き換えます。この URL を取得するため、 Amazon SQS **`list-queues`** コマンドを実行できます。

   ```
   aws sqs list-queues --output table --query 'QueueUrls[*]'
   ```

   成功すると、**`receive-message`** コマンドの出力に、受信されたメッセージの情報が表示されます。

## ステップ 4: クリーンアップする
<a name="sample-cdk-clean-up"></a>

このサンプルの使用が完了したら、 AWS アカウントへの継続的な課金を防ぐには、 CloudFormation スタックを削除する必要があります。これにより、Amazon SNS トピックと Amazon SQS キューが削除されます。環境も削除する必要があります。

### ステップ 4.1: スタックを削除する
<a name="step-4-1-delete-the-stack"></a>

IDE でターミナルセッションがまだ開いている状態で、プロジェクトのルートディレクトリから、 ** `destroy` ** アクションとスタック名で ** `cdk` ** コマンドを実行します。

```
cdk destroy HelloCdkStack
```

スタックの削除を確認するメッセージが表示されたら、「`y`」と入力し、`Enter` キーを押します。

成功すると、エラーなしで `HelloCdkStack` スタックが削除されたことが出力に表示されます。

### ステップ 4.2: 環境を削除する
<a name="step-4-2-delete-the-envtitle"></a>

環境を削除するには、[での環境の削除 AWS Cloud9](delete-environment.md) を参照してください。