https://pulumi.com logo
Title
a

adorable-advantage-6937

05/23/2023, 2:28 PM
Question: I’ve got a simple vpc with a rds db and a fargate service as long as an ALB. My objective is to create a listener that automatically redirect traffic from 80 to 443. Api docs are still not good since they refer to alb.createListener that isn’t present in the library. I’ve gotten to this point but failing to understand what targetGroup I should set in my default action for forwarding. I’ve removed other details like vpc creation etc… since they weren’t relevant to my problem.
const cluster = new aws.ecs.Cluster(envRelated('st-primary-ecs-cluster'));
const alb = new <http://awsx.lb|awsx.lb>.ApplicationLoadBalancer(
envRelated("stp-loadbalancer"), {subnetIds: vpc.publicSubnetIds,listeners: [{
port: 443,
protocol: "HTTPS",
certificateArn: certificateArn,
defaultActions: [{ type: "forward", targetGroupArn: ??? },],
} ,
{
port: 80,
protocol: "HTTP",
defaultActions: [
{
type: "redirect",
redirect: {
port: "443",
protocol: "HTTPS",
statusCode: "HTTP_301",
},
},
],
}]});
const repo = new awsx.ecr.Repository(envRelated("ecr-st-repo"), {
forceDelete: true,
});
const imgApi = new awsx.ecr.Image(envRelated('st-api'), { repositoryUrl: repo.url, path: "./api", target: 'production' });
const appServiceApi = new awsx.ecs.FargateService("st-api-svc", {
cluster: cluster.arn,
assignPublicIp: true,
taskDefinitionArgs: {
container: {
image: imgApi.imageUri,
cpu: 102 /*10% of 1024*/,
memory: 50 /*MB*/,
essential: true,
portMappings: [ {containerPort: containerPort , targetGroup: alb.defaultTargetGroup} ],
},
},
desiredCount: 1,
});
a

ambitious-father-68746

05/23/2023, 3:44 PM
I don't see why it wouldn't work. Where do you see the reference to
alb.createListener
? That doesn't look very declarative. Your code kind of matches what I use, but I'm not using crosswalk.
a

adorable-advantage-6937

05/23/2023, 5:12 PM
if you check the https listener you'll see that I left some question mark because i cannot understand what target group should i set there
a

ambitious-father-68746

05/23/2023, 5:48 PM
I think with crosswalk you have to create the target group at the same time, instead of specifying the target group ARN. See https://www.pulumi.com/registry/packages/awsx/api-docs/lb/applicationloadbalancer/#targetgroup Sorry, I've never used crosswalk and it might have some pitfalls that I'm not aware of. Having said that, nothing prevents you from mixing providers together, like awsx and aws. Then you could create the target group using aws and pass it to awsx.
a

adorable-advantage-6937

05/24/2023, 7:08 AM
thx will try. can you share a working infra implementation for this use case that you use successfully ? just to have a good ref to build around
other than that, here https://www.pulumi.com/docs/clouds/aws/guides/elb/ the doc states using createListener/createTargetGroup methods that are not anymore included in crosswalk library
a

ambitious-father-68746

05/24/2023, 11:17 AM
Please note that to use those methods you need an ALB first, it seems
They're methods of the load balancer, not the crosswalk library itself
const alb = new awsx.lb.ApplicationLoadBalancer("web-traffic");
const listener = alb.createListener("web-listener", { port: 80 });
Having said that, I can't find a reference to them in the docs. I'm sorry I'm not a crosswalk nor javascript Pulumi user, my knowledge isn't great with them...