using System.Collections.Generic; using Pulumi; using Aws = Pulumi.Aws; using Awsx = Pulumi.Awsx; return await Deployment.RunAsync(() => { var repository = new Awsx.Ecr.Repository("repository"); var image = new Awsx.Ecr.Image("image", new() { RepositoryUrl = repository.Url, Path = "./app", }); var cluster = new Aws.Ecs.Cluster("cluster"); var lb = new Awsx.Lb.ApplicationLoadBalancer("lb"); var service = new Awsx.Ecs.FargateService("service", new() { Cluster = cluster.Arn, AssignPublicIp = true, TaskDefinitionArgs = new Awsx.Ecs.Inputs.FargateServiceTaskDefinitionArgs { Container = new Awsx.Ecs.Inputs.TaskDefinitionContainerDefinitionArgs { Image = image.ImageUri, Cpu = 512, Memory = 128, Essential = true, PortMappings = new[] { new Awsx.Ecs.Inputs.TaskDefinitionPortMappingArgs { TargetGroup = lb.DefaultTargetGroup, }, }, }, }, }); return new Dictionary { ["url"] = lb.LoadBalancer.Apply(loadBalancer => loadBalancer.DnsName), }; });