The gcp:parametermanager/regionalParameterVersion:RegionalParameterVersion resource, part of the Pulumi GCP provider, stores the actual value of a regional parameter as a versioned resource. This guide focuses on three capabilities: plain text storage, JSON-formatted configuration, and file-based parameter loading.
Parameter versions belong to RegionalParameter resources and may reference external configuration files. The examples are intentionally small. Combine them with your own parameter definitions and configuration management workflows.
Store a plain text parameter value
Most deployments start by storing simple text values without format constraints.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const regional_parameter_basic = new gcp.parametermanager.RegionalParameter("regional-parameter-basic", {
parameterId: "regional_parameter",
location: "us-central1",
});
const regional_parameter_version_basic = new gcp.parametermanager.RegionalParameterVersion("regional-parameter-version-basic", {
parameter: regional_parameter_basic.id,
parameterVersionId: "regional_parameter_version",
parameterData: "regional-parameter-version-data",
});
import pulumi
import pulumi_gcp as gcp
regional_parameter_basic = gcp.parametermanager.RegionalParameter("regional-parameter-basic",
parameter_id="regional_parameter",
location="us-central1")
regional_parameter_version_basic = gcp.parametermanager.RegionalParameterVersion("regional-parameter-version-basic",
parameter=regional_parameter_basic.id,
parameter_version_id="regional_parameter_version",
parameter_data="regional-parameter-version-data")
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/parametermanager"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
regional_parameter_basic, err := parametermanager.NewRegionalParameter(ctx, "regional-parameter-basic", ¶metermanager.RegionalParameterArgs{
ParameterId: pulumi.String("regional_parameter"),
Location: pulumi.String("us-central1"),
})
if err != nil {
return err
}
_, err = parametermanager.NewRegionalParameterVersion(ctx, "regional-parameter-version-basic", ¶metermanager.RegionalParameterVersionArgs{
Parameter: regional_parameter_basic.ID(),
ParameterVersionId: pulumi.String("regional_parameter_version"),
ParameterData: pulumi.String("regional-parameter-version-data"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var regional_parameter_basic = new Gcp.ParameterManager.RegionalParameter("regional-parameter-basic", new()
{
ParameterId = "regional_parameter",
Location = "us-central1",
});
var regional_parameter_version_basic = new Gcp.ParameterManager.RegionalParameterVersion("regional-parameter-version-basic", new()
{
Parameter = regional_parameter_basic.Id,
ParameterVersionId = "regional_parameter_version",
ParameterData = "regional-parameter-version-data",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.parametermanager.RegionalParameter;
import com.pulumi.gcp.parametermanager.RegionalParameterArgs;
import com.pulumi.gcp.parametermanager.RegionalParameterVersion;
import com.pulumi.gcp.parametermanager.RegionalParameterVersionArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var regional_parameter_basic = new RegionalParameter("regional-parameter-basic", RegionalParameterArgs.builder()
.parameterId("regional_parameter")
.location("us-central1")
.build());
var regional_parameter_version_basic = new RegionalParameterVersion("regional-parameter-version-basic", RegionalParameterVersionArgs.builder()
.parameter(regional_parameter_basic.id())
.parameterVersionId("regional_parameter_version")
.parameterData("regional-parameter-version-data")
.build());
}
}
resources:
regional-parameter-basic:
type: gcp:parametermanager:RegionalParameter
properties:
parameterId: regional_parameter
location: us-central1
regional-parameter-version-basic:
type: gcp:parametermanager:RegionalParameterVersion
properties:
parameter: ${["regional-parameter-basic"].id}
parameterVersionId: regional_parameter_version
parameterData: regional-parameter-version-data
The parameter property references the parent RegionalParameter resource. The parameterVersionId provides a unique identifier within that parameter. The parameterData contains the actual configuration value, which is stored encrypted and marked as sensitive in Pulumi state.
Store structured JSON configuration data
Applications often need structured configuration that can be parsed and validated.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const regional_parameter_basic = new gcp.parametermanager.RegionalParameter("regional-parameter-basic", {
parameterId: "regional_parameter",
format: "JSON",
location: "us-central1",
});
const regional_parameter_version_with_json_format = new gcp.parametermanager.RegionalParameterVersion("regional-parameter-version-with-json-format", {
parameter: regional_parameter_basic.id,
parameterVersionId: "regional_parameter_version",
parameterData: JSON.stringify({
key1: "val1",
key2: "val2",
}),
});
import pulumi
import json
import pulumi_gcp as gcp
regional_parameter_basic = gcp.parametermanager.RegionalParameter("regional-parameter-basic",
parameter_id="regional_parameter",
format="JSON",
location="us-central1")
regional_parameter_version_with_json_format = gcp.parametermanager.RegionalParameterVersion("regional-parameter-version-with-json-format",
parameter=regional_parameter_basic.id,
parameter_version_id="regional_parameter_version",
parameter_data=json.dumps({
"key1": "val1",
"key2": "val2",
}))
package main
import (
"encoding/json"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/parametermanager"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
regional_parameter_basic, err := parametermanager.NewRegionalParameter(ctx, "regional-parameter-basic", ¶metermanager.RegionalParameterArgs{
ParameterId: pulumi.String("regional_parameter"),
Format: pulumi.String("JSON"),
Location: pulumi.String("us-central1"),
})
if err != nil {
return err
}
tmpJSON0, err := json.Marshal(map[string]interface{}{
"key1": "val1",
"key2": "val2",
})
if err != nil {
return err
}
json0 := string(tmpJSON0)
_, err = parametermanager.NewRegionalParameterVersion(ctx, "regional-parameter-version-with-json-format", ¶metermanager.RegionalParameterVersionArgs{
Parameter: regional_parameter_basic.ID(),
ParameterVersionId: pulumi.String("regional_parameter_version"),
ParameterData: pulumi.String(json0),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var regional_parameter_basic = new Gcp.ParameterManager.RegionalParameter("regional-parameter-basic", new()
{
ParameterId = "regional_parameter",
Format = "JSON",
Location = "us-central1",
});
var regional_parameter_version_with_json_format = new Gcp.ParameterManager.RegionalParameterVersion("regional-parameter-version-with-json-format", new()
{
Parameter = regional_parameter_basic.Id,
ParameterVersionId = "regional_parameter_version",
ParameterData = JsonSerializer.Serialize(new Dictionary<string, object?>
{
["key1"] = "val1",
["key2"] = "val2",
}),
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.parametermanager.RegionalParameter;
import com.pulumi.gcp.parametermanager.RegionalParameterArgs;
import com.pulumi.gcp.parametermanager.RegionalParameterVersion;
import com.pulumi.gcp.parametermanager.RegionalParameterVersionArgs;
import static com.pulumi.codegen.internal.Serialization.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var regional_parameter_basic = new RegionalParameter("regional-parameter-basic", RegionalParameterArgs.builder()
.parameterId("regional_parameter")
.format("JSON")
.location("us-central1")
.build());
var regional_parameter_version_with_json_format = new RegionalParameterVersion("regional-parameter-version-with-json-format", RegionalParameterVersionArgs.builder()
.parameter(regional_parameter_basic.id())
.parameterVersionId("regional_parameter_version")
.parameterData(serializeJson(
jsonObject(
jsonProperty("key1", "val1"),
jsonProperty("key2", "val2")
)))
.build());
}
}
resources:
regional-parameter-basic:
type: gcp:parametermanager:RegionalParameter
properties:
parameterId: regional_parameter
format: JSON
location: us-central1
regional-parameter-version-with-json-format:
type: gcp:parametermanager:RegionalParameterVersion
properties:
parameter: ${["regional-parameter-basic"].id}
parameterVersionId: regional_parameter_version
parameterData:
fn::toJSON:
key1: val1
key2: val2
When the parent parameter has format set to JSON, you can store structured objects. The JSON.stringify call converts the JavaScript object into a JSON string that Parameter Manager validates against the declared format. This ensures configuration integrity at write time.
Load JSON configuration from a file
Teams managing large configurations often maintain them as separate files in version control.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
import * as std from "@pulumi/std";
const regional_parameter_basic = new gcp.parametermanager.RegionalParameter("regional-parameter-basic", {
parameterId: "regional_parameter",
format: "JSON",
location: "us-central1",
});
const regional_parameter_version_with_json_format_with_file = new gcp.parametermanager.RegionalParameterVersion("regional-parameter-version-with-json-format-with-file", {
parameter: regional_parameter_basic.id,
parameterVersionId: "regional_parameter_version",
parameterData: std.file({
input: "regional-parameter-json-data.json",
}).then(invoke => invoke.result),
});
import pulumi
import pulumi_gcp as gcp
import pulumi_std as std
regional_parameter_basic = gcp.parametermanager.RegionalParameter("regional-parameter-basic",
parameter_id="regional_parameter",
format="JSON",
location="us-central1")
regional_parameter_version_with_json_format_with_file = gcp.parametermanager.RegionalParameterVersion("regional-parameter-version-with-json-format-with-file",
parameter=regional_parameter_basic.id,
parameter_version_id="regional_parameter_version",
parameter_data=std.file(input="regional-parameter-json-data.json").result)
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/parametermanager"
"github.com/pulumi/pulumi-std/sdk/go/std"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
regional_parameter_basic, err := parametermanager.NewRegionalParameter(ctx, "regional-parameter-basic", ¶metermanager.RegionalParameterArgs{
ParameterId: pulumi.String("regional_parameter"),
Format: pulumi.String("JSON"),
Location: pulumi.String("us-central1"),
})
if err != nil {
return err
}
invokeFile, err := std.File(ctx, &std.FileArgs{
Input: "regional-parameter-json-data.json",
}, nil)
if err != nil {
return err
}
_, err = parametermanager.NewRegionalParameterVersion(ctx, "regional-parameter-version-with-json-format-with-file", ¶metermanager.RegionalParameterVersionArgs{
Parameter: regional_parameter_basic.ID(),
ParameterVersionId: pulumi.String("regional_parameter_version"),
ParameterData: pulumi.String(invokeFile.Result),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
using Std = Pulumi.Std;
return await Deployment.RunAsync(() =>
{
var regional_parameter_basic = new Gcp.ParameterManager.RegionalParameter("regional-parameter-basic", new()
{
ParameterId = "regional_parameter",
Format = "JSON",
Location = "us-central1",
});
var regional_parameter_version_with_json_format_with_file = new Gcp.ParameterManager.RegionalParameterVersion("regional-parameter-version-with-json-format-with-file", new()
{
Parameter = regional_parameter_basic.Id,
ParameterVersionId = "regional_parameter_version",
ParameterData = Std.File.Invoke(new()
{
Input = "regional-parameter-json-data.json",
}).Apply(invoke => invoke.Result),
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.parametermanager.RegionalParameter;
import com.pulumi.gcp.parametermanager.RegionalParameterArgs;
import com.pulumi.gcp.parametermanager.RegionalParameterVersion;
import com.pulumi.gcp.parametermanager.RegionalParameterVersionArgs;
import com.pulumi.std.StdFunctions;
import com.pulumi.std.inputs.FileArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var regional_parameter_basic = new RegionalParameter("regional-parameter-basic", RegionalParameterArgs.builder()
.parameterId("regional_parameter")
.format("JSON")
.location("us-central1")
.build());
var regional_parameter_version_with_json_format_with_file = new RegionalParameterVersion("regional-parameter-version-with-json-format-with-file", RegionalParameterVersionArgs.builder()
.parameter(regional_parameter_basic.id())
.parameterVersionId("regional_parameter_version")
.parameterData(StdFunctions.file(FileArgs.builder()
.input("regional-parameter-json-data.json")
.build()).result())
.build());
}
}
resources:
regional-parameter-basic:
type: gcp:parametermanager:RegionalParameter
properties:
parameterId: regional_parameter
format: JSON
location: us-central1
regional-parameter-version-with-json-format-with-file:
type: gcp:parametermanager:RegionalParameterVersion
properties:
parameter: ${["regional-parameter-basic"].id}
parameterVersionId: regional_parameter_version
parameterData:
fn::invoke:
function: std:file
arguments:
input: regional-parameter-json-data.json
return: result
The std.file function reads configuration from an external file at deployment time. This separates configuration content from infrastructure code, making it easier to manage complex JSON objects or share configuration across multiple parameter versions. The parent parameter must still have format set to JSON for validation.
Beyond these examples
These snippets focus on specific parameter version features: plain text and structured data storage, and inline values and file-based loading. They’re intentionally minimal rather than full configuration management solutions.
The examples rely on pre-existing infrastructure such as RegionalParameter resources with appropriate format settings, and configuration files for file-based examples. They focus on storing parameter values rather than provisioning the parameter definitions themselves.
To keep things focused, common parameter version patterns are omitted, including:
- Version disabling (disabled property)
- KMS encryption configuration
- YAML format handling
- Version lifecycle management
These omissions are intentional: the goal is to illustrate how each parameter version feature is wired, not provide drop-in configuration modules. See the RegionalParameterVersion resource reference for all available configuration options.
Let's create GCP Regional Parameter Versions
Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.
Try Pulumi Cloud for FREEFrequently Asked Questions
Immutability & Updates
parameter, parameterData, and parameterVersionId properties cannot be changed after creation. Only the disabled field can be updated.parameterData after creation. Instead, create a new RegionalParameterVersion resource with a different parameterVersionId and the updated data.disabled field can be updated after creation to enable or disable the parameter version.Data Formats & File Loading
format property (JSON or YAML) on the parent RegionalParameter resource, then pass your data as a string to parameterData. For JSON, use JSON.stringify() to convert objects to strings.std.file() function with the input property pointing to your file path. The function returns the file contents as a string for parameterData.Security & Visibility
parameterData property is marked as sensitive and will not be displayed in plan output for security reasons. The data is still stored and applied correctly.kmsKey property on the parent RegionalParameter resource. All versions of that parameter will automatically use the specified KMS key for encryption.kmsKeyVersion output property contains the full resource name of the Cloud KMS CryptoKeyVersion used for encryption.