» random_id
The resource random_id
generates random numbers that are intended to be
used as unique identifiers for other resources.
This resource does use a cryptographic random number generator in order to minimize the chance of collisions, making the results of this resource when a 16-byte identifier is requested of equivalent uniqueness to a type-4 UUID.
This resource can be used in conjunction with resources that have
the create_before_destroy
lifecycle flag set to avoid conflicts with
unique names during the brief period where both the old and new resources
exist concurrently.
» Example Usage
The following example shows how to generate a unique name for an AWS EC2 instance that changes each time a new AMI id is selected.
resource "random_id" "server" {
keepers = {
# Generate a new id each time we switch to a new AMI id
ami_id = "${var.ami_id}"
}
byte_length = 8
}
resource "aws_instance" "server" {
tags = {
Name = "web-server ${random_id.server.hex}"
}
# Read the AMI id "through" the random_id resource to ensure that
# both will change together.
ami = "${random_id.server.keepers.ami_id}"
# ... (other aws_instance arguments) ...
}
» Argument Reference
The following arguments are supported:
-
byte_length
- (Required) The number of random bytes to produce. The minimum value is 1, which produces eight bits of randomness. -
keepers
- (Optional) Arbitrary map of values that, when changed, will trigger a new id to be generated. See the main provider documentation for more information. -
prefix
- (Optional) Arbitrary string to prefix the output value with. This string is supplied as-is, meaning it is not guaranteed to be URL-safe or base64 encoded.
» Attributes Reference
The following attributes are exported:
-
b64_url
- The generated id presented in base64, using the URL-friendly character set: case-sensitive letters, digits and the characters_
and-
. -
b64_std
- The generated id presented in base64 without additional transformations. -
hex
- The generated id presented in padded hexadecimal digits. This result will always be twice as long as the requested byte length. -
dec
- The generated id presented in non-padded decimal digits.
» Import
Random Ids can be imported using the b64_url
with an optional prefix
. This can be used to replace a config value with a value
interpolated from the random provider without experiencing diffs.
Example with no prefix:
$ terraform import random_id.server p-9hUg
Example with prefix (prefix is separated by a ,
):
$ terraform import random_id.server my-prefix-,p-9hUg