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 の数などを変更してデプロイする方法について調べたい。
以上