From 9edfafc967e31fe7d5bcc07a3e3e952dc028a07a Mon Sep 17 00:00:00 2001 From: fujiwara Date: Fri, 30 Aug 2024 15:07:23 +0900 Subject: [PATCH 1/2] fix resolving name of service connect namespace. refs #744 --- ecspresso.go | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/ecspresso.go b/ecspresso.go index dfc040e1..3e8af276 100644 --- a/ecspresso.go +++ b/ecspresso.go @@ -14,6 +14,7 @@ import ( "time" "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/applicationautoscaling" aasTypes "github.com/aws/aws-sdk-go-v2/service/applicationautoscaling/types" "github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs" @@ -97,21 +98,28 @@ func (d *App) newServiceFromTypes(ctx context.Context, in types.Service) (*Servi scc := dp.ServiceConnectConfiguration sv.ServiceConnectConfiguration = scc if scc != nil { - // resolve sd namespace arn to name - id := arnToName(aws.ToString(scc.Namespace)) - res, err := d.sd.GetNamespace(ctx, &servicediscovery.GetNamespaceInput{ - Id: &id, - }) - if err != nil { - var oe *smithy.OperationError - if errors.As(err, &oe) { - d.Log("[WARNING] failed to get namespace: %s", oe) - } else { - return nil, fmt.Errorf("failed to get namespace: %w", err) + d.Log("[DEBUG] ServiceConnectConfiguration.Namespace: %s", *scc.Namespace) + if _, err := arn.Parse(*scc.Namespace); err != nil { + // is name (do nothing) + } else { + // is ARN, resolve name + id := arnToName(*scc.Namespace) + d.Log("[DEBUG] resolving namespace name by %s", id) + res, err := d.sd.GetNamespace(ctx, &servicediscovery.GetNamespaceInput{ + Id: &id, + }) + if err != nil { + var oe *smithy.OperationError + if errors.As(err, &oe) { + d.Log("[WARNING] failed to get namespace: %s", oe) + } else { + return nil, fmt.Errorf("failed to get namespace: %w", err) + } + } + if res != nil && res.Namespace != nil { + d.Log("[DEBUG] resolved namespace name: %s", *res.Namespace.Name) + scc.Namespace = res.Namespace.Name } - } - if res.Namespace != nil { - scc.Namespace = res.Namespace.Name } } @@ -469,7 +477,7 @@ func (d *App) findLatestTaskDefinitionArn(ctx context.Context, family string) (s }, ) if err != nil { - return "", fmt.Errorf("failed to list taskdefinitions: %w", err) + return "", fmt.Errorf("failed to list task definitions: %w", err) } if len(out.TaskDefinitionArns) == 0 { return "", ErrNotFound(fmt.Sprintf("no task definitions family %s are found", family)) From 3288b46811548e968873b5c1a753faaba1b793dd Mon Sep 17 00:00:00 2001 From: fujiwara Date: Fri, 30 Aug 2024 15:37:04 +0900 Subject: [PATCH 2/2] no need to resolve service connect name from arn --- ecspresso.go | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/ecspresso.go b/ecspresso.go index 3e8af276..13ae923c 100644 --- a/ecspresso.go +++ b/ecspresso.go @@ -14,7 +14,6 @@ import ( "time" "github.com/aws/aws-sdk-go-v2/aws" - "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/applicationautoscaling" aasTypes "github.com/aws/aws-sdk-go-v2/service/applicationautoscaling/types" "github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs" @@ -95,32 +94,9 @@ func (d *App) newServiceFromTypes(ctx context.Context, in types.Service) (*Servi d.Log("[DEBUG] deployment: %s %s", *dp.Id, *dp.Status) // ServiceConnect - scc := dp.ServiceConnectConfiguration - sv.ServiceConnectConfiguration = scc - if scc != nil { - d.Log("[DEBUG] ServiceConnectConfiguration.Namespace: %s", *scc.Namespace) - if _, err := arn.Parse(*scc.Namespace); err != nil { - // is name (do nothing) - } else { - // is ARN, resolve name - id := arnToName(*scc.Namespace) - d.Log("[DEBUG] resolving namespace name by %s", id) - res, err := d.sd.GetNamespace(ctx, &servicediscovery.GetNamespaceInput{ - Id: &id, - }) - if err != nil { - var oe *smithy.OperationError - if errors.As(err, &oe) { - d.Log("[WARNING] failed to get namespace: %s", oe) - } else { - return nil, fmt.Errorf("failed to get namespace: %w", err) - } - } - if res != nil && res.Namespace != nil { - d.Log("[DEBUG] resolved namespace name: %s", *res.Namespace.Name) - scc.Namespace = res.Namespace.Name - } - } + if dp.ServiceConnectConfiguration != nil { + d.Log("[DEBUG] ServiceConnectConfiguration: %#v", dp.ServiceConnectConfiguration) + sv.ServiceConnectConfiguration = dp.ServiceConnectConfiguration } // VolumeConfigurations