今回AWS CDKVERSION2をつかうにあたりはまったところがあったのでそれを記事にしてみました。
今回はecsでALBを使いブラウザ上に表示させることをやってみようと思います。
aws configureは設定済みと考えます。
nodeのインストール
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install -y nodejs
cdkのインストール
mkdir hello-cdk
cd hello-cdk
sudo npm install -g aws-cdk
cdk init app --language typescript
Verison2で大事なのはCDK.jsonとpackage.jsonの編集です。
CDK.json
{
"app": "npx ts-node --prefer-ts-exts bin/hello-cdk.ts",
"versionReporting": false,
"context": {
"systemName": "hello-cdk",
"envType": "stg",
"keyName": ""
}
}
package.json
{
"name": "hello-cdk",
"version": "0.1.0",
"bin": {
"hello-cdk": "bin/hello-cdk.js"
},
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"test": "jest",
"cdk": "cdk"
},
"devDependencies": {
"@types/jest": "^26.0.23",
"@types/node": "10.17.27",
"aws-cdk-lib": "^2.0.0",
"constructs": "^10.0.0",
"jest": "^26.6.3",
"ts-jest": "^26.2.0",
"ts-node": "^9.0.0",
"typescript": "~3.9.7"
},
"dependencies": {
"aws-cdk-lib": "^2.0.0",
"constructs": "^10.0.0",
"source-map-support": "^0.5.16"
},
"jest": {
"moduleFileExtensions": [
"js"
]
}
}
上記のように直した後
cdk bootstrap aws://<アカウント番号>/<リージョン名>
npm install
プログラムの部分。
import { Stack, StackProps } from 'aws-cdk-lib';
import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { Construct } from 'constructs';
import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as ecsp from 'aws-cdk-lib/aws-ecs-patterns';
export class HelloCdkStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
new ecsp.ApplicationLoadBalancedFargateService(this, 'MyWebServer', {
taskImageOptions: {
image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
},
publicLoadBalancer: true
});
}
}
プログラミングで大切な部分は
import * as ecs from '@aws-cdk-lib/aws-ecs';---→import * as ecs from 'aws-cdk-lib/aws-ecs';
に変更すること@を除くことです。
後古いバージョンだと@aws-cdkがついていると思いますが、それをすべてaws-cdk-libに書き換えてください。
これでVERSION2のほとんどは動くと思います。
下記にgithub載せます。
github
参考資料