简体   繁体   中英

How to deploy cdk image asset to ecs cluster

I'm trying to deploy a docker image created with cdk to an ecs cluster (ec2 not fargate).

I have tried the following in typescript (with appropriate imports of course)

    const vpc = new ec2.VpcNetwork(this, "MyVPC", { maxAZs: 3 });

    const cluster: ecs.Cluster = new ecs.Cluster(this, "ecs-cluster", {
      clusterName: "demo",
      vpc: vpc
    });

    cluster.addCapacity("MyEC2Capacity", {
      instanceType: new ec2.InstanceType("t2.micro"),
      desiredCapacity: 1
    });
    const image = new ecs.AssetImage(this, "image", {directory: "client"})

    const nameService = new ecs.LoadBalancedEc2Service (this, 'name-service', {
      cluster: cluster,
      desiredCount: 1,
      image: image,
      memoryLimitMiB: 128,
      containerPort: 3000
   });

However when I run cdk diff I get the following error

Stack cdkTest
The cdkTest stack uses assets, which are currently not accounted for in the diff output! See https://github.com/awslabs/aws-cdk/issues/395
IAM Statement Changes
Column width must be greater than 0.
npm verb lifecycle stack@0.1.0~cdk: unsafe-perm in lifecycle true
npm verb lifecycle stack@0.1.0~cdk: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/circleci/repo/stack/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
npm verb lifecycle stack@0.1.0~cdk: CWD: /home/circleci/repo/stack
npm info lifecycle stack@0.1.0~cdk: Failed to exec cdk script
npm verb stack Error: stack@0.1.0 cdk: `cdk "diff"`
npm verb stack Exit status 1
npm verb stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:301:16)
npm verb stack     at EventEmitter.emit (events.js:197:13)
npm verb stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
npm verb stack     at ChildProcess.emit (events.js:197:13)
npm verb stack     at maybeClose (internal/child_process.js:978:16)
npm verb stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:265:5)
npm verb pkgid stack@0.1.0
npm verb cwd /home/circleci/repo/stack
npm verb Linux 4.4.0-141-generic
npm verb argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "cdk" "diff" "--verbose"
npm verb node v11.9.0
npm verb npm  v6.5.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! stack@0.1.0 cdk: `cdk "diff"`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the stack@0.1.0 cdk script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm verb exit [ 1, true ]
npm timing npm Completed in 1578ms

Exited with code 1

Is it possible to get cdk to build the image and deploy to ecs?

If so how? I couldn't find any examples either on google, on aws-cdk github repo, or on the aws-cdk docs.

Any help much appreciated!

Finally fixed the issue and so posting here for others.

The issue is caused by the CI I am using. Node thinks that the terminal width is 0 (process.stdout.columns). This is not an issue with aws-cdk but with the library it uses to construct the table of changes and resources.

A workaround is simple, simply pipe the output of the cdk to cat or similar. So for example my CI task changes from...

npm run cdk deploy
to
npm run cdk deploy | cat

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM