プロジェクト構造

IDEを開く

お気に入りのIDEでプロジェクトを開いてみましょう。

VSCodeを使用する場合は、 code . コマンドをプロジェクトディレクトリ内で実行すれば簡単に開けます。

プロジェクトディレクトリを確認する

以下のようなものが表示されます。

  • lib/cdk-workshop-stack.ts CDKアプリケーションのメインスタックが定義されます。今回のワークショップでほとんどの時間を費やすことになるファイルです。
  • bin/cdk-workshop.ts CDKアプリケーションのエントリポイントです。lib/cdk-workshop-stack.ts で定義されたスタックをロードします。
  • package.json npmモジュールのマニフェストです。アプリの名前、バージョン、依存関係、”watch” や “build” 用のビルドスクリプトなどの情報が含まれます(package-lock.json はnpmによって管理されます)
  • cdk.json アプリの実行方法をツールキットに指示させるためのファイルです。今回の場合は、 “node bin/cdk-workshop.js” です。
  • tsconfig.json プロジェクトの TypeScript設定 です。
  • .gitignore.npmignore Gitとnpm用のファイルです。ソースコードの管理に含める/除外するファイルと、パッケージマネージャーへの公開用設定が含まれています。
  • node_modules npmによって管理され、プロジェクトのすべての依存関係が含まれます。

アプリのエントリポイント

bin/cdk-workshop.tsを簡単に見てみましょう:

import cdk = require('@aws-cdk/core');
import { CdkWorkshopStack } from '../lib/cdk-workshop-stack';

const app = new cdk.App();
new CdkWorkshopStack(app, 'CdkWorkshopStack');

このコードは、lib/cdk-workshop-stack.tsファイルを開き、 CdkWorkshopStack クラス を初期化してロードするものです。一度読んだら、もうこのファイルを見る必要はありません。

メインスタック

lib/cdk-workshop-stack.tsを開いてみましょう。これがアプリケーションの要です。

import sns = require('@aws-cdk/aws-sns');
import subs = require('@aws-cdk/aws-sns-subscriptions');
import sqs = require('@aws-cdk/aws-sqs');
import cdk = require('@aws-cdk/core');

export class CdkWorkshopStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const queue = new sqs.Queue(this, 'CdkWorkshopQueue', {
      visibilityTimeout: cdk.Duration.seconds(300)
    });

    const topic = new sns.Topic(this, 'CdkWorkshopTopic');

    topic.addSubscription(new subs.SqsSubscription(queue));
  }
}

ご覧のとおり、アプリはサンプルCDKスタック(CdkWorkshopStack)です.

このスタックは次のものを含みます。

  • SQS キュー (new sqs.Queue)
  • SNS トピック (new sns.Topic)
  • キューをサブスクライブして、トピックに発行されたメッセージを受信します (topic.addSubscription)