From 7d571500477942c42444052fc2083165772f1bf0 Mon Sep 17 00:00:00 2001 From: Andrei Ilyushevich Date: Thu, 16 May 2024 13:57:07 -0700 Subject: [PATCH 1/7] Set names.AttrKMSKeyARN with table.SSEDescription.KMSMasterKeyArn if table.SSEDescription.KMSMasterKeyArn != nil --- internal/service/dynamodb/table_replica.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/service/dynamodb/table_replica.go b/internal/service/dynamodb/table_replica.go index 92e8fa3b90af..f2ec172f062b 100644 --- a/internal/service/dynamodb/table_replica.go +++ b/internal/service/dynamodb/table_replica.go @@ -296,6 +296,12 @@ func resourceTableReplicaReadReplica(ctx context.Context, d *schema.ResourceData if err != nil && !tfawserr.ErrCodeEquals(err, errCodeUnknownOperationException, errCodeTableNotFoundException) { return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionReading, resNameTableReplica, d.Id(), fmt.Errorf("continuous backups: %w", err)) } + + if d.Get(names.AttrKMSKeyARN) == nil { + if table.SSEDescription.KMSMasterKeyArn != nil { + d.Set(names.AttrKMSKeyARN, table.SSEDescription.KMSMasterKeyArn) + } + } if pitrOut != nil && pitrOut.ContinuousBackupsDescription != nil && pitrOut.ContinuousBackupsDescription.PointInTimeRecoveryDescription != nil { d.Set("point_in_time_recovery", pitrOut.ContinuousBackupsDescription.PointInTimeRecoveryDescription.PointInTimeRecoveryStatus == awstypes.PointInTimeRecoveryStatusEnabled) From a45b7ba961c8747c078c59ab5f46206a8b4456d8 Mon Sep 17 00:00:00 2001 From: Andrei Ilyushevich Date: Thu, 16 May 2024 15:32:40 -0700 Subject: [PATCH 2/7] remove d.Get(names.AttrKMSKeyARN) == nil because it is false --- internal/service/dynamodb/table_replica.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/internal/service/dynamodb/table_replica.go b/internal/service/dynamodb/table_replica.go index f2ec172f062b..89287f694cc2 100644 --- a/internal/service/dynamodb/table_replica.go +++ b/internal/service/dynamodb/table_replica.go @@ -296,11 +296,9 @@ func resourceTableReplicaReadReplica(ctx context.Context, d *schema.ResourceData if err != nil && !tfawserr.ErrCodeEquals(err, errCodeUnknownOperationException, errCodeTableNotFoundException) { return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionReading, resNameTableReplica, d.Id(), fmt.Errorf("continuous backups: %w", err)) } - - if d.Get(names.AttrKMSKeyARN) == nil { - if table.SSEDescription.KMSMasterKeyArn != nil { - d.Set(names.AttrKMSKeyARN, table.SSEDescription.KMSMasterKeyArn) - } + + if table.SSEDescription.KMSMasterKeyArn != nil { + d.Set(names.AttrKMSKeyARN, table.SSEDescription.KMSMasterKeyArn) } if pitrOut != nil && pitrOut.ContinuousBackupsDescription != nil && pitrOut.ContinuousBackupsDescription.PointInTimeRecoveryDescription != nil { From 44eaac1248f3d9e635e0080d85a5015d4fa8dea4 Mon Sep 17 00:00:00 2001 From: Andrei Ilyushevich Date: Thu, 16 May 2024 15:43:28 -0700 Subject: [PATCH 3/7] Add changelog --- .changelog/37570.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/37570.txt diff --git a/.changelog/37570.txt b/.changelog/37570.txt new file mode 100644 index 000000000000..8a99d073bc5a --- /dev/null +++ b/.changelog/37570.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_dynamodb_table_replica: Fix Getting empty KMS key for DynamoDB replica +``` From 80a81a34bdff7d93d7cfb58f277732e264a48c29 Mon Sep 17 00:00:00 2001 From: Andrei Ilyushevich Date: Fri, 17 May 2024 11:38:02 -0700 Subject: [PATCH 4/7] add table.SSEDescription != nil to avoid invalid memory address or nil pointer dereference error if table.SSEDescription not exist --- internal/service/dynamodb/table_replica.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/dynamodb/table_replica.go b/internal/service/dynamodb/table_replica.go index 89287f694cc2..bb9f713eaf76 100644 --- a/internal/service/dynamodb/table_replica.go +++ b/internal/service/dynamodb/table_replica.go @@ -297,7 +297,7 @@ func resourceTableReplicaReadReplica(ctx context.Context, d *schema.ResourceData return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionReading, resNameTableReplica, d.Id(), fmt.Errorf("continuous backups: %w", err)) } - if table.SSEDescription.KMSMasterKeyArn != nil { + if table.SSEDescription != nil && table.SSEDescription.KMSMasterKeyArn != nil { d.Set(names.AttrKMSKeyARN, table.SSEDescription.KMSMasterKeyArn) } From 77ac7bf7535dd693741e324279fc65c4c23f5f69 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 20 May 2024 09:50:24 -0400 Subject: [PATCH 5/7] Tweak CHANGELOG entry. --- .changelog/37570.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/37570.txt b/.changelog/37570.txt index 8a99d073bc5a..557dd10663dd 100644 --- a/.changelog/37570.txt +++ b/.changelog/37570.txt @@ -1,3 +1,3 @@ ```release-note:bug -resource/aws_dynamodb_table_replica: Fix Getting empty KMS key for DynamoDB replica +resource/aws_dynamodb_table_replica: Set `kms_key_arn` on import ``` From aad9626941656b0e1e466df44ee2df245d0c278b Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 20 May 2024 10:18:26 -0400 Subject: [PATCH 6/7] Fix 'TestAccDynamoDBTableReplica_pitrDefault'. --- internal/service/dynamodb/table_replica.go | 2 +- internal/service/dynamodb/table_replica_test.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/service/dynamodb/table_replica.go b/internal/service/dynamodb/table_replica.go index bb9f713eaf76..6ca59eacfec1 100644 --- a/internal/service/dynamodb/table_replica.go +++ b/internal/service/dynamodb/table_replica.go @@ -75,8 +75,8 @@ func resourceTableReplica() *schema.Resource { Type: schema.TypeString, Optional: true, Computed: true, - ValidateFunc: verify.ValidARN, ForceNew: true, + ValidateFunc: verify.ValidARN, }, "point_in_time_recovery": { // direct to replica Type: schema.TypeBool, diff --git a/internal/service/dynamodb/table_replica_test.go b/internal/service/dynamodb/table_replica_test.go index abb809d04e09..e47f5ec1b9e6 100644 --- a/internal/service/dynamodb/table_replica_test.go +++ b/internal/service/dynamodb/table_replica_test.go @@ -176,7 +176,7 @@ func TestAccDynamoDBTableReplica_pitrDefault(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTableReplicaExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "point_in_time_recovery", "false"), - resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyARN, ""), + resource.TestCheckResourceAttrSet(resourceName, names.AttrKMSKeyARN), ), }, { @@ -184,7 +184,7 @@ func TestAccDynamoDBTableReplica_pitrDefault(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTableReplicaExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "point_in_time_recovery", "true"), - resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyARN, ""), + resource.TestCheckResourceAttrSet(resourceName, names.AttrKMSKeyARN), ), }, { @@ -192,7 +192,7 @@ func TestAccDynamoDBTableReplica_pitrDefault(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTableReplicaExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "point_in_time_recovery", "false"), - resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyARN, ""), + resource.TestCheckResourceAttrSet(resourceName, names.AttrKMSKeyARN), ), }, { From 2b2d022f0495cca92501ea776a13a5ce4fc0715f Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 20 May 2024 10:25:07 -0400 Subject: [PATCH 7/7] Tweak CHANGELOG entry. --- .changelog/37570.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/37570.txt b/.changelog/37570.txt index 557dd10663dd..e2a6da5e1082 100644 --- a/.changelog/37570.txt +++ b/.changelog/37570.txt @@ -1,3 +1,3 @@ ```release-note:bug -resource/aws_dynamodb_table_replica: Set `kms_key_arn` on import +resource/aws_dynamodb_table_replica: Correctly set `kms_key_arn` on Read ```