デプロイ
作成
- 作成者: moritalous
- 作成日: 2023/08/14
デプロイ
CDKのデプロイはコマンドで行います。
デプロイの前にbootstrap
コマンドを実行します。このコマンドはAWSのアカウントとリージョンごとに1度だけ実施します。
shell
cdk bootstrap
作成されるリソースは以下のとおりです。デプロイ時のロールやアセットを保管するS3バケットなどが生成されます。
Resource Type | Logical ID |
---|---|
AWS::SSM::Parameter | CdkBootstrapVersion |
AWS::IAM::Role | CloudFormationExecutionRole |
AWS::ECR::Repository | ContainerAssetsRepository |
AWS::IAM::Role | DeploymentActionRole |
AWS::IAM::Role | FilePublishingRole |
AWS::IAM::Policy | FilePublishingRoleDefaultPolicy |
AWS::IAM::Role | ImagePublishingRole |
AWS::IAM::Policy | ImagePublishingRoleDefaultPolicy |
AWS::IAM::Role | LookupRole |
AWS::S3::Bucket | StagingBucket |
AWS::S3::BucketPolicy | StagingBucketPolicy |
Bootstrapが完了したらデプロイします。
shell
cdk deploy
IAMに関する変更が発生するため、確認メッセージが表示されます。y
で返答し、デプロイを行います。
IAM Statement Changes
┌───┬───────────────────────────────────────────────────────────────────────────────┬────────┬───────────────────────────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────┬───────────┐
│ │ Resource │ Effect │ Action │ Principal │ Condition │
├───┼───────────────────────────────────────────────────────────────────────────────┼────────┼───────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ ${Custom::VpcRestrictDefaultSGCustomResourceProvider/Role.Arn} │ Allow │ sts:AssumeRole │ Service:lambda.amazonaws.com │ │
├───┼───────────────────────────────────────────────────────────────────────────────┼────────┼───────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ arn:${AWS::Partition}:ec2:${AWS::Region}:${AWS::AccountId}:security-group/${V │ Allow │ ec2:AuthorizeSecurityGroupEgress │ AWS:${Custom::VpcRestrictDefaultSGCustomResourceProvider/Role} │ │
│ │ PCB9E5F0B4.DefaultSecurityGroup} │ │ ec2:AuthorizeSecurityGroupIngress │ │ │
│ │ │ │ ec2:RevokeSecurityGroupEgress │ │ │
│ │ │ │ ec2:RevokeSecurityGroupIngress │ │ │
└───┴───────────────────────────────────────────────────────────────────────────────┴────────┴───────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────┴───────────┘
IAM Policy Changes
┌───┬────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────┐
│ │ Resource │ Managed Policy ARN │
├───┼────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────┤
│ + │ ${Custom::VpcRestrictDefaultSGCustomResourceProvider/Role} │ {"Fn::Sub":"arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"} │
└───┴────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────┘
(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)?
CDKのデプロイの実態はCloudFormationで行われます。デプロイ後のCloudFormationの画面がこちらです。
注記
マネジメントコンソールでVPCを作成する際にはIAMロールの作成はありませんでした。
ec2.VpcにはrestrictDefaultSecurityGroup
というプロパティがあり、デフォルトでtrue
が指定されています。
If set to true then the default inbound & outbound rules will be removed
from the default security group
@default true if '@aws-cdk/aws-ec2:restrictDefaultSecurityGroup' is enabled, false otherwise
これは、AWSのベストプラクティスの 「デフォルトセキュリティグループを使用しない」 というものに準拠させるための設定変更を行うため、LambdaとLambdaに付与するIAMロールが生成されるからです。(デフォルトセキュリティグループは自動で作成され削除はできないので、インバウンドルールとアウトバウンドルールをすべて削除する動きをします)
参考:[EC2.2] VPC のデフォルトのセキュリティグループでは、インバウンドトラフィックとアウトバウンドトラフィックを許可しないようにする必要があります
このようにAWSのベストプラクティスに沿った環境が構築できるのもCDKのメリットです。
この先はハンズオンの設定値通りではなく、CDKのデフォルト値を使用しながら構築していきます。