Roleにも対応していますので特に問題ありません。DiffAWS環境へ生成・破棄・変更されるResourceの一覧を確認します。Deployこの状態でDeployを実行します。実行されるCloudFormationは先程標準出力でプレビューしたテンプレートがそのまま実行されます。ARN:arn:aws:cloudformation:us-east-1:XXXXXXXXXXXXXXXX:stack/hello-cdk-1/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXCloudFormationで実行結果を確認すると、実行されたテンプレートが確認できます。テストコードを削るまずはじめにテストコードを削っておきます。このテストは生成されるCloudFormationが正しいかを実際のCloudFormationのJSONテンプレートに基づいてテストしているため、最終的な形になるまではメンテナンスがとてつもなく手間がかかります。最終的な形が決まってからテストを記述する他ないかと思います(現時点では)ここまでで準備完了。Workshopでは、コードを修正してResourceを変更していきましょう。Functionを実行する構成です。先程までDeployしているアプリケーションとは全く異なるアプリケーションです。TopicとSQSのQueueを消します。SQSが削除対象です。ARN:arn:aws:cloudformation:us-east-1:XXXXXXXXXXXXXXXX:stack/hello-cdk-1/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXDeployを実行すると先程プレビューで表示していたリソースが差分として削除されているのがわかります。LambdaLambdaのリソースを追加します。Functionリソースを生成する際に別ファイルで定義したFunctionハンドラを文字列で指定してるようです。ライブラリのインストールを実行しています。依存関係を追加します。セクションを確認します。Libraryのセクションがありました。Lambdaを追加します。<version>0.18.1</version></dependency>これを追加。Changesで変更を適用。LibraryはSNSをインポートと同時に依存関係に含まれているためLibrary自体は存在します。Functionのリソースを追加します。Handlerのコードを作成します。RequestStreamHandlerインタフェースを実装したクラスを作成します。クラスを作成しましょう。参考にTutorialと同等のStatusCodeとContent-Type等を定義したレスポンスをOutputStreamに書き込みます。これでLambdaの方はOK。クラスにLambdaリソースを定義するコードを追加します。少々厄介だったので解説します。LambdaのRuntimeを指定。AmazonS3のパスなどを指定する。Handlerとなるクラスを指定。メソッド名も指定できるが省略可能。新たに追加するLambdaの名称を指定。Timeoutの時間を秒で指定します。Bootstrapに時間がかかりそうなので一応10秒に延長しました。指定は注意が必要です。使い、ローカルで生成される成果物を指定しそれをLambdaへのUpload対象物として扱います。今回は生成したzipファイル(これも一工夫必要)を指定していますが、他にディレクトリを指定することができます。4kB以下のコードならば文字列で指定できます。ケースによって使い分けます。