diff --git a/ecs/pkg/amazon/backend/up.go b/ecs/pkg/amazon/backend/up.go index ee871fe5..d7279416 100644 --- a/ecs/pkg/amazon/backend/up.go +++ b/ecs/pkg/amazon/backend/up.go @@ -3,6 +3,9 @@ package backend import ( "context" "fmt" + "os" + "os/signal" + "syscall" "github.com/compose-spec/compose-go/cli" "github.com/compose-spec/compose-go/types" @@ -84,6 +87,15 @@ func (b *Backend) Up(ctx context.Context, options cli.ProjectOptions) error { for k := range template.Resources { w.ResourceEvent(k, "PENDING", "") } + + signalChan := make(chan os.Signal, 1) + signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM) + go func() { + <-signalChan + fmt.Println("user interrupted deployment. Deleting stack...") + b.Down(ctx, options) + }() + return b.WaitStackCompletion(ctx, project.Name, operation, w) } diff --git a/ecs/pkg/amazon/sdk/sdk.go b/ecs/pkg/amazon/sdk/sdk.go index 7b5af748..2dcd2ca8 100644 --- a/ecs/pkg/amazon/sdk/sdk.go +++ b/ecs/pkg/amazon/sdk/sdk.go @@ -181,7 +181,7 @@ func (s sdk) CreateStack(ctx context.Context, name string, template *cf.Template StackName: aws.String(name), TemplateBody: aws.String(string(json)), Parameters: param, - TimeoutInMinutes: aws.Int64(15), + TimeoutInMinutes: nil, Capabilities: []*string{ aws.String(cloudformation.CapabilityCapabilityIam), }, diff --git a/ecs/pkg/compose/types.go b/ecs/pkg/compose/types.go index 1426d1be..807b9c7a 100644 --- a/ecs/pkg/compose/types.go +++ b/ecs/pkg/compose/types.go @@ -9,11 +9,6 @@ type StackResource struct { Status string } -type PortMapping struct { - Source int - Target int -} - type LoadBalancer struct { URL string TargetPort int