diff --git a/.changelog/44513.txt b/.changelog/44513.txt new file mode 100644 index 000000000000..1f9a6ef108b9 --- /dev/null +++ b/.changelog/44513.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_appsync_resolver: Fix `caching_config.caching_keys` order preservation to prevent incorrect cache key generation +``` diff --git a/internal/service/appsync/resolver.go b/internal/service/appsync/resolver.go index 2b1deba8e782..2e4a6ed5313b 100644 --- a/internal/service/appsync/resolver.go +++ b/internal/service/appsync/resolver.go @@ -56,7 +56,7 @@ func resourceResolver() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "caching_keys": { - Type: schema.TypeSet, + Type: schema.TypeList, Optional: true, Elem: &schema.Schema{ Type: schema.TypeString, @@ -452,7 +452,7 @@ func expandResolverCachingConfig(tfList []any) *awstypes.CachingConfig { tfMap := tfList[0].(map[string]any) apiObject := &awstypes.CachingConfig{ - CachingKeys: flex.ExpandStringValueSet(tfMap["caching_keys"].(*schema.Set)), + CachingKeys: flex.ExpandStringValueList(tfMap["caching_keys"].([]any)), } if v, ok := tfMap["ttl"].(int); ok && v != 0 { diff --git a/internal/service/appsync/resolver_test.go b/internal/service/appsync/resolver_test.go index 91074bc76f50..8709f88b824c 100644 --- a/internal/service/appsync/resolver_test.go +++ b/internal/service/appsync/resolver_test.go @@ -347,6 +347,8 @@ func testAccResolver_caching(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckResolverExists(ctx, resourceName, &resolver), resource.TestCheckResourceAttr(resourceName, "caching_config.0.caching_keys.#", "2"), + resource.TestCheckResourceAttr(resourceName, "caching_config.0.caching_keys.0", "$context.identity.sub"), + resource.TestCheckResourceAttr(resourceName, "caching_config.0.caching_keys.1", "$context.arguments.id"), resource.TestCheckResourceAttr(resourceName, "caching_config.0.ttl", "60"), ), },