我有一个简单的 CDK 堆栈来通过ApplicationLoadBalancedEc2Servic. 部署效果很好。但是当我升级时,例如通过将 docker 容器设置为hasura/graphql-engine:v1.3.1-beta.1,更新会永远持续下去,最后的输出类似于:
12:23:01 | UPDATE_IN_PROGRESS | AWS::CloudFormation::Stack
| HasuraStack
12:23:32 | UPDATE_IN_PROGRESS | AWS::ECS::Service
| Hasura/Service/Service
Run Code Online (Sandbox Code Playgroud)
我认为这与desiredCapacity和minCapacity设置为1有关。只要我进入AWS控制台并将它们手动设置为0,更新就会起作用。我尝试了 minCapacity/maxCapacity/desiredCapacity 的不同配置,但没有成功。
最好的结果是运行 2 个实例,旧实例缓慢耗尽,新实例将所有新流量重定向到新实例。有没有什么简单的方法可以实现类似的目标并获得更新?短暂的停机时间也是可以接受的。
这是代码:
const cluster = new Cluster(this, 'Cluster', {
vpc: props.vpc,
});
cluster.addCapacity('ASGroupCapacity', {
instanceType: new InstanceType(props.instanceType || 't3.micro'),
});
this.service = new ApplicationLoadBalancedEc2Service(this, 'Hasura', {
publicLoadBalancer: true,
cluster,
// assignPublicIp: props.hasuraServiceProps?.assignPublicIp || true,
domainName: `${props.subDomain}.${props.zone.zoneName}`,
domainZone: props.zone,
protocol: ApplicationProtocol.HTTPS,
memoryReservationMiB: 512,
desiredCount: 1,
taskImageOptions: {
image: ContainerImage.fromRegistry('hasura/graphql-engine:v1.3.0'),
containerPort: 8080,
environment: …Run Code Online (Sandbox Code Playgroud)