如何将cdk镜像资产部署到ecs集群
How to deploy cdk image asset to ecs cluster
我正在尝试将使用 cdk 创建的 docker 映像部署到 ecs 集群(ec2 而非 fargate)。
我在打字稿中尝试了以下内容(当然有适当的导入)
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
});
但是当我 运行 cdk diff
我得到以下错误
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
能否获取cdk构建镜像并部署到ecs?
如果是怎么办?我无法在 google、aws-cdk github 存储库或 aws-cdk 文档中找到任何示例。
非常感谢任何帮助!
终于解决了这个问题,所以在这里发布给其他人。
问题是由我正在使用的 CI 引起的。 Node 认为终端宽度为 0 (process.stdout.columns)。这不是 aws-cdk 的问题,而是它用于构建 table 更改和资源的库的问题。
解决方法很简单,只需将 cdk 的输出通过管道传输到 cat 或类似工具即可。例如,我的 CI 任务从...
npm run cdk deploy
至
npm run cdk deploy | cat
我正在尝试将使用 cdk 创建的 docker 映像部署到 ecs 集群(ec2 而非 fargate)。
我在打字稿中尝试了以下内容(当然有适当的导入)
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
});
但是当我 运行 cdk diff
我得到以下错误
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
能否获取cdk构建镜像并部署到ecs?
如果是怎么办?我无法在 google、aws-cdk github 存储库或 aws-cdk 文档中找到任何示例。
非常感谢任何帮助!
终于解决了这个问题,所以在这里发布给其他人。
问题是由我正在使用的 CI 引起的。 Node 认为终端宽度为 0 (process.stdout.columns)。这不是 aws-cdk 的问题,而是它用于构建 table 更改和资源的库的问题。
解决方法很简单,只需将 cdk 的输出通过管道传输到 cat 或类似工具即可。例如,我的 CI 任务从...
npm run cdk deploy
至
npm run cdk deploy | cat