From 942d72b3e5abeb60ab208bfa478296cc7196d9b5 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 8 Sep 2023 12:13:44 -0700 Subject: [PATCH 1/3] Adds bucket name to bucket not found error message --- internal/backend/remote-state/s3/backend_state.go | 2 +- internal/backend/remote-state/s3/client.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/backend/remote-state/s3/backend_state.go b/internal/backend/remote-state/s3/backend_state.go index fb8e780422..bed5f7a803 100644 --- a/internal/backend/remote-state/s3/backend_state.go +++ b/internal/backend/remote-state/s3/backend_state.go @@ -45,7 +45,7 @@ func (b *Backend) Workspaces() ([]string, error) { page, err := pages.NextPage(ctx) if err != nil { if IsA[*s3types.NoSuchBucket](err) { - return nil, fmt.Errorf(errS3NoSuchBucket, err) + return nil, fmt.Errorf(errS3NoSuchBucket, b.bucketName, err) } return nil, err } diff --git a/internal/backend/remote-state/s3/client.go b/internal/backend/remote-state/s3/client.go index 8bdcab79ab..3a3798c249 100644 --- a/internal/backend/remote-state/s3/client.go +++ b/internal/backend/remote-state/s3/client.go @@ -120,7 +120,7 @@ func (c *RemoteClient) get(ctx context.Context) (*remote.Payload, error) { if err != nil { switch { case IsA[*s3types.NoSuchBucket](err): - return nil, fmt.Errorf(errS3NoSuchBucket, err) + return nil, fmt.Errorf(errS3NoSuchBucket, c.bucketName, err) case IsA[*s3types.NotFound](err): return nil, nil } @@ -147,7 +147,7 @@ func (c *RemoteClient) get(ctx context.Context) (*remote.Payload, error) { if err != nil { switch { case IsA[*s3types.NoSuchBucket](err): - return nil, fmt.Errorf(errS3NoSuchBucket, err) + return nil, fmt.Errorf(errS3NoSuchBucket, c.bucketName, err) case IsA[*s3types.NoSuchKey](err): return nil, nil } @@ -459,7 +459,7 @@ to manually verify the remote state and update the Digest value stored in the DynamoDB table to the following value: %x ` -const errS3NoSuchBucket = `S3 bucket does not exist. +const errS3NoSuchBucket = `S3 bucket %q does not exist. The referenced S3 bucket must have been previously created. If the S3 bucket was created within the last minute, please wait for a minute or two and try From 7dcd80184f36591b33e8f62b04e4e6c8a6598926 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 8 Sep 2023 12:24:48 -0700 Subject: [PATCH 2/3] Adds information to S3 errors --- internal/backend/remote-state/s3/backend_state.go | 2 +- internal/backend/remote-state/s3/client.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/backend/remote-state/s3/backend_state.go b/internal/backend/remote-state/s3/backend_state.go index bed5f7a803..742c100025 100644 --- a/internal/backend/remote-state/s3/backend_state.go +++ b/internal/backend/remote-state/s3/backend_state.go @@ -47,7 +47,7 @@ func (b *Backend) Workspaces() ([]string, error) { if IsA[*s3types.NoSuchBucket](err) { return nil, fmt.Errorf(errS3NoSuchBucket, b.bucketName, err) } - return nil, err + return nil, fmt.Errorf("Unable to list objects in S3 bucket %q: %w", b.bucketName, err) } for _, obj := range page.Contents { diff --git a/internal/backend/remote-state/s3/client.go b/internal/backend/remote-state/s3/client.go index 3a3798c249..e2794ef893 100644 --- a/internal/backend/remote-state/s3/client.go +++ b/internal/backend/remote-state/s3/client.go @@ -124,7 +124,7 @@ func (c *RemoteClient) get(ctx context.Context) (*remote.Payload, error) { case IsA[*s3types.NotFound](err): return nil, nil } - return nil, err + return nil, fmt.Errorf("Unable to access object %q in S3 bucket %q: %w", c.path, c.bucketName, err) } // Pre-allocate the full buffer to avoid re-allocations and GC @@ -151,7 +151,7 @@ func (c *RemoteClient) get(ctx context.Context) (*remote.Payload, error) { case IsA[*s3types.NoSuchKey](err): return nil, nil } - return nil, err + return nil, fmt.Errorf("Unable to access object %q in S3 bucket %q: %w", c.path, c.bucketName, err) } sum := md5.Sum(w.Bytes()) From 5907a82a49244941ff1396391b8f40bda032a3d0 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 8 Sep 2023 12:30:53 -0700 Subject: [PATCH 3/3] Adds information to DynamoDB errors --- internal/backend/remote-state/s3/client.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/backend/remote-state/s3/client.go b/internal/backend/remote-state/s3/client.go index e2794ef893..0f56d44ff0 100644 --- a/internal/backend/remote-state/s3/client.go +++ b/internal/backend/remote-state/s3/client.go @@ -300,7 +300,7 @@ func (c *RemoteClient) getMD5(ctx context.Context) ([]byte, error) { resp, err := c.dynClient.GetItem(ctx, getParams) if err != nil { - return nil, err + return nil, fmt.Errorf("Unable to retrieve item from DynamoDB table %q: %w", c.ddbTable, err) } var val string @@ -362,7 +362,7 @@ func (c *RemoteClient) deleteMD5(ctx context.Context) error { TableName: aws.String(c.ddbTable), } if _, err := c.dynClient.DeleteItem(ctx, params); err != nil { - return err + return fmt.Errorf("Unable to delete item from DynamoDB table %q: %w", c.ddbTable, err) } return nil } @@ -381,7 +381,7 @@ func (c *RemoteClient) getLockInfo(ctx context.Context) (*statemgr.LockInfo, err resp, err := c.dynClient.GetItem(ctx, getParams) if err != nil { - return nil, err + return nil, fmt.Errorf("Unable to retrieve item from DynamoDB table %q: %w", c.ddbTable, err) } var infoData string