AWS CDKを使用してAmazon ECS を開始する

AWS CDKを使用してAmazon ECS の開始方法 というチュートリアルをやってみた。

AWS CDK

まず AWS CDK をインストールするところから実施しないといけないので Getting started with the AWS CDK から開始した。

書かれている通りに実行していくのみだが、途中の cdk bootstrap aws://ACCOUNT-NUMBER/REGION のコマンド実行時、以下のエラーが出た。

k1350@k1350:~$ cdk bootstrap aws://xxxxxxxxxxxx/ap-northeast-1
  Bootstrapping environment aws://xxxxxxxxxxxx/ap-northeast-1...
  Environment aws://xxxxxxxxxxxx/ap-northeast-1 failed bootstrapping: Error: Need to perform AWS calls for account xxxxxxxxxxxx, but no credentials have been configured
    at SdkProvider.forEnvironment (/usr/lib/node_modules/aws-cdk/lib/api/aws-auth/sdk-provider.ts:179:46)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Function.lookup (/usr/lib/node_modules/aws-cdk/lib/api/bootstrap/deploy-bootstrap.ts:31:18)
    at Bootstrapper.modernBootstrap (/usr/lib/node_modules/aws-cdk/lib/api/bootstrap/bootstrap-environment.ts:81:21)
    at /usr/lib/node_modules/aws-cdk/lib/cdk-toolkit.ts:626:24
    at async Promise.all (index 0)
    at CdkToolkit.bootstrap (/usr/lib/node_modules/aws-cdk/lib/cdk-toolkit.ts:623:5)
    at initCommandLine (/usr/lib/node_modules/aws-cdk/lib/cli.ts:357:12)

Need to perform AWS calls for account 644818898769, but no credentials have been configured

調べたところ aws configure で生成した結果が

k1350@k1350:~$ cat ~/.aws/config
[profile default]
region = ap-northeast-1

[default]
output = json

というようになっていたが、発生した事象についての issue についているコメントによると [profile <some-name>] というエントリーがあると駄目らしいので以下のように直した。

k1350@k1350:~$ cat ~/.aws/config
[default]
region = ap-northeast-1
output = json

これで先に進めた。

続いて Your first AWS CDK app も実施して AWS CDK のチュートリアルは完了。

AWS ECS

AWS CDK のセットアップは終わったので AWS CDKを使用してAmazon ECS の開始方法 に移る。

こちらも書かれている通りに実行していくと何も問題なく進んで終わるが、どういうリソースができているのか一切把握しないのは不安があるので確認した。

cdk synth で出力された CloudFormation テンプレートで定義されていたものの Type を列挙する。

  • Type: AWS::CDK::Metadata
  • Type: AWS::SSM::Parameter::Value<String>
  • Type: AWS::ElasticLoadBalancingV2::LoadBalancer
  • Type: AWS::ElasticLoadBalancingV2::Listener
  • Type: AWS::ElasticLoadBalancingV2::TargetGroup
  • Type: AWS::EC2::SecurityGroup
  • Type: AWS::EC2::SecurityGroupEgress
  • Type: AWS::EC2::SecurityGroupIngress
  • Type: AWS::EC2::VPC
  • Type: AWS::EC2::Subnet
  • Type: AWS::EC2::RouteTable
  • Type: AWS::EC2::SubnetRouteTableAssociation
  • Type: AWS::EC2::Route
  • Type: AWS::EC2::EIP
  • Type: AWS::EC2::NatGateway
  • Type: AWS::EC2::InternetGateway
  • Type: AWS::EC2::VPCGatewayAttachment
  • Type: AWS::IAM::Role
  • Type: AWS::IAM::Policy
  • Type: AWS::Logs::LogGroup
  • Type: AWS::ECS::TaskDefinition
  • Type: AWS::ECS::Service
  • Type: AWS::ECS::Cluster

AWS マネジメントコンソールの CloudFormation デザイナーに CloudFormation テンプレートを読み込ませてみた図が下記で

自分でざっくり図にしたのが下記である。(インフラ知識が非常に乏しいので間違っている可能性がある)

今度、自分で Subnet の数などを変更してデプロイする方法について調べたい。

以上