Typescript AWS cdk部署--全部无法创建ECS服务

Typescript AWS cdk部署--全部无法创建ECS服务,typescript,amazon-web-services,aws-cdk,Typescript,Amazon Web Services,Aws Cdk,CDK的新版本,AWS的新版本 问题 我下面介绍的内容包括创建一个基于fargate的私有API,并通过公开的ec2实例在公共互联网上访问它 我在挑拣,最小限度地纠正各种问题,使一切正常运行。是时候用以下方法进行构建了: npm run build cdk bootstrap cdk synth FargateVpclinkStack cdk deploy --all 因此,需要部署: 我出去吃饭回来,我仍然在看以下内容: [█████████████████████████████████

CDK的新版本,AWS的新版本

问题 我下面介绍的内容包括创建一个基于fargate的私有API,并通过公开的ec2实例在公共互联网上访问它

我在挑拣,最小限度地纠正各种问题,使一切正常运行。是时候用以下方法进行构建了:

npm run build
cdk bootstrap
cdk synth FargateVpclinkStack
cdk deploy --all
因此,需要部署:

我出去吃饭回来,我仍然在看以下内容:

[███████████████████████████████████████████████████████▊··] (52/54)

4:19:40 PM | CREATE_IN_PROGRESS   | AWS::CloudFormation::Stack                 | FargateVpclinkStack
4:23:17 PM | CREATE_IN_PROGRESS   | AWS::ECS::Service                          | bookService/Service
{
  "name": "cdk",
  "version": "0.1.0",
  "bin": {
    "cdk": "bin/cdk.js"
  },
  "scripts": {
    "build": "tsc",
    "watch": "tsc -w",
    "test": "jest",
    "cdk": "cdk"
  },
  "devDependencies": {
    "@aws-cdk/assert": "1.101.0",
    "@aws-cdk/aws-apigatewayv2": "1.101.0",
    "@aws-cdk/core": "1.101.0",
    "@aws-cdk/aws-ec2": "1.101.0",
    "@aws-cdk/aws-ecr": "1.101.0",
    "@aws-cdk/aws-ecs": "1.101.0",
    "@aws-cdk/aws-elasticloadbalancingv2": "1.101.0",
    "@aws-cdk/aws-iam": "1.101.0",
    "@aws-cdk/aws-logs": "1.101.0",
    "@aws-cdk/aws-servicediscovery": "1.101.0",
    "@types/jest": "^26.0.10",
    "@types/node": "10.17.27",
    "jest": "^26.4.2",
    "ts-jest": "^26.2.0",
    "aws-cdk": "1.101.0",
    "ts-node": "^9.0.0",
    "typescript": "~3.9.7"
  },
  "dependencies": {
    "@aws-cdk/core": "1.101.0",
    "source-map-support": "^0.5.16"
  }
}
在等待足够长的时间后,云层被卷起

10:43:36 PM | CREATE_FAILED        | AWS::ECS::Service                          | bookService/Service
Resource timed out waiting for completion (RequestToken: f8b1d082-1ff3-5a84-938a-95a0ea2f0960)
10:43:45 PM | ROLLBACK_IN_PROGRESS | AWS::CloudFormation::Stack                 | FargateVpclinkStack
The following resource(s) failed to create: [bookService05FB6DBB]. Rollback requested by user.

FrgateVpclinkStack failed: Error: The stack named FargateVpclinkStack failed creation, it may need to be manually deleted from the AWS console: ROLLBACK_COMPLETE
The stack named FargateVpclinkStack failed creation, it may need to be manually deleted from the AWS console: ROLLBACK_COMPLETE
我假设这意味着ECS服务
bookService/service
部署失败,因此整个
FrgateVpclinkStack
被回滚。我很好奇为什么会这样,以及如何修复它

代码 这是cdk用来为FrgateVpclinkStack生成云形成模板的类型脚本,在本教程中称为fargate-vpclink-stack.ts

import*作为cdk从“@aws cdk/core”导入;
从“@aws cdk/aws-elasticloadbalancingv2”导入*作为elbv2;
从“@aws cdk/aws-ec2”导入*作为ec2;
从“@aws cdk/aws ecs”导入*作为ecs;
从“@aws cdk/aws ecr”导入*作为ecr;
从“@aws cdk/aws iam”导入*作为iam;
从“@aws cdk/aws日志”导入*作为日志;
从“@aws cdk/aws-apigatewayv2”导入*作为apig;
从“@aws cdk/aws servicediscovery”导入*作为servicediscovery;
导出类FargateVpclinkStack扩展了cdk.Stack{
//导出Vpclink和ALB侦听器
公共只读httpVpcLink:cdk.CfnResource;
公共只读httpapListener:elbv2.ApplicationListener;
构造函数(作用域:cdk.Construct,id:string,props?:cdk.StackProps){
超级(范围、id、道具);
//专有网络
const vpc=新的ec2.vpc(本“ProducerVPC”);
//ECS集群
const cluster=新的ecs.cluster(这是“Fargate cluster”{
专有网络:专有网络,
});
//云映射命名空间
const dnsNamespace=新服务发现。私有dnsNamespace(
这
“DnsNamespace”,
{
名称:“http api.local”,
专有网络:专有网络,
描述:“用于微服务的专用DnsNamespace”,
}
);
//任务角色
const taskrole=new iam.Role(这个“执行角色”{
假设人:new iam.ServicePrincipal(“ecs tasks.amazonaws.com”),
});
taskrole.addManagedPolicy(
iam.ManagedPolicy.fromAwsManagedPolicyName(
“服务角色/AmazonECSTaskExecutionRolePolicy”
)
);
//任务定义
const bookServiceTaskDefinition=new ecs.FargateTaskDefinition(
这
“bookServiceTaskDef”,
{
memoryLimitMiB:512,
中央处理器:256,
taskRole:taskRole,
}
);
const authorServiceTaskDefinition=new ecs.FargateTaskDefinition(
这
“authorServiceTaskDef”,
{
memoryLimitMiB:512,
中央处理器:256,
taskRole:taskRole,
}
);
//日志组
const bookServiceLogGroup=new logs.LogGroup(这是“bookServiceLogGroup”{
logGroupName:“/ecs/BookService”,
removalPolicy:cdk.removalPolicy.DESTROY,
});
const authorServiceLogGroup=new logs.LogGroup(
这
“authorServiceLogGroup”,
{
logGroupName:“/ecs/AuthorService”,
removalPolicy:cdk.removalPolicy.DESTROY,
}
);
const bookServiceLogDriver=new ecs.AwsLogDriver({
logGroup:bookServiceLogGroup,
streamPrefix:“BookService”,
});
const authorServiceLogDriver=new ecs.AwsLogDriver({
日志组:authorServiceLogGroup,
streamPrefix:“AuthorService”,
});
//Amazon ECR存储库
const bookservicerpo=ecr.Repository.fromRepositoryName(
这
“图书服务”,
“图书服务”
);
const authorservicerepo=ecr.Repository.fromRepositoryName(
这
“authorservice”,
“作者服务”
);
//任务容器
const bookServiceContainer=bookServiceTaskDefinition.addContainer(
“bookServiceContainer”,
{
图片:ecs.ContainerImage.fromEcrRepository(bookservicerpo),
日志记录:bookServiceLogDriver,
}
);
const authorServiceContainer=authorServiceTaskDefinition.addContainer(
“authorServiceContainer”,
{
图片:ecs.ContainerImage.fromEcrRepository(authorservicerepo),
日志记录:authorServiceLogDriver,
}
);
bookServiceContainer.addPortMappings({
集装箱港口:80,
});
authorServiceContainer.addPortMappings({
集装箱港口:80,
});
//安全小组
const bookServiceSecGrp=new ec2.SecurityGroup(
这
“bookServiceSecurityGroup”,
{
A:是的,
securityGroupName:“bookServiceSecurityGroup”,
专有网络:专有网络,
}
);
bookServiceSecGrp.connections.allowFromAnyIpv4(ec2.Port.tcp(80));
const authorServiceSecGrp=new ec2.SecurityGroup(
这
“authorServiceSecurityGroup”,
{
A:是的,
securityGroupName:“authorServiceSecurityGroup”,
专有网络:专有网络,
}
);
authorServiceSecGrp.connections.allowFromAnyIpv4(ec2.Port.tcp(80));
//远门服务
const bookService=新的ecs.FargateService(这是“bookService”{
集群:集群,
taskDefinition:bookServiceTaskDefinition,
分配公共IP:false,
期望计数:2,
securityGroup:bookServiceSecGrp,
cloudMapOptions:{
名称:“图书服务”,
cloudMapNamespace:dnsNamespace,
},
});
const authorService=新的ecs.FargateService(这是“authorService”{
集群:集群,
taskDefinition:authorServiceTaskDefinition,
分配公共IP:false,
期望计数:2,
securityGroup:authorServiceSecGrp,
cloudMapOptions:{
名称:“authorService”,
cloudMapNamespace:dnsNamespace,
},
});
//ALB
const httpApiInternalALB=新elbv2.ApplicationLoadBalancer(
这
“httpapialb”,