【发布时间】:2021-12-12 19:05:55
【问题描述】:
看下面的CDK栈定义:
export class AwsStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const myHostedZone = new route53.HostedZone(this, "HostedZone", {
zoneName: domain,
});
const certificate = new acm.Certificate(this, "Certificate", {
domainName: `*.${domain}`,
validation: acm.CertificateValidation.fromDns(myHostedZone),
});
const image = new ecr.DockerImageAsset(this, "Image", { directory: "." });
const vpc = new ec2.Vpc(this, "ApplicationVpc", { maxAzs: 2 });
const cluster = new ecs.Cluster(this, "Cluster", {
clusterName: "Cluster",
vpc,
});
const taskDefinition = new ecs.FargateTaskDefinition(this, "TaskDef");
taskDefinition.addContainer("DefaultContainer", {
image: ecs.ContainerImage.fromDockerImageAsset(image),
portMappings: [
{ containerPort: 3000, hostPort: 3000 },
{ containerPort: 3001, hostPort: 3001 },
],
});
const service = new ecsPatterns.ApplicationLoadBalancedFargateService(this, "Service", {
cluster,
publicLoadBalancer: true,
taskDefinition,
certificate,
});
service.loadBalancer.addRedirect()
service.listener.addTargets("api", {
priority: 10,
conditions: [elb.ListenerCondition.hostHeaders([`api.${domain}`])],
// what to do???
});
}
}
我想将带有 api.domain 的传入流量映射到端口 3001,其他所有内容都应该映射到端口 3000。
我怎样才能做到这一点?
【问题讨论】:
标签: amazon-web-services aws-cdk aws-fargate aws-load-balancer