Schema
A schema is a format that messages must follow, creating a contract between publisher and subscriber that Pub/Sub will enforce. To get more information about Schema, see:
How-to Guides
Example Usage
Pubsub Schema Basic
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.pubsub.Schema;
import com.pulumi.gcp.pubsub.SchemaArgs;
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 example = new Schema("example", SchemaArgs.builder()
.definition("""
{
"type" : "record",
"name" : "Avro",
"fields" : [
{
"name" : "StringField",
"type" : "string"
},
{
"name" : "IntField",
"type" : "int"
}
]
}
""")
.type("AVRO")
.build());
}
}
Content copied to clipboard
Pubsub Schema Protobuf
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.pubsub.Schema;
import com.pulumi.gcp.pubsub.SchemaArgs;
import com.pulumi.gcp.pubsub.Topic;
import com.pulumi.gcp.pubsub.TopicArgs;
import com.pulumi.gcp.pubsub.inputs.TopicSchemaSettingsArgs;
import com.pulumi.resources.CustomResourceOptions;
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 exampleSchema = new Schema("exampleSchema", SchemaArgs.builder()
.type("PROTOCOL_BUFFER")
.definition("""
syntax = "proto3";
message Results {
string message_request = 1;
string message_response = 2;
string timestamp_request = 3;
string timestamp_response = 4;
} """)
.build());
var exampleTopic = new Topic("exampleTopic", TopicArgs.builder()
.schemaSettings(TopicSchemaSettingsArgs.builder()
.schema("projects/my-project-name/schemas/example")
.encoding("JSON")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(exampleSchema)
.build());
}
}
Content copied to clipboard
Import
Schema can be imported using any of these accepted formats
$ pulumi import gcp:pubsub/schema:Schema default projects/{{project}}/schemas/{{name}}
Content copied to clipboard
$ pulumi import gcp:pubsub/schema:Schema default {{project}}/{{name}}
Content copied to clipboard
$ pulumi import gcp:pubsub/schema:Schema default {{name}}
Content copied to clipboard