diff --git a/docs/resources/secrets_sync_aws_secrets_manager.md b/docs/resources/secrets_sync_aws_secrets_manager.md index 9f3c089..8fb9431 100644 --- a/docs/resources/secrets_sync_aws_secrets_manager.md +++ b/docs/resources/secrets_sync_aws_secrets_manager.md @@ -92,6 +92,7 @@ resource "doppler_secrets_sync_aws_secrets_manager" "backend_prod" { - `delete_behavior` (String) The behavior to be performed on the secrets in the sync target when this resource is deleted or recreated. Either `leave_in_target` (default) or `delete_from_target`. - `kms_key_id` (String) The AWS KMS key used to encrypt the secret (ID, Alias, or ARN) +- `path_behavior` (String) The behavior to modify the provided path. Either `add_doppler_suffix` (default) which appends `doppler` to the provided path or `none` which leaves the path unchanged. - `tags` (Map of String) AWS tags to attach to the secrets - `update_metadata` (Boolean) If enabled, Doppler will update the AWS secret metadata (e.g. KMS key) during every sync. If disabled, Doppler will only set secret metadata for new AWS secrets. Note that Doppler never updates tags for existing AWS secrets. diff --git a/doppler/resource_sync_types.go b/doppler/resource_sync_types.go index baefebc..d2541a9 100644 --- a/doppler/resource_sync_types.go +++ b/doppler/resource_sync_types.go @@ -41,6 +41,25 @@ func resourceSyncAWSSecretsManager() *schema.Resource { Optional: true, ForceNew: true, }, + "path_behavior": { + Description: "The behavior to modify the provided path. Either `add_doppler_suffix` (default) which appends `doppler` to the provided path or `none` which leaves the path unchanged.", + Type: schema.TypeString, + Optional: true, + ForceNew: true, + // Implicitly defaults to "add_doppler_suffix" but not defined here to avoid state migration + ValidateFunc: validation.StringInSlice([]string{"add_doppler_suffix", "none"}, false), + DiffSuppressFunc: func(k, oldValue, newValue string, d *schema.ResourceData) bool { + if oldValue == "" && newValue == "add_doppler_suffix" { + // Adding the default value explicitly + return true + } else if oldValue == "add_doppler_suffix" && newValue == "" { + // Removing the explicit default value + return true + } else { + return false + } + }, + }, }, DataBuilder: func(d *schema.ResourceData) IntegrationData { payload := map[string]interface{}{ @@ -51,10 +70,14 @@ func resourceSyncAWSSecretsManager() *schema.Resource { if kmsKeyId, ok := d.GetOk("kms_key_id"); ok { payload["kms_key_id"] = kmsKeyId } - if updateMetadata, ok := d.GetOk("update_metadata"); ok { payload["update_metadata"] = updateMetadata } + if pathBehavior, ok := d.GetOk("path_behavior"); ok { + payload["use_doppler_suffix"] = pathBehavior == "add_doppler_suffix" + } else { + payload["use_doppler_suffix"] = true + } return payload }, }