The gcp:parametermanager/regionalParameterVersion:RegionalParameterVersion resource, part of the Pulumi GCP provider, stores the actual value of a regional parameter: the configuration data that applications retrieve at runtime. This guide focuses on three capabilities: plain text and structured data storage, JSON and YAML format handling, and file-based configuration loading.
Parameter versions belong to RegionalParameter resources that define the parameter’s identity and format. The examples are intentionally small. Combine them with your own parameter definitions and application integration.
Store a plain text parameter value
Most deployments start by storing a simple text value that applications can retrieve without hardcoding configuration.
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. Once created, the data is immutable; updates require creating a new version.
Store structured JSON configuration data
Applications often need multi-field configuration objects rather than single strings.
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, Parameter Manager validates the structure at creation time. The JSON.stringify call converts your configuration object into the string format required by parameterData. Applications parse this JSON at runtime to extract individual fields.
Load JSON configuration from a file
Teams managing large configuration objects 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 the file contents at deployment time. This keeps your Pulumi code clean while preserving configuration history in version control. The file must exist when you run pulumi up, and the parent parameter must have format set to JSON.
Load YAML configuration from a file
YAML format provides a more readable alternative for complex configuration, especially with nested structures.
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: "YAML",
location: "us-central1",
});
const regional_parameter_version_with_yaml_format_with_file = new gcp.parametermanager.RegionalParameterVersion("regional-parameter-version-with-yaml-format-with-file", {
parameter: regional_parameter_basic.id,
parameterVersionId: "regional_parameter_version",
parameterData: std.file({
input: "regional-parameter-yaml-data.yaml",
}).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="YAML",
location="us-central1")
regional_parameter_version_with_yaml_format_with_file = gcp.parametermanager.RegionalParameterVersion("regional-parameter-version-with-yaml-format-with-file",
parameter=regional_parameter_basic.id,
parameter_version_id="regional_parameter_version",
parameter_data=std.file(input="regional-parameter-yaml-data.yaml").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("YAML"),
Location: pulumi.String("us-central1"),
})
if err != nil {
return err
}
invokeFile, err := std.File(ctx, &std.FileArgs{
Input: "regional-parameter-yaml-data.yaml",
}, nil)
if err != nil {
return err
}
_, err = parametermanager.NewRegionalParameterVersion(ctx, "regional-parameter-version-with-yaml-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 = "YAML",
Location = "us-central1",
});
var regional_parameter_version_with_yaml_format_with_file = new Gcp.ParameterManager.RegionalParameterVersion("regional-parameter-version-with-yaml-format-with-file", new()
{
Parameter = regional_parameter_basic.Id,
ParameterVersionId = "regional_parameter_version",
ParameterData = Std.File.Invoke(new()
{
Input = "regional-parameter-yaml-data.yaml",
}).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("YAML")
.location("us-central1")
.build());
var regional_parameter_version_with_yaml_format_with_file = new RegionalParameterVersion("regional-parameter-version-with-yaml-format-with-file", RegionalParameterVersionArgs.builder()
.parameter(regional_parameter_basic.id())
.parameterVersionId("regional_parameter_version")
.parameterData(StdFunctions.file(FileArgs.builder()
.input("regional-parameter-yaml-data.yaml")
.build()).result())
.build());
}
}
resources:
regional-parameter-basic:
type: gcp:parametermanager:RegionalParameter
properties:
parameterId: regional_parameter
format: YAML
location: us-central1
regional-parameter-version-with-yaml-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-yaml-data.yaml
return: result
YAML’s syntax makes multi-line values and nested objects easier to read than JSON. The parent parameter’s format property must be set to YAML. Parameter Manager validates the YAML structure when you create the version.
Beyond these examples
These snippets focus on specific parameter version features: plain text and structured data storage, JSON and YAML format support, and file-based configuration loading. They’re intentionally minimal rather than full configuration management solutions.
The examples reference pre-existing infrastructure such as RegionalParameter resources (parent parameters) and configuration files for file-based examples. They focus on storing parameter data rather than provisioning the surrounding parameter infrastructure.
To keep things focused, common parameter version patterns are omitted, including:
- Version disabling (disabled property)
- KMS encryption configuration
- Version lifecycle management
- Cross-region parameter replication
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
Data Management & Updates
parameter, parameterData, and parameterVersionId properties are immutable. To update parameter data, create a new parameter version instead of modifying an existing one.parameterData property is sensitive and won’t be displayed in Pulumi plans or outputs for security reasons. This is expected behavior.disabled property to true. Note that this field is only applicable for updating existing versions, not during initial creation.Data Formats & Loading
format: "JSON" on the parent RegionalParameter resource, then use JSON.stringify() to convert your object to a string for parameterData.std.file() function to read file content into parameterData. This works for JSON, YAML, or any text format.Security & Encryption
kmsKey property on the parent RegionalParameter resource. All versions of that parameter will automatically use this KMS key for encryption.