AWS CDK のチュートリアル AWS Cloud9 - AWS Cloud9

AWS Cloud9 は、新しいお客様では利用できなくなりました。 AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら

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

AWS CDK のチュートリアル AWS Cloud9

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

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

このチュートリアルに従って、このサンプルを作成すると、 AWS アカウントに料金が発生する可能性があります。これには、Amazon 、Amazon EC2、Amazon などのサービスに対する料金が含まれますSNSSQS。詳細については、「Amazon EC2料金」、「Amazon SNS料金」、「Amazon SQS料金」を参照してください。

前提条件

このサンプルを使用する前に、設定が次の要件を満たしていることを確認します。

  • 既存の AWS Cloud9 EC2開発環境が必要です。このサンプルは、EC2Amazon EC2 Linux または Ubuntu サーバー。別のタイプの環境またはオペレーティングシステムがある場合、このサンプルの指示を関連ツールを設定する必要がある場合があります。詳細については、「での環境の作成 AWS Cloud9」を参照してください。

  • 既存の環境の は既に開いています AWS Cloud9 IDE。環境を開くと、 はウェブブラウザでその環境IDEの AWS Cloud9 を開きます。詳細については、「AWS Cloud9 で環境を開く」を参照してください。

ステップ 1: 必要なツールをインストールする

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

  1. Node Version Manager (nvm)。後で Node.js をインストールするために使用します。

  2. Node.js 。これはサンプルで必要であり、Node Package Manager または npm が含まれています。これは、 TypeScript 以降の のインストールに使用します AWS CDK 。

  3. TypeScript。これはこのサンプルで必要です。( では、他のいくつかのプログラミング言語 AWS CDK もサポートされています)。

  4. AWS CDK

ステップ 1.1: Node Version Manager (nvm) をインストールする

  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
  2. nvm がインストール済みであるかどうかを確認します。これを行うには、 --version オプションを使用して nvm コマンドを実行します。

    nvm --version

    成功すると、出力に nvm バージョン番号が表示されます。この場合、「ステップ 1.2: Node.js をインストールする」までスキップできます。

  3. nvm をダウンロードしてインストールします。これを行うには、インストールスクリプトを実行します。この例では、v0.33.0 がインストールされていますが、nvm の最新バージョンはこちらで確認できます。

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
  4. nvm の使用を開始します。ターミナルセッションを閉じて再起動するか nvm をロードするコマンドを含む ~/.bashrc ファイルを入手してください。

    . ~/.bashrc

ステップ 1.2: Node.js をインストールする

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

    node --version

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

  2. nvm コマンドを install アクションと共に実行して、Node.js 16 をインストールします。

    注記

    nvm install node を実行して、Node.js.support の長期サポート (LTS) バージョンをインストールすることもできます。 AWS Cloud9 Node.js LTSのバージョンを追跡します。

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

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

ステップ 1.3: インストール TypeScript

  1. が既に TypeScript インストールされているかどうかを確認します。これを行うには、ターミナルセッションを で開いたままにしてIDE、 --versionオプションを使用してコマンドライン TypeScript コンパイラを実行します。

    tsc --version

    TypeScript がインストールされている場合、出力には TypeScript バージョン番号が含まれます。 TypeScript がインストールされている場合は、 に進みますステップ 1.4: をインストールする AWS CDK

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

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

    tsc --version

    TypeScript がインストールされている場合、出力には TypeScript バージョン番号が含まれます。

ステップ 1.4: をインストールする AWS CDK

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

    cdk --version

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

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

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

    cdk --version

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

ステップ 2: コードを追加する

このステップでは、 が 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.
  2. ディレクトリを の TypeScript 言語プロジェクトとしてセットアップします AWS CDK。これを行うには、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 コマンドの実行が容易になり、ビルドと実行に伴うエラーも減る可能性があります。

  3. [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); } }
    • StackAppStackPropsQueue、および Topic クラスは、 AWS CloudFormation スタックとそのプロパティ、実行可能プログラム、Amazon SQSキュー、および Amazon SNSトピックをそれぞれ表しています。

    • HelloCdkStack クラスは、このアプリケーションの AWS CloudFormation スタックを表します。このスタックには、このアプリケーションの新しい Amazon SQSキューと Amazon SNSトピックが含まれています。

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

  5. npm を使用して TypeScript コンパイラを実行してコーディングエラーを確認し、 を有効にしてプロジェクトのbin/hello-cdk.jsファイル AWS CDK を実行します。これを行うには、プロジェクトのルートディレクトリから、npm コマンドを run アクションで実行します。build コマンドの値は package.json ファイルで次のように指定します。

    npm run build

    前述のコマンドはコン TypeScript パイラを実行し、サポートファイルbin/hello-cdk.d.tslib/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キューが作成され、キューがトピックにサブスクライブされます。次に、トピックからキューにメッセージを送信して、トピックとキューが正常にデプロイされていることを確認します。

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

    cdk synth HelloCdkStack

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

  2. 特定の 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
  3. AWS CloudFormation スタックテンプレート AWS CDK を実行してスタックをデプロイします。これを行うには、プロジェクトのルートディレクトリから、cdk コマンドに deploy アクションとスタック名を指定して実行します。

    cdk deploy HelloCdkStack

    成功すると、エラーなしでデプロイされた HelloCdkStack スタックが出力に表示されます。

    注記

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

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

    例えば、 でターミナルセッションを開いたまま、 トピックにメッセージを送信するには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 CloudFormation に割り当てる 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

    前のコマンドで、 をキューARN AWS CloudFormation に割り当てる https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0Kに置き換えます。を取得するにはURL、Amazon SQS list-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 で環境を削除する を参照してください。