package main import ( "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/ecs" "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/lb" "github.com/pulumi/pulumi-awsx/sdk/go/awsx/ecs" "github.com/pulumi/pulumi-awsx/sdk/go/awsx/lb" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) func main() { pulumi.Run(func(ctx *pulumi.Context) error { cluster, err := ecs.NewCluster(ctx, "cluster", nil) if err != nil { return err } lb, err := lb.NewApplicationLoadBalancer(ctx, "lb", nil) if err != nil { return err } _, err = ecs.NewFargateService(ctx, "service", &ecs.FargateServiceArgs{ Cluster: cluster.Arn, AssignPublicIp: pulumi.Bool(true), DesiredCount: pulumi.Int(2), TaskDefinitionArgs: &ecs.FargateServiceTaskDefinitionArgs{ Container: &ecs.TaskDefinitionContainerDefinitionArgs{ Image: pulumi.String("nginx:latest"), Cpu: pulumi.Int(512), Memory: pulumi.Int(128), Essential: pulumi.Bool(true), PortMappings: []ecs.TaskDefinitionPortMappingArgs{ &ecs.TaskDefinitionPortMappingArgs{ TargetGroup: lb.DefaultTargetGroup, }, }, }, }, }) if err != nil { return err } ctx.Export("url", lb.LoadBalancer.ApplyT(func(loadBalancer *lb.LoadBalancer) (string, error) { return loadBalancer.DnsName, nil }).(pulumi.StringOutput)) return nil }) }