page_title: “random_string Resource - terraform-provider-random” subcategory: "" description: |- The resource random_string generates a random permutation of alphanumeric characters and optionally special characters. This resource does use a cryptographic random number generator. Historically this resource's intended usage has been ambiguous as the original example used it in a password. For backwards compatibility it will continue to exist. For unique ids please use random_id id.html, for sensitive random values please use random_password password.html.

random_string (Resource)

The resource random_string generates a random permutation of alphanumeric characters and optionally special characters.

This resource does use a cryptographic random number generator.

Historically this resource's intended usage has been ambiguous as the original example used it in a password. For backwards compatibility it will continue to exist. For unique ids please use random_id, for sensitive random values please use random_password.

Example Usage

# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug
from constructs import Construct
from cdktf import TerraformStack
#
# Provider bindings are generated by running `cdktf get`.
# See https://cdk.tf/provider-generation for more details.
#
from imports.random.string_resource import StringResource
class MyConvertedCode(TerraformStack):
    def __init__(self, scope, name):
        super().__init__(scope, name)
        StringResource(self, "random",
            length=16,
            override_special="/@£$",
            special=True
        )

Schema

Required

  • length (Number) The length of the string desired. The minimum value for length is 1 and, length must also be >= (min_upper + min_lower + min_numeric + min_special).

Optional

  • keepers (Map of String) Arbitrary map of values that, when changed, will trigger recreation of resource. See the main provider documentation for more information.
  • lower (Boolean) Include lowercase alphabet characters in the result. Default value is true.
  • min_lower (Number) Minimum number of lowercase alphabet characters in the result. Default value is 0.
  • min_numeric (Number) Minimum number of numeric characters in the result. Default value is 0.
  • min_special (Number) Minimum number of special characters in the result. Default value is 0.
  • min_upper (Number) Minimum number of uppercase alphabet characters in the result. Default value is 0.
  • number (Boolean, Deprecated) Include numeric characters in the result. Default value is true. NOTE: This is deprecated, use numeric instead.
  • numeric (Boolean) Include numeric characters in the result. Default value is true.
  • override_special (String) Supply your own list of special characters to use for string generation. This overrides the default character list in the special argument. The special argument must still be set to true for any overwritten characters to be used in generation.
  • special (Boolean) Include special characters in the result. These are !@#$%&*()-_=+[]{}<>:?. Default value is true.
  • upper (Boolean) Include uppercase alphabet characters in the result. Default value is true.

Read-Only

  • id (String) The generated random string.
  • result (String) The generated random string.

Import

Import is supported using the following syntax:

terraform import random_string.test test

Limitations of Import

Any attribute values that are specified within Terraform config will be ignored during import and all attributes that have defaults defined within the schema will have the default assigned.

For instance, using the following config during import:

# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug
from constructs import Construct
from cdktf import TerraformStack
#
# Provider bindings are generated by running `cdktf get`.
# See https://cdk.tf/provider-generation for more details.
#
from imports.random.string_resource import StringResource
class MyConvertedCode(TerraformStack):
    def __init__(self, scope, name):
        super().__init__(scope, name)
        StringResource(self, "test",
            length=16,
            lower=False
        )

Then importing the resource using terraform import random_string.test test, would result in the triggering of a replacement (i.e., destroy-create) during the next terraform apply.

Avoiding Replacement

If the resource were imported using terraform import random_string.test test, replacement can be avoided by using:

  1. Attribute values that match the imported ID and defaults:

DO NOT EDIT. Code generated by ‘cdktf convert’ - Please report bugs at https://cdk.tf/bug

from constructs import Construct from cdktf import TerraformStack

Provider bindings are generated by running cdktf get.

See https://cdk.tf/provider-generation for more details.

from imports.random.string_resource import StringResource class MyConvertedCode(TerraformStack): def init(self, scope, name): super().init(scope, name) StringResource(self, “test”, length=4, lower=True )


2. Attribute values that match the imported ID and omit the attributes with defaults: ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug from constructs import Construct from cdktf import TerraformStack # # Provider bindings are generated by running `cdktf get`. # See https://cdk.tf/provider-generation for more details. # from imports.random.string_resource import StringResource class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) StringResource(self, "test", length=4 )
  1. ignore_changes specifying the attributes to ignore:

DO NOT EDIT. Code generated by ‘cdktf convert’ - Please report bugs at https://cdk.tf/bug

from cdktf import TerraformResourceLifecycle from constructs import Construct from cdktf import TerraformStack

Provider bindings are generated by running cdktf get.

See https://cdk.tf/provider-generation for more details.

from imports.random.string_resource import StringResource class MyConvertedCode(TerraformStack): def init(self, scope, name): super().init(scope, name) StringResource(self, “test”, length=16, lifecycle=TerraformResourceLifecycle( ignore_changes=[length, lower] ), lower=False )


**NOTE** `ignore_changes` is only required until the resource is recreated after import, after which it will use the configuration values specified. <!-- cache-key: cdktf-0.19.0 input-54afc295b1f13e4a8837c027e2fd4b275761a58e02a58fa325f8460acce4ca8f 556251879b8ed0dc4c87a76b568667e0ab5e2c46efdd14a05c556daf05678783-->