Package google.spanner.admin.instance.v1

Index

InstanceAdmin

Cloud Spanner Instance Admin API

The Cloud Spanner Instance Admin API can be used to create, delete, modify and list instances. Instances are dedicated Cloud Spanner serving and storage resources to be used by Cloud Spanner databases.

Each instance has a "configuration", which dictates where the serving resources for the Cloud Spanner instance are located (e.g., US-central, Europe). Configurations are created by Google based on resource availability.

Cloud Spanner billing is based on the instances that exist and their sizes. After an instance exists, there are no additional per-database or per-operation charges for use of the instance (though there may be additional network bandwidth charges). Instances offer isolation: problems with databases in one instance will not affect other instances. However, within an instance databases can affect each other. For example, if one database in an instance receives a lot of requests and consumes most of the instance resources, fewer resources are available for other databases in that instance, and their performance may suffer.

CreateInstance

rpc CreateInstance(CreateInstanceRequest) returns (Operation)

Creates an instance and begins preparing it to begin serving. The returned long-running operation can be used to track the progress of preparing the new instance. The instance name is assigned by the caller. If the named instance already exists, CreateInstance returns ALREADY_EXISTS.

Immediately upon completion of this request:

  • The instance is readable via the API, with all requested attributes but no allocated resources. Its state is CREATING.

Until completion of the returned operation:

  • Cancelling the operation renders the instance immediately unreadable via the API.
  • The instance can be deleted.
  • All other attempts to modify the instance are rejected.

Upon completion of the returned operation:

  • Billing for all successfully-allocated resources begins (some types may have lower than the requested levels).
  • Databases can be created in the instance.
  • The instance's allocated resource levels are readable via the API.
  • The instance's state becomes READY.

The returned long-running operation will have a name of the format <instance_name>/operations/<operation_id> and can be used to track creation of the instance. The metadata field type is CreateInstanceMetadata. The response field type is Instance, if successful.

Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

DeleteInstance

rpc DeleteInstance(DeleteInstanceRequest) returns (Empty)

Deletes an instance.

Immediately upon completion of the request:

  • Billing ceases for all of the instance's reserved resources.

Soon afterward:

  • The instance and all of its databases immediately and irrevocably disappear from the API. All data in the databases is permanently deleted.
Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

GetIamPolicy

rpc GetIamPolicy(GetIamPolicyRequest) returns (Policy)

Gets the access control policy for an instance resource. Returns an empty policy if an instance exists but does not have a policy set.

Authorization requires spanner.instances.getIamPolicy on resource.

Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

GetInstance

rpc GetInstance(GetInstanceRequest) returns (Instance)

Gets information about a particular instance.

Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

GetInstanceConfig

rpc GetInstanceConfig(GetInstanceConfigRequest) returns (InstanceConfig)

Gets information about a particular instance configuration.

Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

ListInstanceConfigs

rpc ListInstanceConfigs(ListInstanceConfigsRequest) returns (ListInstanceConfigsResponse)

Lists the supported instance configurations for a given project.

Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

ListInstances

rpc ListInstances(ListInstancesRequest) returns (ListInstancesResponse)

Lists all instances in the given project.

Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

SetIamPolicy

rpc SetIamPolicy(SetIamPolicyRequest) returns (Policy)

Sets the access control policy on an instance resource. Replaces any existing policy.

Authorization requires spanner.instances.setIamPolicy on resource.

Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

TestIamPermissions

rpc TestIamPermissions(TestIamPermissionsRequest) returns (TestIamPermissionsResponse)

Returns permissions that the caller has on the specified instance resource.

Attempting this RPC on a non-existent Cloud Spanner instance resource will result in a NOT_FOUND error if the user has spanner.instances.list permission on the containing Google Cloud Project. Otherwise returns an empty set of permissions.

Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

UpdateInstance

rpc UpdateInstance(UpdateInstanceRequest) returns (Operation)

Updates an instance, and begins allocating or releasing resources as requested. The returned long-running operation can be used to track the progress of updating the instance. If the named instance does not exist, returns NOT_FOUND.

Immediately upon completion of this request:

  • For resource types for which a decrease in the instance's allocation has been requested, billing is based on the newly-requested level.

Until completion of the returned operation:

  • Cancelling the operation sets its metadata's cancel_time, and begins restoring resources to their pre-request values. The operation is guaranteed to succeed at undoing all resource changes, after which point it terminates with a CANCELLED status.
  • All other attempts to modify the instance are rejected.
  • Reading the instance via the API continues to give the pre-request resource levels.

Upon completion of the returned operation:

  • Billing begins for all successfully-allocated resources (some types may have lower than the requested levels).
  • All newly-reserved resources are available for serving the instance's tables.
  • The instance's new resource levels are readable via the API.

The returned long-running operation will have a name of the format <instance_name>/operations/<operation_id> and can be used to track the instance modification. The metadata field type is UpdateInstanceMetadata. The response field type is Instance, if successful.

Authorization requires spanner.instances.update permission on resource name.

Authorization

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/spanner.admin
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Auth Guide.

CreateInstanceMetadata

Metadata type for the operation returned by CreateInstance.

Fields
instance

Instance

The instance being created.

start_time

Timestamp

The time at which the CreateInstance request was received.

cancel_time

Timestamp

The time at which this operation was cancelled. If set, this operation is in the process of undoing itself (which is guaranteed to succeed) and cannot be cancelled again.

end_time

Timestamp

The time at which this operation failed or was completed successfully.

CreateInstanceRequest

The request for CreateInstance.

Fields
parent

string

Required. The name of the project in which to create the instance. Values are of the form projects/<project>.

Authorization requires the following Google IAM permission on the specified resource parent:

  • spanner.instances.create

instance_id

string

Required. The ID of the instance to create. Valid identifiers are of the form [a-z][-a-z0-9]*[a-z0-9] and must be between 6 and 30 characters in length.

instance

Instance

Required. The instance to create. The name may be omitted, but if specified must be <parent>/instances/<instance_id>.

DeleteInstanceRequest

The request for DeleteInstance.

Fields
name

string

Required. The name of the instance to be deleted. Values are of the form projects/<project>/instances/<instance>

Authorization requires the following Google IAM permission on the specified resource name:

  • spanner.instances.delete

GetInstanceConfigRequest

The request for GetInstanceConfigRequest.

Fields
name

string

Required. The name of the requested instance configuration. Values are of the form projects/<project>/instanceConfigs/<config>.

Authorization requires the following Google IAM permission on the specified resource name:

  • spanner.instanceConfigs.get

GetInstanceRequest

The request for GetInstance.

Fields
name

string

Required. The name of the requested instance. Values are of the form projects/<project>/instances/<instance>.

Authorization requires the following Google IAM permission on the specified resource name:

  • spanner.instances.get

Instance

An isolated set of Cloud Spanner resources on which databases can be hosted.

Fields
name

string

Required. A unique identifier for the instance, which cannot be changed after the instance is created. Values are of the form projects/<project>/instances/[a-z][-a-z0-9]*[a-z0-9]. The final segment of the name must be between 6 and 30 characters in length.

config

string

Required. The name of the instance's configuration. Values are of the form projects/<project>/instanceConfigs/<configuration>. See also InstanceConfig and ListInstanceConfigs.

display_name

string

Required. The descriptive name for this instance as it appears in UIs. Must be unique per project and between 4 and 30 characters in length.

node_count

int32

Required. The number of nodes allocated to this instance. This may be zero in API responses for instances that are not yet in state READY.

See the documentation for more information about nodes.

state

State

Output only. The current instance state. For CreateInstance, the state must be either omitted or set to CREATING. For UpdateInstance, the state must be either omitted or set to READY.

labels

map<string, string>

Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.).

  • Label keys must be between 1 and 63 characters long and must conform to the following regular expression: [a-z]([-a-z0-9]*[a-z0-9])?.
  • Label values must be between 0 and 63 characters long and must conform to the regular expression ([a-z]([-a-z0-9]*[a-z0-9])?)?.
  • No more than 64 labels can be associated with a given resource.

See https://goo.gl/xmQnxf for more information on and examples of labels.

If you plan to use labels in your own code, please note that additional characters may be allowed in the future. And so you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + "_" + value would prove problematic if we were to allow "_" in a future release.

State

Indicates the current state of the instance.

Enums
STATE_UNSPECIFIED Not specified.
CREATING The instance is still being created. Resources may not be available yet, and operations such as database creation may not work.
READY The instance is fully created and ready to do work such as creating databases.

InstanceConfig

A possible configuration for a Cloud Spanner instance. Configurations define the geographic placement of nodes and their replication.

Fields
name

string

A unique identifier for the instance configuration. Values are of the form projects/<project>/instanceConfigs/[a-z][-a-z0-9]*

display_name

string

The name of this instance configuration as it appears in UIs.

ListInstanceConfigsRequest

The request for ListInstanceConfigs.

Fields
parent

string

Required. The name of the project for which a list of supported instance configurations is requested. Values are of the form projects/<project>.

Authorization requires the following Google IAM permission on the specified resource parent:

  • spanner.instanceConfigs.list

page_size

int32

Number of instance configurations to be returned in the response. If 0 or less, defaults to the server's maximum allowed page size.

page_token

string

If non-empty, page_token should contain a next_page_token from a previous ListInstanceConfigsResponse.

ListInstanceConfigsResponse

The response for ListInstanceConfigs.

Fields
instance_configs[]

InstanceConfig

The list of requested instance configurations.

next_page_token

string

next_page_token can be sent in a subsequent ListInstanceConfigs call to fetch more of the matching instance configurations.

ListInstancesRequest

The request for ListInstances.

Fields
parent

string

Required. The name of the project for which a list of instances is requested. Values are of the form projects/<project>.

Authorization requires the following Google IAM permission on the specified resource parent:

  • spanner.instances.list

page_size

int32

Number of instances to be returned in the response. If 0 or less, defaults to the server's maximum allowed page size.

page_token

string

If non-empty, page_token should contain a next_page_token from a previous ListInstancesResponse.

filter

string

An expression for filtering the results of the request. Filter rules are case insensitive. The fields eligible for filtering are:

  • name
  • display_name
  • labels.key where key is the name of a label

Some examples of using filters are:

  • name:* --> The instance has a name.
  • name:Howl --> The instance's name contains the string "howl".
  • name:HOWL --> Equivalent to above.
  • NAME:howl --> Equivalent to above.
  • labels.env:* --> The instance has the label "env".
  • labels.env:dev --> The instance has the label "env" and the value of the label contains the string "dev".
  • name:howl labels.env:dev --> The instance's name contains "howl" and it has the label "env" with its value containing "dev".

ListInstancesResponse

The response for ListInstances.

Fields
instances[]

Instance

The list of requested instances.

next_page_token

string

next_page_token can be sent in a subsequent ListInstances call to fetch more of the matching instances.

UpdateInstanceMetadata

Metadata type for the operation returned by UpdateInstance.

Fields
instance

Instance

The desired end state of the update.

start_time

Timestamp

The time at which UpdateInstance request was received.

cancel_time

Timestamp

The time at which this operation was cancelled. If set, this operation is in the process of undoing itself (which is guaranteed to succeed) and cannot be cancelled again.

end_time

Timestamp

The time at which this operation failed or was completed successfully.

UpdateInstanceRequest

The request for UpdateInstance.

Fields
instance

Instance

Required. The instance to update, which must always include the instance name. Otherwise, only fields mentioned in []google.spanner.admin.instance.v1.UpdateInstanceRequest.field_mask need be included.

field_mask

FieldMask

Required. A mask specifying which fields in []google.spanner.admin.instance.v1.UpdateInstanceRequest.instance should be updated. The field mask must always be specified; this prevents any future fields in []google.spanner.admin.instance.v1.Instance from being erased accidentally by clients that do not know about them.

Monitor your resources on the go

Get the Google Cloud Console app to help you manage your projects.

Send feedback about...

Cloud Spanner Documentation