cdk deploy

CloudFormationテンプレートが作成されました。次は何を行うでしょうか? AWSへのデプロイをしましょう!

環境の初期構築

AWS CDKアプリを環境(アカウント/リージョン)に初めてデプロイするときは、Bootstrapスタックを構築する必要があります。 このスタックには、ツールキットの操作に必要なリソースが含まれています。 たとえば、スタックにはデプロイプロセスで使われるCloudformationテンプレートとアセットを保存するために使用されるS3バケットが含まれます。

cdk bootstrap コマンドを実行すれば、bootstrapスタックがAWS環境にデプロイされます。

cdk bootstrap

実行すると以下のように表示されます。

 ⏳  Bootstrapping environment aws://999999999999/us-east-1...
...

アクセス拒否エラーとなるときはAWS CLIのクレデンシャル情報が正しく設定されているか、 現在のプロファイルが CloudFormationのcloudformation:CreateChangeSetを実行する権限を持っているか確認してください。

デプロイしましょう!

cdk deploy コマンドを使用することで、CDKアプリをデプロイできます。

cdk deploy

次のような警告が表示されるはずです。

This deployment will make potentially sensitive changes according to your current security approval level (--require-approval broadening).
Please confirm you intend to make the following modifications:

IAM Statement Changes
┌───┬─────────────────────────┬────────┬─────────────────┬───────────────────────────┬─────────────────────────────────────────────────────────┐
│   │ Resource                │ Effect │ Action          │ Principal                 │ Condition                                               │
├───┼─────────────────────────┼────────┼─────────────────┼───────────────────────────┼─────────────────────────────────────────────────────────┤
│ + │ ${CdkWorkshopQueue.Arn} │ Allow  │ sqs:SendMessage │ Service:sns.amazonaws.com │ "ArnEquals": {                                          │
│   │                         │        │                 │                           │   "aws:SourceArn": "${CdkWorkshopTopic}"                │
│   │                         │        │                 │                           │ }                                                       │
└───┴─────────────────────────┴────────┴─────────────────┴───────────────────────────┴─────────────────────────────────────────────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

Do you wish to deploy these changes (y/n)? 

これは、アプリのデプロイにはリスクが伴うことを警告しています(具体的には、IAMに変更が入る場合などです)。 今回は、SNSトピックがメッセージをSQSキューに送信できるIAM権限が必要になるためです。 yを入力してスタックをデプロイし、リソースを作成します。

出力は次のようになります。 ACCOUNT-IDはアカウントID、REGIONはアプリを作成したリージョン、STACK-IDはスタックを一意に特定する識別子です。

CdkWorkshopStack: deploying...
CdkWorkshopStack: creating CloudFormation changeset...

 ✅  CdkWorkshopStack

✨  Deployment time: 93.21s

Stack ARN:
arn:aws:cloudformation:REGION:ACCOUNT-ID:stack/CdkWorkshopStack/STACK-ID

✨  Total time: 107.65s

CloudFormationコンソール

CDKアプリケーションはAWS CloudFormationを介してデプロイされます。 各CDKスタックはCloudFormationスタックと1:1に対応します。

そのため、AWS CloudFormationコンソールでスタックを管理できます。

AWS CloudFormationコンソールを見てみましょう。

次のようなものが表示されるはずです(表示されない場合、正しいリージョンにいるか確認してください)。

CdkWorkshopStack を選択し、リソースタブを開けば、リソースの物理IDを確認できます。

これでコーディングの準備が整いました!