spanner

package
v4.21.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 13, 2021 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Database

type Database struct {
	pulumi.CustomResourceState

	// An optional list of DDL statements to run inside the newly created
	// database. Statements can create tables, indexes, etc. These statements
	// execute atomically with the creation of the database: if there is an
	// error in any statement, the database is not created.
	Ddls pulumi.StringArrayOutput `pulumi:"ddls"`
	// Whether or not to allow the provider to destroy the instance. Unless this field is set to false
	// in state, a `destroy` or `update` that would delete the instance will fail.
	DeletionProtection pulumi.BoolPtrOutput `pulumi:"deletionProtection"`
	// The instance to create the database on.
	Instance pulumi.StringOutput `pulumi:"instance"`
	// A unique identifier for the database, which cannot be changed after
	// the instance is created. Values are of the form [a-z][-a-z0-9]*[a-z0-9].
	Name pulumi.StringOutput `pulumi:"name"`
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
	// An explanation of the status of the database.
	State pulumi.StringOutput `pulumi:"state"`
}

A Cloud Spanner Database which is hosted on a Spanner instance.

To get more information about Database, see:

* [API documentation](https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases) * How-to Guides

> **Warning:** It is strongly recommended to set `lifecycle { preventDestroy = true }` on databases in order to prevent accidental data loss.

## Example Usage ### Spanner Database Basic

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		main, err := spanner.NewInstance(ctx, "main", &spanner.InstanceArgs{
			Config:      pulumi.String("regional-europe-west1"),
			DisplayName: pulumi.String("main-instance"),
		})
		if err != nil {
			return err
		}
		_, err = spanner.NewDatabase(ctx, "database", &spanner.DatabaseArgs{
			Instance: main.Name,
			Ddls: pulumi.StringArray{
				pulumi.String("CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)"),
				pulumi.String("CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)"),
			},
			DeletionProtection: pulumi.Bool(false),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

Database can be imported using any of these accepted formats

```sh

$ pulumi import gcp:spanner/database:Database default projects/{{project}}/instances/{{instance}}/databases/{{name}}

```

```sh

$ pulumi import gcp:spanner/database:Database default instances/{{instance}}/databases/{{name}}

```

```sh

$ pulumi import gcp:spanner/database:Database default {{project}}/{{instance}}/{{name}}

```

```sh

$ pulumi import gcp:spanner/database:Database default {{instance}}/{{name}}

```

func GetDatabase

func GetDatabase(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *DatabaseState, opts ...pulumi.ResourceOption) (*Database, error)

GetDatabase gets an existing Database resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewDatabase

func NewDatabase(ctx *pulumi.Context,
	name string, args *DatabaseArgs, opts ...pulumi.ResourceOption) (*Database, error)

NewDatabase registers a new resource with the given unique name, arguments, and options.

func (*Database) ElementType added in v4.4.0

func (*Database) ElementType() reflect.Type

func (*Database) ToDatabaseOutput added in v4.4.0

func (i *Database) ToDatabaseOutput() DatabaseOutput

func (*Database) ToDatabaseOutputWithContext added in v4.4.0

func (i *Database) ToDatabaseOutputWithContext(ctx context.Context) DatabaseOutput

func (*Database) ToDatabasePtrOutput added in v4.11.1

func (i *Database) ToDatabasePtrOutput() DatabasePtrOutput

func (*Database) ToDatabasePtrOutputWithContext added in v4.11.1

func (i *Database) ToDatabasePtrOutputWithContext(ctx context.Context) DatabasePtrOutput

type DatabaseArgs

type DatabaseArgs struct {
	// An optional list of DDL statements to run inside the newly created
	// database. Statements can create tables, indexes, etc. These statements
	// execute atomically with the creation of the database: if there is an
	// error in any statement, the database is not created.
	Ddls pulumi.StringArrayInput
	// Whether or not to allow the provider to destroy the instance. Unless this field is set to false
	// in state, a `destroy` or `update` that would delete the instance will fail.
	DeletionProtection pulumi.BoolPtrInput
	// The instance to create the database on.
	Instance pulumi.StringInput
	// A unique identifier for the database, which cannot be changed after
	// the instance is created. Values are of the form [a-z][-a-z0-9]*[a-z0-9].
	Name pulumi.StringPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringPtrInput
}

The set of arguments for constructing a Database resource.

func (DatabaseArgs) ElementType

func (DatabaseArgs) ElementType() reflect.Type

type DatabaseArray added in v4.11.1

type DatabaseArray []DatabaseInput

func (DatabaseArray) ElementType added in v4.11.1

func (DatabaseArray) ElementType() reflect.Type

func (DatabaseArray) ToDatabaseArrayOutput added in v4.11.1

func (i DatabaseArray) ToDatabaseArrayOutput() DatabaseArrayOutput

func (DatabaseArray) ToDatabaseArrayOutputWithContext added in v4.11.1

func (i DatabaseArray) ToDatabaseArrayOutputWithContext(ctx context.Context) DatabaseArrayOutput

type DatabaseArrayInput added in v4.11.1

type DatabaseArrayInput interface {
	pulumi.Input

	ToDatabaseArrayOutput() DatabaseArrayOutput
	ToDatabaseArrayOutputWithContext(context.Context) DatabaseArrayOutput
}

DatabaseArrayInput is an input type that accepts DatabaseArray and DatabaseArrayOutput values. You can construct a concrete instance of `DatabaseArrayInput` via:

DatabaseArray{ DatabaseArgs{...} }

type DatabaseArrayOutput added in v4.11.1

type DatabaseArrayOutput struct{ *pulumi.OutputState }

func (DatabaseArrayOutput) ElementType added in v4.11.1

func (DatabaseArrayOutput) ElementType() reflect.Type

func (DatabaseArrayOutput) Index added in v4.11.1

func (DatabaseArrayOutput) ToDatabaseArrayOutput added in v4.11.1

func (o DatabaseArrayOutput) ToDatabaseArrayOutput() DatabaseArrayOutput

func (DatabaseArrayOutput) ToDatabaseArrayOutputWithContext added in v4.11.1

func (o DatabaseArrayOutput) ToDatabaseArrayOutputWithContext(ctx context.Context) DatabaseArrayOutput

type DatabaseIAMBinding

type DatabaseIAMBinding struct {
	pulumi.CustomResourceState

	Condition DatabaseIAMBindingConditionPtrOutput `pulumi:"condition"`
	// The name of the Spanner database.
	Database pulumi.StringOutput `pulumi:"database"`
	// (Computed) The etag of the database's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The name of the Spanner instance the database belongs to.
	Instance pulumi.StringOutput      `pulumi:"instance"`
	Members  pulumi.StringArrayOutput `pulumi:"members"`
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
	// The role that should be applied. Only one
	// `spanner.DatabaseIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for a Spanner database. Each of these resources serves a different use case:

* `spanner.DatabaseIAMPolicy`: Authoritative. Sets the IAM policy for the database and replaces any existing policy already attached.

> **Warning:** It's entirely possibly to lock yourself out of your database using `spanner.DatabaseIAMPolicy`. Any permissions granted by default will be removed unless you include them in your config.

* `spanner.DatabaseIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the database are preserved. * `spanner.DatabaseIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the database are preserved.

> **Note:** `spanner.DatabaseIAMPolicy` **cannot** be used in conjunction with `spanner.DatabaseIAMBinding` and `spanner.DatabaseIAMMember` or they will fight over what your policy should be.

> **Note:** `spanner.DatabaseIAMBinding` resources **can be** used in conjunction with `spanner.DatabaseIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_spanner\_database\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				organizations.GetIAMPolicyBinding{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = spanner.NewDatabaseIAMPolicy(ctx, "database", &spanner.DatabaseIAMPolicyArgs{
			Instance:   pulumi.String("your-instance-name"),
			Database:   pulumi.String("your-database-name"),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_database\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewDatabaseIAMBinding(ctx, "database", &spanner.DatabaseIAMBindingArgs{
			Database: pulumi.String("your-database-name"),
			Instance: pulumi.String("your-instance-name"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Role: pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_database\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewDatabaseIAMMember(ctx, "database", &spanner.DatabaseIAMMemberArgs{
			Database: pulumi.String("your-database-name"),
			Instance: pulumi.String("your-instance-name"),
			Member:   pulumi.String("user:jane@example.com"),
			Role:     pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

For all import syntaxes, the "resource in question" can take any of the following forms* {{project}}/{{instance}}/{{database}} * {{instance}}/{{database}} (project is taken from provider project) IAM member imports use space-delimited identifiers; the resource in question, the role, and the member identity, e.g.

```sh

$ pulumi import gcp:spanner/databaseIAMBinding:DatabaseIAMBinding database "project-name/instance-name/database-name roles/viewer user:foo@example.com"

```

IAM binding imports use space-delimited identifiers; the resource in question and the role, e.g.

```sh

$ pulumi import gcp:spanner/databaseIAMBinding:DatabaseIAMBinding database "project-name/instance-name/database-name roles/viewer"

```

IAM policy imports use the identifier of the resource in question, e.g.

```sh

$ pulumi import gcp:spanner/databaseIAMBinding:DatabaseIAMBinding database project-name/instance-name/database-name

```

-> **Custom Roles:** If you're importing a IAM resource with a custom role, make sure to use the

full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.

func GetDatabaseIAMBinding

func GetDatabaseIAMBinding(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *DatabaseIAMBindingState, opts ...pulumi.ResourceOption) (*DatabaseIAMBinding, error)

GetDatabaseIAMBinding gets an existing DatabaseIAMBinding resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewDatabaseIAMBinding

func NewDatabaseIAMBinding(ctx *pulumi.Context,
	name string, args *DatabaseIAMBindingArgs, opts ...pulumi.ResourceOption) (*DatabaseIAMBinding, error)

NewDatabaseIAMBinding registers a new resource with the given unique name, arguments, and options.

func (*DatabaseIAMBinding) ElementType added in v4.4.0

func (*DatabaseIAMBinding) ElementType() reflect.Type

func (*DatabaseIAMBinding) ToDatabaseIAMBindingOutput added in v4.4.0

func (i *DatabaseIAMBinding) ToDatabaseIAMBindingOutput() DatabaseIAMBindingOutput

func (*DatabaseIAMBinding) ToDatabaseIAMBindingOutputWithContext added in v4.4.0

func (i *DatabaseIAMBinding) ToDatabaseIAMBindingOutputWithContext(ctx context.Context) DatabaseIAMBindingOutput

func (*DatabaseIAMBinding) ToDatabaseIAMBindingPtrOutput added in v4.11.1

func (i *DatabaseIAMBinding) ToDatabaseIAMBindingPtrOutput() DatabaseIAMBindingPtrOutput

func (*DatabaseIAMBinding) ToDatabaseIAMBindingPtrOutputWithContext added in v4.11.1

func (i *DatabaseIAMBinding) ToDatabaseIAMBindingPtrOutputWithContext(ctx context.Context) DatabaseIAMBindingPtrOutput

type DatabaseIAMBindingArgs

type DatabaseIAMBindingArgs struct {
	Condition DatabaseIAMBindingConditionPtrInput
	// The name of the Spanner database.
	Database pulumi.StringInput
	// The name of the Spanner instance the database belongs to.
	Instance pulumi.StringInput
	Members  pulumi.StringArrayInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `spanner.DatabaseIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a DatabaseIAMBinding resource.

func (DatabaseIAMBindingArgs) ElementType

func (DatabaseIAMBindingArgs) ElementType() reflect.Type

type DatabaseIAMBindingArray added in v4.11.1

type DatabaseIAMBindingArray []DatabaseIAMBindingInput

func (DatabaseIAMBindingArray) ElementType added in v4.11.1

func (DatabaseIAMBindingArray) ElementType() reflect.Type

func (DatabaseIAMBindingArray) ToDatabaseIAMBindingArrayOutput added in v4.11.1

func (i DatabaseIAMBindingArray) ToDatabaseIAMBindingArrayOutput() DatabaseIAMBindingArrayOutput

func (DatabaseIAMBindingArray) ToDatabaseIAMBindingArrayOutputWithContext added in v4.11.1

func (i DatabaseIAMBindingArray) ToDatabaseIAMBindingArrayOutputWithContext(ctx context.Context) DatabaseIAMBindingArrayOutput

type DatabaseIAMBindingArrayInput added in v4.11.1

type DatabaseIAMBindingArrayInput interface {
	pulumi.Input

	ToDatabaseIAMBindingArrayOutput() DatabaseIAMBindingArrayOutput
	ToDatabaseIAMBindingArrayOutputWithContext(context.Context) DatabaseIAMBindingArrayOutput
}

DatabaseIAMBindingArrayInput is an input type that accepts DatabaseIAMBindingArray and DatabaseIAMBindingArrayOutput values. You can construct a concrete instance of `DatabaseIAMBindingArrayInput` via:

DatabaseIAMBindingArray{ DatabaseIAMBindingArgs{...} }

type DatabaseIAMBindingArrayOutput added in v4.11.1

type DatabaseIAMBindingArrayOutput struct{ *pulumi.OutputState }

func (DatabaseIAMBindingArrayOutput) ElementType added in v4.11.1

func (DatabaseIAMBindingArrayOutput) Index added in v4.11.1

func (DatabaseIAMBindingArrayOutput) ToDatabaseIAMBindingArrayOutput added in v4.11.1

func (o DatabaseIAMBindingArrayOutput) ToDatabaseIAMBindingArrayOutput() DatabaseIAMBindingArrayOutput

func (DatabaseIAMBindingArrayOutput) ToDatabaseIAMBindingArrayOutputWithContext added in v4.11.1

func (o DatabaseIAMBindingArrayOutput) ToDatabaseIAMBindingArrayOutputWithContext(ctx context.Context) DatabaseIAMBindingArrayOutput

type DatabaseIAMBindingCondition

type DatabaseIAMBindingCondition struct {
	Description *string `pulumi:"description"`
	Expression  string  `pulumi:"expression"`
	Title       string  `pulumi:"title"`
}

type DatabaseIAMBindingConditionArgs

type DatabaseIAMBindingConditionArgs struct {
	Description pulumi.StringPtrInput `pulumi:"description"`
	Expression  pulumi.StringInput    `pulumi:"expression"`
	Title       pulumi.StringInput    `pulumi:"title"`
}

func (DatabaseIAMBindingConditionArgs) ElementType

func (DatabaseIAMBindingConditionArgs) ToDatabaseIAMBindingConditionOutput

func (i DatabaseIAMBindingConditionArgs) ToDatabaseIAMBindingConditionOutput() DatabaseIAMBindingConditionOutput

func (DatabaseIAMBindingConditionArgs) ToDatabaseIAMBindingConditionOutputWithContext

func (i DatabaseIAMBindingConditionArgs) ToDatabaseIAMBindingConditionOutputWithContext(ctx context.Context) DatabaseIAMBindingConditionOutput

func (DatabaseIAMBindingConditionArgs) ToDatabaseIAMBindingConditionPtrOutput

func (i DatabaseIAMBindingConditionArgs) ToDatabaseIAMBindingConditionPtrOutput() DatabaseIAMBindingConditionPtrOutput

func (DatabaseIAMBindingConditionArgs) ToDatabaseIAMBindingConditionPtrOutputWithContext

func (i DatabaseIAMBindingConditionArgs) ToDatabaseIAMBindingConditionPtrOutputWithContext(ctx context.Context) DatabaseIAMBindingConditionPtrOutput

type DatabaseIAMBindingConditionInput

type DatabaseIAMBindingConditionInput interface {
	pulumi.Input

	ToDatabaseIAMBindingConditionOutput() DatabaseIAMBindingConditionOutput
	ToDatabaseIAMBindingConditionOutputWithContext(context.Context) DatabaseIAMBindingConditionOutput
}

DatabaseIAMBindingConditionInput is an input type that accepts DatabaseIAMBindingConditionArgs and DatabaseIAMBindingConditionOutput values. You can construct a concrete instance of `DatabaseIAMBindingConditionInput` via:

DatabaseIAMBindingConditionArgs{...}

type DatabaseIAMBindingConditionOutput

type DatabaseIAMBindingConditionOutput struct{ *pulumi.OutputState }

func (DatabaseIAMBindingConditionOutput) Description

func (DatabaseIAMBindingConditionOutput) ElementType

func (DatabaseIAMBindingConditionOutput) Expression

func (DatabaseIAMBindingConditionOutput) Title

func (DatabaseIAMBindingConditionOutput) ToDatabaseIAMBindingConditionOutput

func (o DatabaseIAMBindingConditionOutput) ToDatabaseIAMBindingConditionOutput() DatabaseIAMBindingConditionOutput

func (DatabaseIAMBindingConditionOutput) ToDatabaseIAMBindingConditionOutputWithContext

func (o DatabaseIAMBindingConditionOutput) ToDatabaseIAMBindingConditionOutputWithContext(ctx context.Context) DatabaseIAMBindingConditionOutput

func (DatabaseIAMBindingConditionOutput) ToDatabaseIAMBindingConditionPtrOutput

func (o DatabaseIAMBindingConditionOutput) ToDatabaseIAMBindingConditionPtrOutput() DatabaseIAMBindingConditionPtrOutput

func (DatabaseIAMBindingConditionOutput) ToDatabaseIAMBindingConditionPtrOutputWithContext

func (o DatabaseIAMBindingConditionOutput) ToDatabaseIAMBindingConditionPtrOutputWithContext(ctx context.Context) DatabaseIAMBindingConditionPtrOutput

type DatabaseIAMBindingConditionPtrInput

type DatabaseIAMBindingConditionPtrInput interface {
	pulumi.Input

	ToDatabaseIAMBindingConditionPtrOutput() DatabaseIAMBindingConditionPtrOutput
	ToDatabaseIAMBindingConditionPtrOutputWithContext(context.Context) DatabaseIAMBindingConditionPtrOutput
}

DatabaseIAMBindingConditionPtrInput is an input type that accepts DatabaseIAMBindingConditionArgs, DatabaseIAMBindingConditionPtr and DatabaseIAMBindingConditionPtrOutput values. You can construct a concrete instance of `DatabaseIAMBindingConditionPtrInput` via:

        DatabaseIAMBindingConditionArgs{...}

or:

        nil

type DatabaseIAMBindingConditionPtrOutput

type DatabaseIAMBindingConditionPtrOutput struct{ *pulumi.OutputState }

func (DatabaseIAMBindingConditionPtrOutput) Description

func (DatabaseIAMBindingConditionPtrOutput) Elem

func (DatabaseIAMBindingConditionPtrOutput) ElementType

func (DatabaseIAMBindingConditionPtrOutput) Expression

func (DatabaseIAMBindingConditionPtrOutput) Title

func (DatabaseIAMBindingConditionPtrOutput) ToDatabaseIAMBindingConditionPtrOutput

func (o DatabaseIAMBindingConditionPtrOutput) ToDatabaseIAMBindingConditionPtrOutput() DatabaseIAMBindingConditionPtrOutput

func (DatabaseIAMBindingConditionPtrOutput) ToDatabaseIAMBindingConditionPtrOutputWithContext

func (o DatabaseIAMBindingConditionPtrOutput) ToDatabaseIAMBindingConditionPtrOutputWithContext(ctx context.Context) DatabaseIAMBindingConditionPtrOutput

type DatabaseIAMBindingInput added in v4.4.0

type DatabaseIAMBindingInput interface {
	pulumi.Input

	ToDatabaseIAMBindingOutput() DatabaseIAMBindingOutput
	ToDatabaseIAMBindingOutputWithContext(ctx context.Context) DatabaseIAMBindingOutput
}

type DatabaseIAMBindingMap added in v4.11.1

type DatabaseIAMBindingMap map[string]DatabaseIAMBindingInput

func (DatabaseIAMBindingMap) ElementType added in v4.11.1

func (DatabaseIAMBindingMap) ElementType() reflect.Type

func (DatabaseIAMBindingMap) ToDatabaseIAMBindingMapOutput added in v4.11.1

func (i DatabaseIAMBindingMap) ToDatabaseIAMBindingMapOutput() DatabaseIAMBindingMapOutput

func (DatabaseIAMBindingMap) ToDatabaseIAMBindingMapOutputWithContext added in v4.11.1

func (i DatabaseIAMBindingMap) ToDatabaseIAMBindingMapOutputWithContext(ctx context.Context) DatabaseIAMBindingMapOutput

type DatabaseIAMBindingMapInput added in v4.11.1

type DatabaseIAMBindingMapInput interface {
	pulumi.Input

	ToDatabaseIAMBindingMapOutput() DatabaseIAMBindingMapOutput
	ToDatabaseIAMBindingMapOutputWithContext(context.Context) DatabaseIAMBindingMapOutput
}

DatabaseIAMBindingMapInput is an input type that accepts DatabaseIAMBindingMap and DatabaseIAMBindingMapOutput values. You can construct a concrete instance of `DatabaseIAMBindingMapInput` via:

DatabaseIAMBindingMap{ "key": DatabaseIAMBindingArgs{...} }

type DatabaseIAMBindingMapOutput added in v4.11.1

type DatabaseIAMBindingMapOutput struct{ *pulumi.OutputState }

func (DatabaseIAMBindingMapOutput) ElementType added in v4.11.1

func (DatabaseIAMBindingMapOutput) MapIndex added in v4.11.1

func (DatabaseIAMBindingMapOutput) ToDatabaseIAMBindingMapOutput added in v4.11.1

func (o DatabaseIAMBindingMapOutput) ToDatabaseIAMBindingMapOutput() DatabaseIAMBindingMapOutput

func (DatabaseIAMBindingMapOutput) ToDatabaseIAMBindingMapOutputWithContext added in v4.11.1

func (o DatabaseIAMBindingMapOutput) ToDatabaseIAMBindingMapOutputWithContext(ctx context.Context) DatabaseIAMBindingMapOutput

type DatabaseIAMBindingOutput added in v4.4.0

type DatabaseIAMBindingOutput struct {
	*pulumi.OutputState
}

func (DatabaseIAMBindingOutput) ElementType added in v4.4.0

func (DatabaseIAMBindingOutput) ElementType() reflect.Type

func (DatabaseIAMBindingOutput) ToDatabaseIAMBindingOutput added in v4.4.0

func (o DatabaseIAMBindingOutput) ToDatabaseIAMBindingOutput() DatabaseIAMBindingOutput

func (DatabaseIAMBindingOutput) ToDatabaseIAMBindingOutputWithContext added in v4.4.0

func (o DatabaseIAMBindingOutput) ToDatabaseIAMBindingOutputWithContext(ctx context.Context) DatabaseIAMBindingOutput

func (DatabaseIAMBindingOutput) ToDatabaseIAMBindingPtrOutput added in v4.11.1

func (o DatabaseIAMBindingOutput) ToDatabaseIAMBindingPtrOutput() DatabaseIAMBindingPtrOutput

func (DatabaseIAMBindingOutput) ToDatabaseIAMBindingPtrOutputWithContext added in v4.11.1

func (o DatabaseIAMBindingOutput) ToDatabaseIAMBindingPtrOutputWithContext(ctx context.Context) DatabaseIAMBindingPtrOutput

type DatabaseIAMBindingPtrInput added in v4.11.1

type DatabaseIAMBindingPtrInput interface {
	pulumi.Input

	ToDatabaseIAMBindingPtrOutput() DatabaseIAMBindingPtrOutput
	ToDatabaseIAMBindingPtrOutputWithContext(ctx context.Context) DatabaseIAMBindingPtrOutput
}

type DatabaseIAMBindingPtrOutput added in v4.11.1

type DatabaseIAMBindingPtrOutput struct {
	*pulumi.OutputState
}

func (DatabaseIAMBindingPtrOutput) ElementType added in v4.11.1

func (DatabaseIAMBindingPtrOutput) ToDatabaseIAMBindingPtrOutput added in v4.11.1

func (o DatabaseIAMBindingPtrOutput) ToDatabaseIAMBindingPtrOutput() DatabaseIAMBindingPtrOutput

func (DatabaseIAMBindingPtrOutput) ToDatabaseIAMBindingPtrOutputWithContext added in v4.11.1

func (o DatabaseIAMBindingPtrOutput) ToDatabaseIAMBindingPtrOutputWithContext(ctx context.Context) DatabaseIAMBindingPtrOutput

type DatabaseIAMBindingState

type DatabaseIAMBindingState struct {
	Condition DatabaseIAMBindingConditionPtrInput
	// The name of the Spanner database.
	Database pulumi.StringPtrInput
	// (Computed) The etag of the database's IAM policy.
	Etag pulumi.StringPtrInput
	// The name of the Spanner instance the database belongs to.
	Instance pulumi.StringPtrInput
	Members  pulumi.StringArrayInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `spanner.DatabaseIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (DatabaseIAMBindingState) ElementType

func (DatabaseIAMBindingState) ElementType() reflect.Type

type DatabaseIAMMember

type DatabaseIAMMember struct {
	pulumi.CustomResourceState

	Condition DatabaseIAMMemberConditionPtrOutput `pulumi:"condition"`
	// The name of the Spanner database.
	Database pulumi.StringOutput `pulumi:"database"`
	// (Computed) The etag of the database's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The name of the Spanner instance the database belongs to.
	Instance pulumi.StringOutput `pulumi:"instance"`
	Member   pulumi.StringOutput `pulumi:"member"`
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
	// The role that should be applied. Only one
	// `spanner.DatabaseIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for a Spanner database. Each of these resources serves a different use case:

* `spanner.DatabaseIAMPolicy`: Authoritative. Sets the IAM policy for the database and replaces any existing policy already attached.

> **Warning:** It's entirely possibly to lock yourself out of your database using `spanner.DatabaseIAMPolicy`. Any permissions granted by default will be removed unless you include them in your config.

* `spanner.DatabaseIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the database are preserved. * `spanner.DatabaseIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the database are preserved.

> **Note:** `spanner.DatabaseIAMPolicy` **cannot** be used in conjunction with `spanner.DatabaseIAMBinding` and `spanner.DatabaseIAMMember` or they will fight over what your policy should be.

> **Note:** `spanner.DatabaseIAMBinding` resources **can be** used in conjunction with `spanner.DatabaseIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_spanner\_database\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				organizations.GetIAMPolicyBinding{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = spanner.NewDatabaseIAMPolicy(ctx, "database", &spanner.DatabaseIAMPolicyArgs{
			Instance:   pulumi.String("your-instance-name"),
			Database:   pulumi.String("your-database-name"),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_database\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewDatabaseIAMBinding(ctx, "database", &spanner.DatabaseIAMBindingArgs{
			Database: pulumi.String("your-database-name"),
			Instance: pulumi.String("your-instance-name"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Role: pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_database\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewDatabaseIAMMember(ctx, "database", &spanner.DatabaseIAMMemberArgs{
			Database: pulumi.String("your-database-name"),
			Instance: pulumi.String("your-instance-name"),
			Member:   pulumi.String("user:jane@example.com"),
			Role:     pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

For all import syntaxes, the "resource in question" can take any of the following forms* {{project}}/{{instance}}/{{database}} * {{instance}}/{{database}} (project is taken from provider project) IAM member imports use space-delimited identifiers; the resource in question, the role, and the member identity, e.g.

```sh

$ pulumi import gcp:spanner/databaseIAMMember:DatabaseIAMMember database "project-name/instance-name/database-name roles/viewer user:foo@example.com"

```

IAM binding imports use space-delimited identifiers; the resource in question and the role, e.g.

```sh

$ pulumi import gcp:spanner/databaseIAMMember:DatabaseIAMMember database "project-name/instance-name/database-name roles/viewer"

```

IAM policy imports use the identifier of the resource in question, e.g.

```sh

$ pulumi import gcp:spanner/databaseIAMMember:DatabaseIAMMember database project-name/instance-name/database-name

```

-> **Custom Roles:** If you're importing a IAM resource with a custom role, make sure to use the

full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.

func GetDatabaseIAMMember

func GetDatabaseIAMMember(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *DatabaseIAMMemberState, opts ...pulumi.ResourceOption) (*DatabaseIAMMember, error)

GetDatabaseIAMMember gets an existing DatabaseIAMMember resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewDatabaseIAMMember

func NewDatabaseIAMMember(ctx *pulumi.Context,
	name string, args *DatabaseIAMMemberArgs, opts ...pulumi.ResourceOption) (*DatabaseIAMMember, error)

NewDatabaseIAMMember registers a new resource with the given unique name, arguments, and options.

func (*DatabaseIAMMember) ElementType added in v4.4.0

func (*DatabaseIAMMember) ElementType() reflect.Type

func (*DatabaseIAMMember) ToDatabaseIAMMemberOutput added in v4.4.0

func (i *DatabaseIAMMember) ToDatabaseIAMMemberOutput() DatabaseIAMMemberOutput

func (*DatabaseIAMMember) ToDatabaseIAMMemberOutputWithContext added in v4.4.0

func (i *DatabaseIAMMember) ToDatabaseIAMMemberOutputWithContext(ctx context.Context) DatabaseIAMMemberOutput

func (*DatabaseIAMMember) ToDatabaseIAMMemberPtrOutput added in v4.11.1

func (i *DatabaseIAMMember) ToDatabaseIAMMemberPtrOutput() DatabaseIAMMemberPtrOutput

func (*DatabaseIAMMember) ToDatabaseIAMMemberPtrOutputWithContext added in v4.11.1

func (i *DatabaseIAMMember) ToDatabaseIAMMemberPtrOutputWithContext(ctx context.Context) DatabaseIAMMemberPtrOutput

type DatabaseIAMMemberArgs

type DatabaseIAMMemberArgs struct {
	Condition DatabaseIAMMemberConditionPtrInput
	// The name of the Spanner database.
	Database pulumi.StringInput
	// The name of the Spanner instance the database belongs to.
	Instance pulumi.StringInput
	Member   pulumi.StringInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `spanner.DatabaseIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a DatabaseIAMMember resource.

func (DatabaseIAMMemberArgs) ElementType

func (DatabaseIAMMemberArgs) ElementType() reflect.Type

type DatabaseIAMMemberArray added in v4.11.1

type DatabaseIAMMemberArray []DatabaseIAMMemberInput

func (DatabaseIAMMemberArray) ElementType added in v4.11.1

func (DatabaseIAMMemberArray) ElementType() reflect.Type

func (DatabaseIAMMemberArray) ToDatabaseIAMMemberArrayOutput added in v4.11.1

func (i DatabaseIAMMemberArray) ToDatabaseIAMMemberArrayOutput() DatabaseIAMMemberArrayOutput

func (DatabaseIAMMemberArray) ToDatabaseIAMMemberArrayOutputWithContext added in v4.11.1

func (i DatabaseIAMMemberArray) ToDatabaseIAMMemberArrayOutputWithContext(ctx context.Context) DatabaseIAMMemberArrayOutput

type DatabaseIAMMemberArrayInput added in v4.11.1

type DatabaseIAMMemberArrayInput interface {
	pulumi.Input

	ToDatabaseIAMMemberArrayOutput() DatabaseIAMMemberArrayOutput
	ToDatabaseIAMMemberArrayOutputWithContext(context.Context) DatabaseIAMMemberArrayOutput
}

DatabaseIAMMemberArrayInput is an input type that accepts DatabaseIAMMemberArray and DatabaseIAMMemberArrayOutput values. You can construct a concrete instance of `DatabaseIAMMemberArrayInput` via:

DatabaseIAMMemberArray{ DatabaseIAMMemberArgs{...} }

type DatabaseIAMMemberArrayOutput added in v4.11.1

type DatabaseIAMMemberArrayOutput struct{ *pulumi.OutputState }

func (DatabaseIAMMemberArrayOutput) ElementType added in v4.11.1

func (DatabaseIAMMemberArrayOutput) Index added in v4.11.1

func (DatabaseIAMMemberArrayOutput) ToDatabaseIAMMemberArrayOutput added in v4.11.1

func (o DatabaseIAMMemberArrayOutput) ToDatabaseIAMMemberArrayOutput() DatabaseIAMMemberArrayOutput

func (DatabaseIAMMemberArrayOutput) ToDatabaseIAMMemberArrayOutputWithContext added in v4.11.1

func (o DatabaseIAMMemberArrayOutput) ToDatabaseIAMMemberArrayOutputWithContext(ctx context.Context) DatabaseIAMMemberArrayOutput

type DatabaseIAMMemberCondition

type DatabaseIAMMemberCondition struct {
	Description *string `pulumi:"description"`
	Expression  string  `pulumi:"expression"`
	Title       string  `pulumi:"title"`
}

type DatabaseIAMMemberConditionArgs

type DatabaseIAMMemberConditionArgs struct {
	Description pulumi.StringPtrInput `pulumi:"description"`
	Expression  pulumi.StringInput    `pulumi:"expression"`
	Title       pulumi.StringInput    `pulumi:"title"`
}

func (DatabaseIAMMemberConditionArgs) ElementType

func (DatabaseIAMMemberConditionArgs) ToDatabaseIAMMemberConditionOutput

func (i DatabaseIAMMemberConditionArgs) ToDatabaseIAMMemberConditionOutput() DatabaseIAMMemberConditionOutput

func (DatabaseIAMMemberConditionArgs) ToDatabaseIAMMemberConditionOutputWithContext

func (i DatabaseIAMMemberConditionArgs) ToDatabaseIAMMemberConditionOutputWithContext(ctx context.Context) DatabaseIAMMemberConditionOutput

func (DatabaseIAMMemberConditionArgs) ToDatabaseIAMMemberConditionPtrOutput

func (i DatabaseIAMMemberConditionArgs) ToDatabaseIAMMemberConditionPtrOutput() DatabaseIAMMemberConditionPtrOutput

func (DatabaseIAMMemberConditionArgs) ToDatabaseIAMMemberConditionPtrOutputWithContext

func (i DatabaseIAMMemberConditionArgs) ToDatabaseIAMMemberConditionPtrOutputWithContext(ctx context.Context) DatabaseIAMMemberConditionPtrOutput

type DatabaseIAMMemberConditionInput

type DatabaseIAMMemberConditionInput interface {
	pulumi.Input

	ToDatabaseIAMMemberConditionOutput() DatabaseIAMMemberConditionOutput
	ToDatabaseIAMMemberConditionOutputWithContext(context.Context) DatabaseIAMMemberConditionOutput
}

DatabaseIAMMemberConditionInput is an input type that accepts DatabaseIAMMemberConditionArgs and DatabaseIAMMemberConditionOutput values. You can construct a concrete instance of `DatabaseIAMMemberConditionInput` via:

DatabaseIAMMemberConditionArgs{...}

type DatabaseIAMMemberConditionOutput

type DatabaseIAMMemberConditionOutput struct{ *pulumi.OutputState }

func (DatabaseIAMMemberConditionOutput) Description

func (DatabaseIAMMemberConditionOutput) ElementType

func (DatabaseIAMMemberConditionOutput) Expression

func (DatabaseIAMMemberConditionOutput) Title

func (DatabaseIAMMemberConditionOutput) ToDatabaseIAMMemberConditionOutput

func (o DatabaseIAMMemberConditionOutput) ToDatabaseIAMMemberConditionOutput() DatabaseIAMMemberConditionOutput

func (DatabaseIAMMemberConditionOutput) ToDatabaseIAMMemberConditionOutputWithContext

func (o DatabaseIAMMemberConditionOutput) ToDatabaseIAMMemberConditionOutputWithContext(ctx context.Context) DatabaseIAMMemberConditionOutput

func (DatabaseIAMMemberConditionOutput) ToDatabaseIAMMemberConditionPtrOutput

func (o DatabaseIAMMemberConditionOutput) ToDatabaseIAMMemberConditionPtrOutput() DatabaseIAMMemberConditionPtrOutput

func (DatabaseIAMMemberConditionOutput) ToDatabaseIAMMemberConditionPtrOutputWithContext

func (o DatabaseIAMMemberConditionOutput) ToDatabaseIAMMemberConditionPtrOutputWithContext(ctx context.Context) DatabaseIAMMemberConditionPtrOutput

type DatabaseIAMMemberConditionPtrInput

type DatabaseIAMMemberConditionPtrInput interface {
	pulumi.Input

	ToDatabaseIAMMemberConditionPtrOutput() DatabaseIAMMemberConditionPtrOutput
	ToDatabaseIAMMemberConditionPtrOutputWithContext(context.Context) DatabaseIAMMemberConditionPtrOutput
}

DatabaseIAMMemberConditionPtrInput is an input type that accepts DatabaseIAMMemberConditionArgs, DatabaseIAMMemberConditionPtr and DatabaseIAMMemberConditionPtrOutput values. You can construct a concrete instance of `DatabaseIAMMemberConditionPtrInput` via:

        DatabaseIAMMemberConditionArgs{...}

or:

        nil

type DatabaseIAMMemberConditionPtrOutput

type DatabaseIAMMemberConditionPtrOutput struct{ *pulumi.OutputState }

func (DatabaseIAMMemberConditionPtrOutput) Description

func (DatabaseIAMMemberConditionPtrOutput) Elem

func (DatabaseIAMMemberConditionPtrOutput) ElementType

func (DatabaseIAMMemberConditionPtrOutput) Expression

func (DatabaseIAMMemberConditionPtrOutput) Title

func (DatabaseIAMMemberConditionPtrOutput) ToDatabaseIAMMemberConditionPtrOutput

func (o DatabaseIAMMemberConditionPtrOutput) ToDatabaseIAMMemberConditionPtrOutput() DatabaseIAMMemberConditionPtrOutput

func (DatabaseIAMMemberConditionPtrOutput) ToDatabaseIAMMemberConditionPtrOutputWithContext

func (o DatabaseIAMMemberConditionPtrOutput) ToDatabaseIAMMemberConditionPtrOutputWithContext(ctx context.Context) DatabaseIAMMemberConditionPtrOutput

type DatabaseIAMMemberInput added in v4.4.0

type DatabaseIAMMemberInput interface {
	pulumi.Input

	ToDatabaseIAMMemberOutput() DatabaseIAMMemberOutput
	ToDatabaseIAMMemberOutputWithContext(ctx context.Context) DatabaseIAMMemberOutput
}

type DatabaseIAMMemberMap added in v4.11.1

type DatabaseIAMMemberMap map[string]DatabaseIAMMemberInput

func (DatabaseIAMMemberMap) ElementType added in v4.11.1

func (DatabaseIAMMemberMap) ElementType() reflect.Type

func (DatabaseIAMMemberMap) ToDatabaseIAMMemberMapOutput added in v4.11.1

func (i DatabaseIAMMemberMap) ToDatabaseIAMMemberMapOutput() DatabaseIAMMemberMapOutput

func (DatabaseIAMMemberMap) ToDatabaseIAMMemberMapOutputWithContext added in v4.11.1

func (i DatabaseIAMMemberMap) ToDatabaseIAMMemberMapOutputWithContext(ctx context.Context) DatabaseIAMMemberMapOutput

type DatabaseIAMMemberMapInput added in v4.11.1

type DatabaseIAMMemberMapInput interface {
	pulumi.Input

	ToDatabaseIAMMemberMapOutput() DatabaseIAMMemberMapOutput
	ToDatabaseIAMMemberMapOutputWithContext(context.Context) DatabaseIAMMemberMapOutput
}

DatabaseIAMMemberMapInput is an input type that accepts DatabaseIAMMemberMap and DatabaseIAMMemberMapOutput values. You can construct a concrete instance of `DatabaseIAMMemberMapInput` via:

DatabaseIAMMemberMap{ "key": DatabaseIAMMemberArgs{...} }

type DatabaseIAMMemberMapOutput added in v4.11.1

type DatabaseIAMMemberMapOutput struct{ *pulumi.OutputState }

func (DatabaseIAMMemberMapOutput) ElementType added in v4.11.1

func (DatabaseIAMMemberMapOutput) ElementType() reflect.Type

func (DatabaseIAMMemberMapOutput) MapIndex added in v4.11.1

func (DatabaseIAMMemberMapOutput) ToDatabaseIAMMemberMapOutput added in v4.11.1

func (o DatabaseIAMMemberMapOutput) ToDatabaseIAMMemberMapOutput() DatabaseIAMMemberMapOutput

func (DatabaseIAMMemberMapOutput) ToDatabaseIAMMemberMapOutputWithContext added in v4.11.1

func (o DatabaseIAMMemberMapOutput) ToDatabaseIAMMemberMapOutputWithContext(ctx context.Context) DatabaseIAMMemberMapOutput

type DatabaseIAMMemberOutput added in v4.4.0

type DatabaseIAMMemberOutput struct {
	*pulumi.OutputState
}

func (DatabaseIAMMemberOutput) ElementType added in v4.4.0

func (DatabaseIAMMemberOutput) ElementType() reflect.Type

func (DatabaseIAMMemberOutput) ToDatabaseIAMMemberOutput added in v4.4.0

func (o DatabaseIAMMemberOutput) ToDatabaseIAMMemberOutput() DatabaseIAMMemberOutput

func (DatabaseIAMMemberOutput) ToDatabaseIAMMemberOutputWithContext added in v4.4.0

func (o DatabaseIAMMemberOutput) ToDatabaseIAMMemberOutputWithContext(ctx context.Context) DatabaseIAMMemberOutput

func (DatabaseIAMMemberOutput) ToDatabaseIAMMemberPtrOutput added in v4.11.1

func (o DatabaseIAMMemberOutput) ToDatabaseIAMMemberPtrOutput() DatabaseIAMMemberPtrOutput

func (DatabaseIAMMemberOutput) ToDatabaseIAMMemberPtrOutputWithContext added in v4.11.1

func (o DatabaseIAMMemberOutput) ToDatabaseIAMMemberPtrOutputWithContext(ctx context.Context) DatabaseIAMMemberPtrOutput

type DatabaseIAMMemberPtrInput added in v4.11.1

type DatabaseIAMMemberPtrInput interface {
	pulumi.Input

	ToDatabaseIAMMemberPtrOutput() DatabaseIAMMemberPtrOutput
	ToDatabaseIAMMemberPtrOutputWithContext(ctx context.Context) DatabaseIAMMemberPtrOutput
}

type DatabaseIAMMemberPtrOutput added in v4.11.1

type DatabaseIAMMemberPtrOutput struct {
	*pulumi.OutputState
}

func (DatabaseIAMMemberPtrOutput) ElementType added in v4.11.1

func (DatabaseIAMMemberPtrOutput) ElementType() reflect.Type

func (DatabaseIAMMemberPtrOutput) ToDatabaseIAMMemberPtrOutput added in v4.11.1

func (o DatabaseIAMMemberPtrOutput) ToDatabaseIAMMemberPtrOutput() DatabaseIAMMemberPtrOutput

func (DatabaseIAMMemberPtrOutput) ToDatabaseIAMMemberPtrOutputWithContext added in v4.11.1

func (o DatabaseIAMMemberPtrOutput) ToDatabaseIAMMemberPtrOutputWithContext(ctx context.Context) DatabaseIAMMemberPtrOutput

type DatabaseIAMMemberState

type DatabaseIAMMemberState struct {
	Condition DatabaseIAMMemberConditionPtrInput
	// The name of the Spanner database.
	Database pulumi.StringPtrInput
	// (Computed) The etag of the database's IAM policy.
	Etag pulumi.StringPtrInput
	// The name of the Spanner instance the database belongs to.
	Instance pulumi.StringPtrInput
	Member   pulumi.StringPtrInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `spanner.DatabaseIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (DatabaseIAMMemberState) ElementType

func (DatabaseIAMMemberState) ElementType() reflect.Type

type DatabaseIAMPolicy

type DatabaseIAMPolicy struct {
	pulumi.CustomResourceState

	// The name of the Spanner database.
	Database pulumi.StringOutput `pulumi:"database"`
	// (Computed) The etag of the database's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The name of the Spanner instance the database belongs to.
	Instance pulumi.StringOutput `pulumi:"instance"`
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringOutput `pulumi:"policyData"`
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
}

Three different resources help you manage your IAM policy for a Spanner database. Each of these resources serves a different use case:

* `spanner.DatabaseIAMPolicy`: Authoritative. Sets the IAM policy for the database and replaces any existing policy already attached.

> **Warning:** It's entirely possibly to lock yourself out of your database using `spanner.DatabaseIAMPolicy`. Any permissions granted by default will be removed unless you include them in your config.

* `spanner.DatabaseIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the database are preserved. * `spanner.DatabaseIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the database are preserved.

> **Note:** `spanner.DatabaseIAMPolicy` **cannot** be used in conjunction with `spanner.DatabaseIAMBinding` and `spanner.DatabaseIAMMember` or they will fight over what your policy should be.

> **Note:** `spanner.DatabaseIAMBinding` resources **can be** used in conjunction with `spanner.DatabaseIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_spanner\_database\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				organizations.GetIAMPolicyBinding{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = spanner.NewDatabaseIAMPolicy(ctx, "database", &spanner.DatabaseIAMPolicyArgs{
			Instance:   pulumi.String("your-instance-name"),
			Database:   pulumi.String("your-database-name"),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_database\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewDatabaseIAMBinding(ctx, "database", &spanner.DatabaseIAMBindingArgs{
			Database: pulumi.String("your-database-name"),
			Instance: pulumi.String("your-instance-name"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Role: pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_database\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewDatabaseIAMMember(ctx, "database", &spanner.DatabaseIAMMemberArgs{
			Database: pulumi.String("your-database-name"),
			Instance: pulumi.String("your-instance-name"),
			Member:   pulumi.String("user:jane@example.com"),
			Role:     pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

For all import syntaxes, the "resource in question" can take any of the following forms* {{project}}/{{instance}}/{{database}} * {{instance}}/{{database}} (project is taken from provider project) IAM member imports use space-delimited identifiers; the resource in question, the role, and the member identity, e.g.

```sh

$ pulumi import gcp:spanner/databaseIAMPolicy:DatabaseIAMPolicy database "project-name/instance-name/database-name roles/viewer user:foo@example.com"

```

IAM binding imports use space-delimited identifiers; the resource in question and the role, e.g.

```sh

$ pulumi import gcp:spanner/databaseIAMPolicy:DatabaseIAMPolicy database "project-name/instance-name/database-name roles/viewer"

```

IAM policy imports use the identifier of the resource in question, e.g.

```sh

$ pulumi import gcp:spanner/databaseIAMPolicy:DatabaseIAMPolicy database project-name/instance-name/database-name

```

-> **Custom Roles:** If you're importing a IAM resource with a custom role, make sure to use the

full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.

func GetDatabaseIAMPolicy

func GetDatabaseIAMPolicy(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *DatabaseIAMPolicyState, opts ...pulumi.ResourceOption) (*DatabaseIAMPolicy, error)

GetDatabaseIAMPolicy gets an existing DatabaseIAMPolicy resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewDatabaseIAMPolicy

func NewDatabaseIAMPolicy(ctx *pulumi.Context,
	name string, args *DatabaseIAMPolicyArgs, opts ...pulumi.ResourceOption) (*DatabaseIAMPolicy, error)

NewDatabaseIAMPolicy registers a new resource with the given unique name, arguments, and options.

func (*DatabaseIAMPolicy) ElementType added in v4.4.0

func (*DatabaseIAMPolicy) ElementType() reflect.Type

func (*DatabaseIAMPolicy) ToDatabaseIAMPolicyOutput added in v4.4.0

func (i *DatabaseIAMPolicy) ToDatabaseIAMPolicyOutput() DatabaseIAMPolicyOutput

func (*DatabaseIAMPolicy) ToDatabaseIAMPolicyOutputWithContext added in v4.4.0

func (i *DatabaseIAMPolicy) ToDatabaseIAMPolicyOutputWithContext(ctx context.Context) DatabaseIAMPolicyOutput

func (*DatabaseIAMPolicy) ToDatabaseIAMPolicyPtrOutput added in v4.11.1

func (i *DatabaseIAMPolicy) ToDatabaseIAMPolicyPtrOutput() DatabaseIAMPolicyPtrOutput

func (*DatabaseIAMPolicy) ToDatabaseIAMPolicyPtrOutputWithContext added in v4.11.1

func (i *DatabaseIAMPolicy) ToDatabaseIAMPolicyPtrOutputWithContext(ctx context.Context) DatabaseIAMPolicyPtrOutput

type DatabaseIAMPolicyArgs

type DatabaseIAMPolicyArgs struct {
	// The name of the Spanner database.
	Database pulumi.StringInput
	// The name of the Spanner instance the database belongs to.
	Instance pulumi.StringInput
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
}

The set of arguments for constructing a DatabaseIAMPolicy resource.

func (DatabaseIAMPolicyArgs) ElementType

func (DatabaseIAMPolicyArgs) ElementType() reflect.Type

type DatabaseIAMPolicyArray added in v4.11.1

type DatabaseIAMPolicyArray []DatabaseIAMPolicyInput

func (DatabaseIAMPolicyArray) ElementType added in v4.11.1

func (DatabaseIAMPolicyArray) ElementType() reflect.Type

func (DatabaseIAMPolicyArray) ToDatabaseIAMPolicyArrayOutput added in v4.11.1

func (i DatabaseIAMPolicyArray) ToDatabaseIAMPolicyArrayOutput() DatabaseIAMPolicyArrayOutput

func (DatabaseIAMPolicyArray) ToDatabaseIAMPolicyArrayOutputWithContext added in v4.11.1

func (i DatabaseIAMPolicyArray) ToDatabaseIAMPolicyArrayOutputWithContext(ctx context.Context) DatabaseIAMPolicyArrayOutput

type DatabaseIAMPolicyArrayInput added in v4.11.1

type DatabaseIAMPolicyArrayInput interface {
	pulumi.Input

	ToDatabaseIAMPolicyArrayOutput() DatabaseIAMPolicyArrayOutput
	ToDatabaseIAMPolicyArrayOutputWithContext(context.Context) DatabaseIAMPolicyArrayOutput
}

DatabaseIAMPolicyArrayInput is an input type that accepts DatabaseIAMPolicyArray and DatabaseIAMPolicyArrayOutput values. You can construct a concrete instance of `DatabaseIAMPolicyArrayInput` via:

DatabaseIAMPolicyArray{ DatabaseIAMPolicyArgs{...} }

type DatabaseIAMPolicyArrayOutput added in v4.11.1

type DatabaseIAMPolicyArrayOutput struct{ *pulumi.OutputState }

func (DatabaseIAMPolicyArrayOutput) ElementType added in v4.11.1

func (DatabaseIAMPolicyArrayOutput) Index added in v4.11.1

func (DatabaseIAMPolicyArrayOutput) ToDatabaseIAMPolicyArrayOutput added in v4.11.1

func (o DatabaseIAMPolicyArrayOutput) ToDatabaseIAMPolicyArrayOutput() DatabaseIAMPolicyArrayOutput

func (DatabaseIAMPolicyArrayOutput) ToDatabaseIAMPolicyArrayOutputWithContext added in v4.11.1

func (o DatabaseIAMPolicyArrayOutput) ToDatabaseIAMPolicyArrayOutputWithContext(ctx context.Context) DatabaseIAMPolicyArrayOutput

type DatabaseIAMPolicyInput added in v4.4.0

type DatabaseIAMPolicyInput interface {
	pulumi.Input

	ToDatabaseIAMPolicyOutput() DatabaseIAMPolicyOutput
	ToDatabaseIAMPolicyOutputWithContext(ctx context.Context) DatabaseIAMPolicyOutput
}

type DatabaseIAMPolicyMap added in v4.11.1

type DatabaseIAMPolicyMap map[string]DatabaseIAMPolicyInput

func (DatabaseIAMPolicyMap) ElementType added in v4.11.1

func (DatabaseIAMPolicyMap) ElementType() reflect.Type

func (DatabaseIAMPolicyMap) ToDatabaseIAMPolicyMapOutput added in v4.11.1

func (i DatabaseIAMPolicyMap) ToDatabaseIAMPolicyMapOutput() DatabaseIAMPolicyMapOutput

func (DatabaseIAMPolicyMap) ToDatabaseIAMPolicyMapOutputWithContext added in v4.11.1

func (i DatabaseIAMPolicyMap) ToDatabaseIAMPolicyMapOutputWithContext(ctx context.Context) DatabaseIAMPolicyMapOutput

type DatabaseIAMPolicyMapInput added in v4.11.1

type DatabaseIAMPolicyMapInput interface {
	pulumi.Input

	ToDatabaseIAMPolicyMapOutput() DatabaseIAMPolicyMapOutput
	ToDatabaseIAMPolicyMapOutputWithContext(context.Context) DatabaseIAMPolicyMapOutput
}

DatabaseIAMPolicyMapInput is an input type that accepts DatabaseIAMPolicyMap and DatabaseIAMPolicyMapOutput values. You can construct a concrete instance of `DatabaseIAMPolicyMapInput` via:

DatabaseIAMPolicyMap{ "key": DatabaseIAMPolicyArgs{...} }

type DatabaseIAMPolicyMapOutput added in v4.11.1

type DatabaseIAMPolicyMapOutput struct{ *pulumi.OutputState }

func (DatabaseIAMPolicyMapOutput) ElementType added in v4.11.1

func (DatabaseIAMPolicyMapOutput) ElementType() reflect.Type

func (DatabaseIAMPolicyMapOutput) MapIndex added in v4.11.1

func (DatabaseIAMPolicyMapOutput) ToDatabaseIAMPolicyMapOutput added in v4.11.1

func (o DatabaseIAMPolicyMapOutput) ToDatabaseIAMPolicyMapOutput() DatabaseIAMPolicyMapOutput

func (DatabaseIAMPolicyMapOutput) ToDatabaseIAMPolicyMapOutputWithContext added in v4.11.1

func (o DatabaseIAMPolicyMapOutput) ToDatabaseIAMPolicyMapOutputWithContext(ctx context.Context) DatabaseIAMPolicyMapOutput

type DatabaseIAMPolicyOutput added in v4.4.0

type DatabaseIAMPolicyOutput struct {
	*pulumi.OutputState
}

func (DatabaseIAMPolicyOutput) ElementType added in v4.4.0

func (DatabaseIAMPolicyOutput) ElementType() reflect.Type

func (DatabaseIAMPolicyOutput) ToDatabaseIAMPolicyOutput added in v4.4.0

func (o DatabaseIAMPolicyOutput) ToDatabaseIAMPolicyOutput() DatabaseIAMPolicyOutput

func (DatabaseIAMPolicyOutput) ToDatabaseIAMPolicyOutputWithContext added in v4.4.0

func (o DatabaseIAMPolicyOutput) ToDatabaseIAMPolicyOutputWithContext(ctx context.Context) DatabaseIAMPolicyOutput

func (DatabaseIAMPolicyOutput) ToDatabaseIAMPolicyPtrOutput added in v4.11.1

func (o DatabaseIAMPolicyOutput) ToDatabaseIAMPolicyPtrOutput() DatabaseIAMPolicyPtrOutput

func (DatabaseIAMPolicyOutput) ToDatabaseIAMPolicyPtrOutputWithContext added in v4.11.1

func (o DatabaseIAMPolicyOutput) ToDatabaseIAMPolicyPtrOutputWithContext(ctx context.Context) DatabaseIAMPolicyPtrOutput

type DatabaseIAMPolicyPtrInput added in v4.11.1

type DatabaseIAMPolicyPtrInput interface {
	pulumi.Input

	ToDatabaseIAMPolicyPtrOutput() DatabaseIAMPolicyPtrOutput
	ToDatabaseIAMPolicyPtrOutputWithContext(ctx context.Context) DatabaseIAMPolicyPtrOutput
}

type DatabaseIAMPolicyPtrOutput added in v4.11.1

type DatabaseIAMPolicyPtrOutput struct {
	*pulumi.OutputState
}

func (DatabaseIAMPolicyPtrOutput) ElementType added in v4.11.1

func (DatabaseIAMPolicyPtrOutput) ElementType() reflect.Type

func (DatabaseIAMPolicyPtrOutput) ToDatabaseIAMPolicyPtrOutput added in v4.11.1

func (o DatabaseIAMPolicyPtrOutput) ToDatabaseIAMPolicyPtrOutput() DatabaseIAMPolicyPtrOutput

func (DatabaseIAMPolicyPtrOutput) ToDatabaseIAMPolicyPtrOutputWithContext added in v4.11.1

func (o DatabaseIAMPolicyPtrOutput) ToDatabaseIAMPolicyPtrOutputWithContext(ctx context.Context) DatabaseIAMPolicyPtrOutput

type DatabaseIAMPolicyState

type DatabaseIAMPolicyState struct {
	// The name of the Spanner database.
	Database pulumi.StringPtrInput
	// (Computed) The etag of the database's IAM policy.
	Etag pulumi.StringPtrInput
	// The name of the Spanner instance the database belongs to.
	Instance pulumi.StringPtrInput
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringPtrInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
}

func (DatabaseIAMPolicyState) ElementType

func (DatabaseIAMPolicyState) ElementType() reflect.Type

type DatabaseInput added in v4.4.0

type DatabaseInput interface {
	pulumi.Input

	ToDatabaseOutput() DatabaseOutput
	ToDatabaseOutputWithContext(ctx context.Context) DatabaseOutput
}

type DatabaseMap added in v4.11.1

type DatabaseMap map[string]DatabaseInput

func (DatabaseMap) ElementType added in v4.11.1

func (DatabaseMap) ElementType() reflect.Type

func (DatabaseMap) ToDatabaseMapOutput added in v4.11.1

func (i DatabaseMap) ToDatabaseMapOutput() DatabaseMapOutput

func (DatabaseMap) ToDatabaseMapOutputWithContext added in v4.11.1

func (i DatabaseMap) ToDatabaseMapOutputWithContext(ctx context.Context) DatabaseMapOutput

type DatabaseMapInput added in v4.11.1

type DatabaseMapInput interface {
	pulumi.Input

	ToDatabaseMapOutput() DatabaseMapOutput
	ToDatabaseMapOutputWithContext(context.Context) DatabaseMapOutput
}

DatabaseMapInput is an input type that accepts DatabaseMap and DatabaseMapOutput values. You can construct a concrete instance of `DatabaseMapInput` via:

DatabaseMap{ "key": DatabaseArgs{...} }

type DatabaseMapOutput added in v4.11.1

type DatabaseMapOutput struct{ *pulumi.OutputState }

func (DatabaseMapOutput) ElementType added in v4.11.1

func (DatabaseMapOutput) ElementType() reflect.Type

func (DatabaseMapOutput) MapIndex added in v4.11.1

func (DatabaseMapOutput) ToDatabaseMapOutput added in v4.11.1

func (o DatabaseMapOutput) ToDatabaseMapOutput() DatabaseMapOutput

func (DatabaseMapOutput) ToDatabaseMapOutputWithContext added in v4.11.1

func (o DatabaseMapOutput) ToDatabaseMapOutputWithContext(ctx context.Context) DatabaseMapOutput

type DatabaseOutput added in v4.4.0

type DatabaseOutput struct {
	*pulumi.OutputState
}

func (DatabaseOutput) ElementType added in v4.4.0

func (DatabaseOutput) ElementType() reflect.Type

func (DatabaseOutput) ToDatabaseOutput added in v4.4.0

func (o DatabaseOutput) ToDatabaseOutput() DatabaseOutput

func (DatabaseOutput) ToDatabaseOutputWithContext added in v4.4.0

func (o DatabaseOutput) ToDatabaseOutputWithContext(ctx context.Context) DatabaseOutput

func (DatabaseOutput) ToDatabasePtrOutput added in v4.11.1

func (o DatabaseOutput) ToDatabasePtrOutput() DatabasePtrOutput

func (DatabaseOutput) ToDatabasePtrOutputWithContext added in v4.11.1

func (o DatabaseOutput) ToDatabasePtrOutputWithContext(ctx context.Context) DatabasePtrOutput

type DatabasePtrInput added in v4.11.1

type DatabasePtrInput interface {
	pulumi.Input

	ToDatabasePtrOutput() DatabasePtrOutput
	ToDatabasePtrOutputWithContext(ctx context.Context) DatabasePtrOutput
}

type DatabasePtrOutput added in v4.11.1

type DatabasePtrOutput struct {
	*pulumi.OutputState
}

func (DatabasePtrOutput) ElementType added in v4.11.1

func (DatabasePtrOutput) ElementType() reflect.Type

func (DatabasePtrOutput) ToDatabasePtrOutput added in v4.11.1

func (o DatabasePtrOutput) ToDatabasePtrOutput() DatabasePtrOutput

func (DatabasePtrOutput) ToDatabasePtrOutputWithContext added in v4.11.1

func (o DatabasePtrOutput) ToDatabasePtrOutputWithContext(ctx context.Context) DatabasePtrOutput

type DatabaseState

type DatabaseState struct {
	// An optional list of DDL statements to run inside the newly created
	// database. Statements can create tables, indexes, etc. These statements
	// execute atomically with the creation of the database: if there is an
	// error in any statement, the database is not created.
	Ddls pulumi.StringArrayInput
	// Whether or not to allow the provider to destroy the instance. Unless this field is set to false
	// in state, a `destroy` or `update` that would delete the instance will fail.
	DeletionProtection pulumi.BoolPtrInput
	// The instance to create the database on.
	Instance pulumi.StringPtrInput
	// A unique identifier for the database, which cannot be changed after
	// the instance is created. Values are of the form [a-z][-a-z0-9]*[a-z0-9].
	Name pulumi.StringPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// An explanation of the status of the database.
	State pulumi.StringPtrInput
}

func (DatabaseState) ElementType

func (DatabaseState) ElementType() reflect.Type

type Instance

type Instance struct {
	pulumi.CustomResourceState

	// The name of the instance's configuration (similar but not
	// quite the same as a region) which defines defines the geographic placement and
	// replication of your databases in this instance. It determines where your data
	// is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc.
	// In order to obtain a valid list please consult the
	// [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances).
	Config pulumi.StringOutput `pulumi:"config"`
	// The descriptive name for this instance as it appears in UIs. Must be
	// unique per project and between 4 and 30 characters in length.
	DisplayName pulumi.StringOutput `pulumi:"displayName"`
	// An object containing a list of "key": value pairs.
	// Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
	Labels pulumi.StringMapOutput `pulumi:"labels"`
	// A unique identifier for the instance, which cannot be changed after
	// the instance is created. The name must be between 6 and 30 characters
	// in length.
	Name pulumi.StringOutput `pulumi:"name"`
	// The number of nodes allocated to this instance.
	NumNodes pulumi.IntPtrOutput `pulumi:"numNodes"`
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
	// Instance status: 'CREATING' or 'READY'.
	State pulumi.StringOutput `pulumi:"state"`
}

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

To get more information about Instance, see:

* [API documentation](https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances) * How-to Guides

## Example Usage ### Spanner Instance Basic

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewInstance(ctx, "example", &spanner.InstanceArgs{
			Config:      pulumi.String("regional-us-central1"),
			DisplayName: pulumi.String("Test Spanner Instance"),
			Labels: pulumi.StringMap{
				"foo": pulumi.String("bar"),
			},
			NumNodes: pulumi.Int(2),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

``` ### Spanner Instance Multi Regional

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewInstance(ctx, "example", &spanner.InstanceArgs{
			Config:      pulumi.String("nam-eur-asia1"),
			DisplayName: pulumi.String("Multi Regional Instance"),
			Labels: pulumi.StringMap{
				"foo": pulumi.String("bar"),
			},
			NumNodes: pulumi.Int(2),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

Instance can be imported using any of these accepted formats

```sh

$ pulumi import gcp:spanner/instance:Instance default projects/{{project}}/instances/{{name}}

```

```sh

$ pulumi import gcp:spanner/instance:Instance default {{project}}/{{name}}

```

```sh

$ pulumi import gcp:spanner/instance:Instance default {{name}}

```

func GetInstance

func GetInstance(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *InstanceState, opts ...pulumi.ResourceOption) (*Instance, error)

GetInstance gets an existing Instance resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewInstance

func NewInstance(ctx *pulumi.Context,
	name string, args *InstanceArgs, opts ...pulumi.ResourceOption) (*Instance, error)

NewInstance registers a new resource with the given unique name, arguments, and options.

func (*Instance) ElementType added in v4.4.0

func (*Instance) ElementType() reflect.Type

func (*Instance) ToInstanceOutput added in v4.4.0

func (i *Instance) ToInstanceOutput() InstanceOutput

func (*Instance) ToInstanceOutputWithContext added in v4.4.0

func (i *Instance) ToInstanceOutputWithContext(ctx context.Context) InstanceOutput

func (*Instance) ToInstancePtrOutput added in v4.11.1

func (i *Instance) ToInstancePtrOutput() InstancePtrOutput

func (*Instance) ToInstancePtrOutputWithContext added in v4.11.1

func (i *Instance) ToInstancePtrOutputWithContext(ctx context.Context) InstancePtrOutput

type InstanceArgs

type InstanceArgs struct {
	// The name of the instance's configuration (similar but not
	// quite the same as a region) which defines defines the geographic placement and
	// replication of your databases in this instance. It determines where your data
	// is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc.
	// In order to obtain a valid list please consult the
	// [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances).
	Config pulumi.StringInput
	// The descriptive name for this instance as it appears in UIs. Must be
	// unique per project and between 4 and 30 characters in length.
	DisplayName pulumi.StringInput
	// An object containing a list of "key": value pairs.
	// Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
	Labels pulumi.StringMapInput
	// A unique identifier for the instance, which cannot be changed after
	// the instance is created. The name must be between 6 and 30 characters
	// in length.
	Name pulumi.StringPtrInput
	// The number of nodes allocated to this instance.
	NumNodes pulumi.IntPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringPtrInput
}

The set of arguments for constructing a Instance resource.

func (InstanceArgs) ElementType

func (InstanceArgs) ElementType() reflect.Type

type InstanceArray added in v4.11.1

type InstanceArray []InstanceInput

func (InstanceArray) ElementType added in v4.11.1

func (InstanceArray) ElementType() reflect.Type

func (InstanceArray) ToInstanceArrayOutput added in v4.11.1

func (i InstanceArray) ToInstanceArrayOutput() InstanceArrayOutput

func (InstanceArray) ToInstanceArrayOutputWithContext added in v4.11.1

func (i InstanceArray) ToInstanceArrayOutputWithContext(ctx context.Context) InstanceArrayOutput

type InstanceArrayInput added in v4.11.1

type InstanceArrayInput interface {
	pulumi.Input

	ToInstanceArrayOutput() InstanceArrayOutput
	ToInstanceArrayOutputWithContext(context.Context) InstanceArrayOutput
}

InstanceArrayInput is an input type that accepts InstanceArray and InstanceArrayOutput values. You can construct a concrete instance of `InstanceArrayInput` via:

InstanceArray{ InstanceArgs{...} }

type InstanceArrayOutput added in v4.11.1

type InstanceArrayOutput struct{ *pulumi.OutputState }

func (InstanceArrayOutput) ElementType added in v4.11.1

func (InstanceArrayOutput) ElementType() reflect.Type

func (InstanceArrayOutput) Index added in v4.11.1

func (InstanceArrayOutput) ToInstanceArrayOutput added in v4.11.1

func (o InstanceArrayOutput) ToInstanceArrayOutput() InstanceArrayOutput

func (InstanceArrayOutput) ToInstanceArrayOutputWithContext added in v4.11.1

func (o InstanceArrayOutput) ToInstanceArrayOutputWithContext(ctx context.Context) InstanceArrayOutput

type InstanceIAMBinding

type InstanceIAMBinding struct {
	pulumi.CustomResourceState

	Condition InstanceIAMBindingConditionPtrOutput `pulumi:"condition"`
	// (Computed) The etag of the instance's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The name of the instance.
	Instance pulumi.StringOutput      `pulumi:"instance"`
	Members  pulumi.StringArrayOutput `pulumi:"members"`
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
	// The role that should be applied. Only one
	// `spanner.InstanceIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for a Spanner instance. Each of these resources serves a different use case:

* `spanner.InstanceIAMPolicy`: Authoritative. Sets the IAM policy for the instance and replaces any existing policy already attached.

> **Warning:** It's entirely possibly to lock yourself out of your instance using `spanner.InstanceIAMPolicy`. Any permissions granted by default will be removed unless you include them in your config.

* `spanner.InstanceIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the instance are preserved. * `spanner.InstanceIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the instance are preserved.

> **Note:** `spanner.InstanceIAMPolicy` **cannot** be used in conjunction with `spanner.InstanceIAMBinding` and `spanner.InstanceIAMMember` or they will fight over what your policy should be.

> **Note:** `spanner.InstanceIAMBinding` resources **can be** used in conjunction with `spanner.InstanceIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_spanner\_instance\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				organizations.GetIAMPolicyBinding{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = spanner.NewInstanceIAMPolicy(ctx, "instance", &spanner.InstanceIAMPolicyArgs{
			Instance:   pulumi.String("your-instance-name"),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_instance\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewInstanceIAMBinding(ctx, "instance", &spanner.InstanceIAMBindingArgs{
			Instance: pulumi.String("your-instance-name"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Role: pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_instance\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewInstanceIAMMember(ctx, "instance", &spanner.InstanceIAMMemberArgs{
			Instance: pulumi.String("your-instance-name"),
			Member:   pulumi.String("user:jane@example.com"),
			Role:     pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

For all import syntaxes, the "resource in question" can take any of the following forms* {{project}}/{{name}} * {{name}} (project is taken from provider project) IAM member imports use space-delimited identifiers; the resource in question, the role, and the account, e.g.

```sh

$ pulumi import gcp:spanner/instanceIAMBinding:InstanceIAMBinding instance "project-name/instance-name roles/viewer user:foo@example.com"

```

IAM binding imports use space-delimited identifiers; the resource in question and the role, e.g.

```sh

$ pulumi import gcp:spanner/instanceIAMBinding:InstanceIAMBinding instance "project-name/instance-name roles/viewer"

```

IAM policy imports use the identifier of the resource in question, e.g.

```sh

$ pulumi import gcp:spanner/instanceIAMBinding:InstanceIAMBinding instance project-name/instance-name

```

-> **Custom Roles**If you're importing a IAM resource with a custom role, make sure to use the

full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.

func GetInstanceIAMBinding

func GetInstanceIAMBinding(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *InstanceIAMBindingState, opts ...pulumi.ResourceOption) (*InstanceIAMBinding, error)

GetInstanceIAMBinding gets an existing InstanceIAMBinding resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewInstanceIAMBinding

func NewInstanceIAMBinding(ctx *pulumi.Context,
	name string, args *InstanceIAMBindingArgs, opts ...pulumi.ResourceOption) (*InstanceIAMBinding, error)

NewInstanceIAMBinding registers a new resource with the given unique name, arguments, and options.

func (*InstanceIAMBinding) ElementType added in v4.4.0

func (*InstanceIAMBinding) ElementType() reflect.Type

func (*InstanceIAMBinding) ToInstanceIAMBindingOutput added in v4.4.0

func (i *InstanceIAMBinding) ToInstanceIAMBindingOutput() InstanceIAMBindingOutput

func (*InstanceIAMBinding) ToInstanceIAMBindingOutputWithContext added in v4.4.0

func (i *InstanceIAMBinding) ToInstanceIAMBindingOutputWithContext(ctx context.Context) InstanceIAMBindingOutput

func (*InstanceIAMBinding) ToInstanceIAMBindingPtrOutput added in v4.11.1

func (i *InstanceIAMBinding) ToInstanceIAMBindingPtrOutput() InstanceIAMBindingPtrOutput

func (*InstanceIAMBinding) ToInstanceIAMBindingPtrOutputWithContext added in v4.11.1

func (i *InstanceIAMBinding) ToInstanceIAMBindingPtrOutputWithContext(ctx context.Context) InstanceIAMBindingPtrOutput

type InstanceIAMBindingArgs

type InstanceIAMBindingArgs struct {
	Condition InstanceIAMBindingConditionPtrInput
	// The name of the instance.
	Instance pulumi.StringInput
	Members  pulumi.StringArrayInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `spanner.InstanceIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a InstanceIAMBinding resource.

func (InstanceIAMBindingArgs) ElementType

func (InstanceIAMBindingArgs) ElementType() reflect.Type

type InstanceIAMBindingArray added in v4.11.1

type InstanceIAMBindingArray []InstanceIAMBindingInput

func (InstanceIAMBindingArray) ElementType added in v4.11.1

func (InstanceIAMBindingArray) ElementType() reflect.Type

func (InstanceIAMBindingArray) ToInstanceIAMBindingArrayOutput added in v4.11.1

func (i InstanceIAMBindingArray) ToInstanceIAMBindingArrayOutput() InstanceIAMBindingArrayOutput

func (InstanceIAMBindingArray) ToInstanceIAMBindingArrayOutputWithContext added in v4.11.1

func (i InstanceIAMBindingArray) ToInstanceIAMBindingArrayOutputWithContext(ctx context.Context) InstanceIAMBindingArrayOutput

type InstanceIAMBindingArrayInput added in v4.11.1

type InstanceIAMBindingArrayInput interface {
	pulumi.Input

	ToInstanceIAMBindingArrayOutput() InstanceIAMBindingArrayOutput
	ToInstanceIAMBindingArrayOutputWithContext(context.Context) InstanceIAMBindingArrayOutput
}

InstanceIAMBindingArrayInput is an input type that accepts InstanceIAMBindingArray and InstanceIAMBindingArrayOutput values. You can construct a concrete instance of `InstanceIAMBindingArrayInput` via:

InstanceIAMBindingArray{ InstanceIAMBindingArgs{...} }

type InstanceIAMBindingArrayOutput added in v4.11.1

type InstanceIAMBindingArrayOutput struct{ *pulumi.OutputState }

func (InstanceIAMBindingArrayOutput) ElementType added in v4.11.1

func (InstanceIAMBindingArrayOutput) Index added in v4.11.1

func (InstanceIAMBindingArrayOutput) ToInstanceIAMBindingArrayOutput added in v4.11.1

func (o InstanceIAMBindingArrayOutput) ToInstanceIAMBindingArrayOutput() InstanceIAMBindingArrayOutput

func (InstanceIAMBindingArrayOutput) ToInstanceIAMBindingArrayOutputWithContext added in v4.11.1

func (o InstanceIAMBindingArrayOutput) ToInstanceIAMBindingArrayOutputWithContext(ctx context.Context) InstanceIAMBindingArrayOutput

type InstanceIAMBindingCondition

type InstanceIAMBindingCondition struct {
	Description *string `pulumi:"description"`
	Expression  string  `pulumi:"expression"`
	Title       string  `pulumi:"title"`
}

type InstanceIAMBindingConditionArgs

type InstanceIAMBindingConditionArgs struct {
	Description pulumi.StringPtrInput `pulumi:"description"`
	Expression  pulumi.StringInput    `pulumi:"expression"`
	Title       pulumi.StringInput    `pulumi:"title"`
}

func (InstanceIAMBindingConditionArgs) ElementType

func (InstanceIAMBindingConditionArgs) ToInstanceIAMBindingConditionOutput

func (i InstanceIAMBindingConditionArgs) ToInstanceIAMBindingConditionOutput() InstanceIAMBindingConditionOutput

func (InstanceIAMBindingConditionArgs) ToInstanceIAMBindingConditionOutputWithContext

func (i InstanceIAMBindingConditionArgs) ToInstanceIAMBindingConditionOutputWithContext(ctx context.Context) InstanceIAMBindingConditionOutput

func (InstanceIAMBindingConditionArgs) ToInstanceIAMBindingConditionPtrOutput

func (i InstanceIAMBindingConditionArgs) ToInstanceIAMBindingConditionPtrOutput() InstanceIAMBindingConditionPtrOutput

func (InstanceIAMBindingConditionArgs) ToInstanceIAMBindingConditionPtrOutputWithContext

func (i InstanceIAMBindingConditionArgs) ToInstanceIAMBindingConditionPtrOutputWithContext(ctx context.Context) InstanceIAMBindingConditionPtrOutput

type InstanceIAMBindingConditionInput

type InstanceIAMBindingConditionInput interface {
	pulumi.Input

	ToInstanceIAMBindingConditionOutput() InstanceIAMBindingConditionOutput
	ToInstanceIAMBindingConditionOutputWithContext(context.Context) InstanceIAMBindingConditionOutput
}

InstanceIAMBindingConditionInput is an input type that accepts InstanceIAMBindingConditionArgs and InstanceIAMBindingConditionOutput values. You can construct a concrete instance of `InstanceIAMBindingConditionInput` via:

InstanceIAMBindingConditionArgs{...}

type InstanceIAMBindingConditionOutput

type InstanceIAMBindingConditionOutput struct{ *pulumi.OutputState }

func (InstanceIAMBindingConditionOutput) Description

func (InstanceIAMBindingConditionOutput) ElementType

func (InstanceIAMBindingConditionOutput) Expression

func (InstanceIAMBindingConditionOutput) Title

func (InstanceIAMBindingConditionOutput) ToInstanceIAMBindingConditionOutput

func (o InstanceIAMBindingConditionOutput) ToInstanceIAMBindingConditionOutput() InstanceIAMBindingConditionOutput

func (InstanceIAMBindingConditionOutput) ToInstanceIAMBindingConditionOutputWithContext

func (o InstanceIAMBindingConditionOutput) ToInstanceIAMBindingConditionOutputWithContext(ctx context.Context) InstanceIAMBindingConditionOutput

func (InstanceIAMBindingConditionOutput) ToInstanceIAMBindingConditionPtrOutput

func (o InstanceIAMBindingConditionOutput) ToInstanceIAMBindingConditionPtrOutput() InstanceIAMBindingConditionPtrOutput

func (InstanceIAMBindingConditionOutput) ToInstanceIAMBindingConditionPtrOutputWithContext

func (o InstanceIAMBindingConditionOutput) ToInstanceIAMBindingConditionPtrOutputWithContext(ctx context.Context) InstanceIAMBindingConditionPtrOutput

type InstanceIAMBindingConditionPtrInput

type InstanceIAMBindingConditionPtrInput interface {
	pulumi.Input

	ToInstanceIAMBindingConditionPtrOutput() InstanceIAMBindingConditionPtrOutput
	ToInstanceIAMBindingConditionPtrOutputWithContext(context.Context) InstanceIAMBindingConditionPtrOutput
}

InstanceIAMBindingConditionPtrInput is an input type that accepts InstanceIAMBindingConditionArgs, InstanceIAMBindingConditionPtr and InstanceIAMBindingConditionPtrOutput values. You can construct a concrete instance of `InstanceIAMBindingConditionPtrInput` via:

        InstanceIAMBindingConditionArgs{...}

or:

        nil

type InstanceIAMBindingConditionPtrOutput

type InstanceIAMBindingConditionPtrOutput struct{ *pulumi.OutputState }

func (InstanceIAMBindingConditionPtrOutput) Description

func (InstanceIAMBindingConditionPtrOutput) Elem

func (InstanceIAMBindingConditionPtrOutput) ElementType

func (InstanceIAMBindingConditionPtrOutput) Expression

func (InstanceIAMBindingConditionPtrOutput) Title

func (InstanceIAMBindingConditionPtrOutput) ToInstanceIAMBindingConditionPtrOutput

func (o InstanceIAMBindingConditionPtrOutput) ToInstanceIAMBindingConditionPtrOutput() InstanceIAMBindingConditionPtrOutput

func (InstanceIAMBindingConditionPtrOutput) ToInstanceIAMBindingConditionPtrOutputWithContext

func (o InstanceIAMBindingConditionPtrOutput) ToInstanceIAMBindingConditionPtrOutputWithContext(ctx context.Context) InstanceIAMBindingConditionPtrOutput

type InstanceIAMBindingInput added in v4.4.0

type InstanceIAMBindingInput interface {
	pulumi.Input

	ToInstanceIAMBindingOutput() InstanceIAMBindingOutput
	ToInstanceIAMBindingOutputWithContext(ctx context.Context) InstanceIAMBindingOutput
}

type InstanceIAMBindingMap added in v4.11.1

type InstanceIAMBindingMap map[string]InstanceIAMBindingInput

func (InstanceIAMBindingMap) ElementType added in v4.11.1

func (InstanceIAMBindingMap) ElementType() reflect.Type

func (InstanceIAMBindingMap) ToInstanceIAMBindingMapOutput added in v4.11.1

func (i InstanceIAMBindingMap) ToInstanceIAMBindingMapOutput() InstanceIAMBindingMapOutput

func (InstanceIAMBindingMap) ToInstanceIAMBindingMapOutputWithContext added in v4.11.1

func (i InstanceIAMBindingMap) ToInstanceIAMBindingMapOutputWithContext(ctx context.Context) InstanceIAMBindingMapOutput

type InstanceIAMBindingMapInput added in v4.11.1

type InstanceIAMBindingMapInput interface {
	pulumi.Input

	ToInstanceIAMBindingMapOutput() InstanceIAMBindingMapOutput
	ToInstanceIAMBindingMapOutputWithContext(context.Context) InstanceIAMBindingMapOutput
}

InstanceIAMBindingMapInput is an input type that accepts InstanceIAMBindingMap and InstanceIAMBindingMapOutput values. You can construct a concrete instance of `InstanceIAMBindingMapInput` via:

InstanceIAMBindingMap{ "key": InstanceIAMBindingArgs{...} }

type InstanceIAMBindingMapOutput added in v4.11.1

type InstanceIAMBindingMapOutput struct{ *pulumi.OutputState }

func (InstanceIAMBindingMapOutput) ElementType added in v4.11.1

func (InstanceIAMBindingMapOutput) MapIndex added in v4.11.1

func (InstanceIAMBindingMapOutput) ToInstanceIAMBindingMapOutput added in v4.11.1

func (o InstanceIAMBindingMapOutput) ToInstanceIAMBindingMapOutput() InstanceIAMBindingMapOutput

func (InstanceIAMBindingMapOutput) ToInstanceIAMBindingMapOutputWithContext added in v4.11.1

func (o InstanceIAMBindingMapOutput) ToInstanceIAMBindingMapOutputWithContext(ctx context.Context) InstanceIAMBindingMapOutput

type InstanceIAMBindingOutput added in v4.4.0

type InstanceIAMBindingOutput struct {
	*pulumi.OutputState
}

func (InstanceIAMBindingOutput) ElementType added in v4.4.0

func (InstanceIAMBindingOutput) ElementType() reflect.Type

func (InstanceIAMBindingOutput) ToInstanceIAMBindingOutput added in v4.4.0

func (o InstanceIAMBindingOutput) ToInstanceIAMBindingOutput() InstanceIAMBindingOutput

func (InstanceIAMBindingOutput) ToInstanceIAMBindingOutputWithContext added in v4.4.0

func (o InstanceIAMBindingOutput) ToInstanceIAMBindingOutputWithContext(ctx context.Context) InstanceIAMBindingOutput

func (InstanceIAMBindingOutput) ToInstanceIAMBindingPtrOutput added in v4.11.1

func (o InstanceIAMBindingOutput) ToInstanceIAMBindingPtrOutput() InstanceIAMBindingPtrOutput

func (InstanceIAMBindingOutput) ToInstanceIAMBindingPtrOutputWithContext added in v4.11.1

func (o InstanceIAMBindingOutput) ToInstanceIAMBindingPtrOutputWithContext(ctx context.Context) InstanceIAMBindingPtrOutput

type InstanceIAMBindingPtrInput added in v4.11.1

type InstanceIAMBindingPtrInput interface {
	pulumi.Input

	ToInstanceIAMBindingPtrOutput() InstanceIAMBindingPtrOutput
	ToInstanceIAMBindingPtrOutputWithContext(ctx context.Context) InstanceIAMBindingPtrOutput
}

type InstanceIAMBindingPtrOutput added in v4.11.1

type InstanceIAMBindingPtrOutput struct {
	*pulumi.OutputState
}

func (InstanceIAMBindingPtrOutput) ElementType added in v4.11.1

func (InstanceIAMBindingPtrOutput) ToInstanceIAMBindingPtrOutput added in v4.11.1

func (o InstanceIAMBindingPtrOutput) ToInstanceIAMBindingPtrOutput() InstanceIAMBindingPtrOutput

func (InstanceIAMBindingPtrOutput) ToInstanceIAMBindingPtrOutputWithContext added in v4.11.1

func (o InstanceIAMBindingPtrOutput) ToInstanceIAMBindingPtrOutputWithContext(ctx context.Context) InstanceIAMBindingPtrOutput

type InstanceIAMBindingState

type InstanceIAMBindingState struct {
	Condition InstanceIAMBindingConditionPtrInput
	// (Computed) The etag of the instance's IAM policy.
	Etag pulumi.StringPtrInput
	// The name of the instance.
	Instance pulumi.StringPtrInput
	Members  pulumi.StringArrayInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `spanner.InstanceIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (InstanceIAMBindingState) ElementType

func (InstanceIAMBindingState) ElementType() reflect.Type

type InstanceIAMMember

type InstanceIAMMember struct {
	pulumi.CustomResourceState

	Condition InstanceIAMMemberConditionPtrOutput `pulumi:"condition"`
	// (Computed) The etag of the instance's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The name of the instance.
	Instance pulumi.StringOutput `pulumi:"instance"`
	Member   pulumi.StringOutput `pulumi:"member"`
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
	// The role that should be applied. Only one
	// `spanner.InstanceIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for a Spanner instance. Each of these resources serves a different use case:

* `spanner.InstanceIAMPolicy`: Authoritative. Sets the IAM policy for the instance and replaces any existing policy already attached.

> **Warning:** It's entirely possibly to lock yourself out of your instance using `spanner.InstanceIAMPolicy`. Any permissions granted by default will be removed unless you include them in your config.

* `spanner.InstanceIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the instance are preserved. * `spanner.InstanceIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the instance are preserved.

> **Note:** `spanner.InstanceIAMPolicy` **cannot** be used in conjunction with `spanner.InstanceIAMBinding` and `spanner.InstanceIAMMember` or they will fight over what your policy should be.

> **Note:** `spanner.InstanceIAMBinding` resources **can be** used in conjunction with `spanner.InstanceIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_spanner\_instance\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				organizations.GetIAMPolicyBinding{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = spanner.NewInstanceIAMPolicy(ctx, "instance", &spanner.InstanceIAMPolicyArgs{
			Instance:   pulumi.String("your-instance-name"),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_instance\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewInstanceIAMBinding(ctx, "instance", &spanner.InstanceIAMBindingArgs{
			Instance: pulumi.String("your-instance-name"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Role: pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_instance\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewInstanceIAMMember(ctx, "instance", &spanner.InstanceIAMMemberArgs{
			Instance: pulumi.String("your-instance-name"),
			Member:   pulumi.String("user:jane@example.com"),
			Role:     pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

For all import syntaxes, the "resource in question" can take any of the following forms* {{project}}/{{name}} * {{name}} (project is taken from provider project) IAM member imports use space-delimited identifiers; the resource in question, the role, and the account, e.g.

```sh

$ pulumi import gcp:spanner/instanceIAMMember:InstanceIAMMember instance "project-name/instance-name roles/viewer user:foo@example.com"

```

IAM binding imports use space-delimited identifiers; the resource in question and the role, e.g.

```sh

$ pulumi import gcp:spanner/instanceIAMMember:InstanceIAMMember instance "project-name/instance-name roles/viewer"

```

IAM policy imports use the identifier of the resource in question, e.g.

```sh

$ pulumi import gcp:spanner/instanceIAMMember:InstanceIAMMember instance project-name/instance-name

```

-> **Custom Roles**If you're importing a IAM resource with a custom role, make sure to use the

full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.

func GetInstanceIAMMember

func GetInstanceIAMMember(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *InstanceIAMMemberState, opts ...pulumi.ResourceOption) (*InstanceIAMMember, error)

GetInstanceIAMMember gets an existing InstanceIAMMember resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewInstanceIAMMember

func NewInstanceIAMMember(ctx *pulumi.Context,
	name string, args *InstanceIAMMemberArgs, opts ...pulumi.ResourceOption) (*InstanceIAMMember, error)

NewInstanceIAMMember registers a new resource with the given unique name, arguments, and options.

func (*InstanceIAMMember) ElementType added in v4.4.0

func (*InstanceIAMMember) ElementType() reflect.Type

func (*InstanceIAMMember) ToInstanceIAMMemberOutput added in v4.4.0

func (i *InstanceIAMMember) ToInstanceIAMMemberOutput() InstanceIAMMemberOutput

func (*InstanceIAMMember) ToInstanceIAMMemberOutputWithContext added in v4.4.0

func (i *InstanceIAMMember) ToInstanceIAMMemberOutputWithContext(ctx context.Context) InstanceIAMMemberOutput

func (*InstanceIAMMember) ToInstanceIAMMemberPtrOutput added in v4.11.1

func (i *InstanceIAMMember) ToInstanceIAMMemberPtrOutput() InstanceIAMMemberPtrOutput

func (*InstanceIAMMember) ToInstanceIAMMemberPtrOutputWithContext added in v4.11.1

func (i *InstanceIAMMember) ToInstanceIAMMemberPtrOutputWithContext(ctx context.Context) InstanceIAMMemberPtrOutput

type InstanceIAMMemberArgs

type InstanceIAMMemberArgs struct {
	Condition InstanceIAMMemberConditionPtrInput
	// The name of the instance.
	Instance pulumi.StringInput
	Member   pulumi.StringInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `spanner.InstanceIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a InstanceIAMMember resource.

func (InstanceIAMMemberArgs) ElementType

func (InstanceIAMMemberArgs) ElementType() reflect.Type

type InstanceIAMMemberArray added in v4.11.1

type InstanceIAMMemberArray []InstanceIAMMemberInput

func (InstanceIAMMemberArray) ElementType added in v4.11.1

func (InstanceIAMMemberArray) ElementType() reflect.Type

func (InstanceIAMMemberArray) ToInstanceIAMMemberArrayOutput added in v4.11.1

func (i InstanceIAMMemberArray) ToInstanceIAMMemberArrayOutput() InstanceIAMMemberArrayOutput

func (InstanceIAMMemberArray) ToInstanceIAMMemberArrayOutputWithContext added in v4.11.1

func (i InstanceIAMMemberArray) ToInstanceIAMMemberArrayOutputWithContext(ctx context.Context) InstanceIAMMemberArrayOutput

type InstanceIAMMemberArrayInput added in v4.11.1

type InstanceIAMMemberArrayInput interface {
	pulumi.Input

	ToInstanceIAMMemberArrayOutput() InstanceIAMMemberArrayOutput
	ToInstanceIAMMemberArrayOutputWithContext(context.Context) InstanceIAMMemberArrayOutput
}

InstanceIAMMemberArrayInput is an input type that accepts InstanceIAMMemberArray and InstanceIAMMemberArrayOutput values. You can construct a concrete instance of `InstanceIAMMemberArrayInput` via:

InstanceIAMMemberArray{ InstanceIAMMemberArgs{...} }

type InstanceIAMMemberArrayOutput added in v4.11.1

type InstanceIAMMemberArrayOutput struct{ *pulumi.OutputState }

func (InstanceIAMMemberArrayOutput) ElementType added in v4.11.1

func (InstanceIAMMemberArrayOutput) Index added in v4.11.1

func (InstanceIAMMemberArrayOutput) ToInstanceIAMMemberArrayOutput added in v4.11.1

func (o InstanceIAMMemberArrayOutput) ToInstanceIAMMemberArrayOutput() InstanceIAMMemberArrayOutput

func (InstanceIAMMemberArrayOutput) ToInstanceIAMMemberArrayOutputWithContext added in v4.11.1

func (o InstanceIAMMemberArrayOutput) ToInstanceIAMMemberArrayOutputWithContext(ctx context.Context) InstanceIAMMemberArrayOutput

type InstanceIAMMemberCondition

type InstanceIAMMemberCondition struct {
	Description *string `pulumi:"description"`
	Expression  string  `pulumi:"expression"`
	Title       string  `pulumi:"title"`
}

type InstanceIAMMemberConditionArgs

type InstanceIAMMemberConditionArgs struct {
	Description pulumi.StringPtrInput `pulumi:"description"`
	Expression  pulumi.StringInput    `pulumi:"expression"`
	Title       pulumi.StringInput    `pulumi:"title"`
}

func (InstanceIAMMemberConditionArgs) ElementType

func (InstanceIAMMemberConditionArgs) ToInstanceIAMMemberConditionOutput

func (i InstanceIAMMemberConditionArgs) ToInstanceIAMMemberConditionOutput() InstanceIAMMemberConditionOutput

func (InstanceIAMMemberConditionArgs) ToInstanceIAMMemberConditionOutputWithContext

func (i InstanceIAMMemberConditionArgs) ToInstanceIAMMemberConditionOutputWithContext(ctx context.Context) InstanceIAMMemberConditionOutput

func (InstanceIAMMemberConditionArgs) ToInstanceIAMMemberConditionPtrOutput

func (i InstanceIAMMemberConditionArgs) ToInstanceIAMMemberConditionPtrOutput() InstanceIAMMemberConditionPtrOutput

func (InstanceIAMMemberConditionArgs) ToInstanceIAMMemberConditionPtrOutputWithContext

func (i InstanceIAMMemberConditionArgs) ToInstanceIAMMemberConditionPtrOutputWithContext(ctx context.Context) InstanceIAMMemberConditionPtrOutput

type InstanceIAMMemberConditionInput

type InstanceIAMMemberConditionInput interface {
	pulumi.Input

	ToInstanceIAMMemberConditionOutput() InstanceIAMMemberConditionOutput
	ToInstanceIAMMemberConditionOutputWithContext(context.Context) InstanceIAMMemberConditionOutput
}

InstanceIAMMemberConditionInput is an input type that accepts InstanceIAMMemberConditionArgs and InstanceIAMMemberConditionOutput values. You can construct a concrete instance of `InstanceIAMMemberConditionInput` via:

InstanceIAMMemberConditionArgs{...}

type InstanceIAMMemberConditionOutput

type InstanceIAMMemberConditionOutput struct{ *pulumi.OutputState }

func (InstanceIAMMemberConditionOutput) Description

func (InstanceIAMMemberConditionOutput) ElementType

func (InstanceIAMMemberConditionOutput) Expression

func (InstanceIAMMemberConditionOutput) Title

func (InstanceIAMMemberConditionOutput) ToInstanceIAMMemberConditionOutput

func (o InstanceIAMMemberConditionOutput) ToInstanceIAMMemberConditionOutput() InstanceIAMMemberConditionOutput

func (InstanceIAMMemberConditionOutput) ToInstanceIAMMemberConditionOutputWithContext

func (o InstanceIAMMemberConditionOutput) ToInstanceIAMMemberConditionOutputWithContext(ctx context.Context) InstanceIAMMemberConditionOutput

func (InstanceIAMMemberConditionOutput) ToInstanceIAMMemberConditionPtrOutput

func (o InstanceIAMMemberConditionOutput) ToInstanceIAMMemberConditionPtrOutput() InstanceIAMMemberConditionPtrOutput

func (InstanceIAMMemberConditionOutput) ToInstanceIAMMemberConditionPtrOutputWithContext

func (o InstanceIAMMemberConditionOutput) ToInstanceIAMMemberConditionPtrOutputWithContext(ctx context.Context) InstanceIAMMemberConditionPtrOutput

type InstanceIAMMemberConditionPtrInput

type InstanceIAMMemberConditionPtrInput interface {
	pulumi.Input

	ToInstanceIAMMemberConditionPtrOutput() InstanceIAMMemberConditionPtrOutput
	ToInstanceIAMMemberConditionPtrOutputWithContext(context.Context) InstanceIAMMemberConditionPtrOutput
}

InstanceIAMMemberConditionPtrInput is an input type that accepts InstanceIAMMemberConditionArgs, InstanceIAMMemberConditionPtr and InstanceIAMMemberConditionPtrOutput values. You can construct a concrete instance of `InstanceIAMMemberConditionPtrInput` via:

        InstanceIAMMemberConditionArgs{...}

or:

        nil

type InstanceIAMMemberConditionPtrOutput

type InstanceIAMMemberConditionPtrOutput struct{ *pulumi.OutputState }

func (InstanceIAMMemberConditionPtrOutput) Description

func (InstanceIAMMemberConditionPtrOutput) Elem

func (InstanceIAMMemberConditionPtrOutput) ElementType

func (InstanceIAMMemberConditionPtrOutput) Expression

func (InstanceIAMMemberConditionPtrOutput) Title

func (InstanceIAMMemberConditionPtrOutput) ToInstanceIAMMemberConditionPtrOutput

func (o InstanceIAMMemberConditionPtrOutput) ToInstanceIAMMemberConditionPtrOutput() InstanceIAMMemberConditionPtrOutput

func (InstanceIAMMemberConditionPtrOutput) ToInstanceIAMMemberConditionPtrOutputWithContext

func (o InstanceIAMMemberConditionPtrOutput) ToInstanceIAMMemberConditionPtrOutputWithContext(ctx context.Context) InstanceIAMMemberConditionPtrOutput

type InstanceIAMMemberInput added in v4.4.0

type InstanceIAMMemberInput interface {
	pulumi.Input

	ToInstanceIAMMemberOutput() InstanceIAMMemberOutput
	ToInstanceIAMMemberOutputWithContext(ctx context.Context) InstanceIAMMemberOutput
}

type InstanceIAMMemberMap added in v4.11.1

type InstanceIAMMemberMap map[string]InstanceIAMMemberInput

func (InstanceIAMMemberMap) ElementType added in v4.11.1

func (InstanceIAMMemberMap) ElementType() reflect.Type

func (InstanceIAMMemberMap) ToInstanceIAMMemberMapOutput added in v4.11.1

func (i InstanceIAMMemberMap) ToInstanceIAMMemberMapOutput() InstanceIAMMemberMapOutput

func (InstanceIAMMemberMap) ToInstanceIAMMemberMapOutputWithContext added in v4.11.1

func (i InstanceIAMMemberMap) ToInstanceIAMMemberMapOutputWithContext(ctx context.Context) InstanceIAMMemberMapOutput

type InstanceIAMMemberMapInput added in v4.11.1

type InstanceIAMMemberMapInput interface {
	pulumi.Input

	ToInstanceIAMMemberMapOutput() InstanceIAMMemberMapOutput
	ToInstanceIAMMemberMapOutputWithContext(context.Context) InstanceIAMMemberMapOutput
}

InstanceIAMMemberMapInput is an input type that accepts InstanceIAMMemberMap and InstanceIAMMemberMapOutput values. You can construct a concrete instance of `InstanceIAMMemberMapInput` via:

InstanceIAMMemberMap{ "key": InstanceIAMMemberArgs{...} }

type InstanceIAMMemberMapOutput added in v4.11.1

type InstanceIAMMemberMapOutput struct{ *pulumi.OutputState }

func (InstanceIAMMemberMapOutput) ElementType added in v4.11.1

func (InstanceIAMMemberMapOutput) ElementType() reflect.Type

func (InstanceIAMMemberMapOutput) MapIndex added in v4.11.1

func (InstanceIAMMemberMapOutput) ToInstanceIAMMemberMapOutput added in v4.11.1

func (o InstanceIAMMemberMapOutput) ToInstanceIAMMemberMapOutput() InstanceIAMMemberMapOutput

func (InstanceIAMMemberMapOutput) ToInstanceIAMMemberMapOutputWithContext added in v4.11.1

func (o InstanceIAMMemberMapOutput) ToInstanceIAMMemberMapOutputWithContext(ctx context.Context) InstanceIAMMemberMapOutput

type InstanceIAMMemberOutput added in v4.4.0

type InstanceIAMMemberOutput struct {
	*pulumi.OutputState
}

func (InstanceIAMMemberOutput) ElementType added in v4.4.0

func (InstanceIAMMemberOutput) ElementType() reflect.Type

func (InstanceIAMMemberOutput) ToInstanceIAMMemberOutput added in v4.4.0

func (o InstanceIAMMemberOutput) ToInstanceIAMMemberOutput() InstanceIAMMemberOutput

func (InstanceIAMMemberOutput) ToInstanceIAMMemberOutputWithContext added in v4.4.0

func (o InstanceIAMMemberOutput) ToInstanceIAMMemberOutputWithContext(ctx context.Context) InstanceIAMMemberOutput

func (InstanceIAMMemberOutput) ToInstanceIAMMemberPtrOutput added in v4.11.1

func (o InstanceIAMMemberOutput) ToInstanceIAMMemberPtrOutput() InstanceIAMMemberPtrOutput

func (InstanceIAMMemberOutput) ToInstanceIAMMemberPtrOutputWithContext added in v4.11.1

func (o InstanceIAMMemberOutput) ToInstanceIAMMemberPtrOutputWithContext(ctx context.Context) InstanceIAMMemberPtrOutput

type InstanceIAMMemberPtrInput added in v4.11.1

type InstanceIAMMemberPtrInput interface {
	pulumi.Input

	ToInstanceIAMMemberPtrOutput() InstanceIAMMemberPtrOutput
	ToInstanceIAMMemberPtrOutputWithContext(ctx context.Context) InstanceIAMMemberPtrOutput
}

type InstanceIAMMemberPtrOutput added in v4.11.1

type InstanceIAMMemberPtrOutput struct {
	*pulumi.OutputState
}

func (InstanceIAMMemberPtrOutput) ElementType added in v4.11.1

func (InstanceIAMMemberPtrOutput) ElementType() reflect.Type

func (InstanceIAMMemberPtrOutput) ToInstanceIAMMemberPtrOutput added in v4.11.1

func (o InstanceIAMMemberPtrOutput) ToInstanceIAMMemberPtrOutput() InstanceIAMMemberPtrOutput

func (InstanceIAMMemberPtrOutput) ToInstanceIAMMemberPtrOutputWithContext added in v4.11.1

func (o InstanceIAMMemberPtrOutput) ToInstanceIAMMemberPtrOutputWithContext(ctx context.Context) InstanceIAMMemberPtrOutput

type InstanceIAMMemberState

type InstanceIAMMemberState struct {
	Condition InstanceIAMMemberConditionPtrInput
	// (Computed) The etag of the instance's IAM policy.
	Etag pulumi.StringPtrInput
	// The name of the instance.
	Instance pulumi.StringPtrInput
	Member   pulumi.StringPtrInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `spanner.InstanceIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (InstanceIAMMemberState) ElementType

func (InstanceIAMMemberState) ElementType() reflect.Type

type InstanceIAMPolicy

type InstanceIAMPolicy struct {
	pulumi.CustomResourceState

	// (Computed) The etag of the instance's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The name of the instance.
	Instance pulumi.StringOutput `pulumi:"instance"`
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringOutput `pulumi:"policyData"`
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
}

Three different resources help you manage your IAM policy for a Spanner instance. Each of these resources serves a different use case:

* `spanner.InstanceIAMPolicy`: Authoritative. Sets the IAM policy for the instance and replaces any existing policy already attached.

> **Warning:** It's entirely possibly to lock yourself out of your instance using `spanner.InstanceIAMPolicy`. Any permissions granted by default will be removed unless you include them in your config.

* `spanner.InstanceIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the instance are preserved. * `spanner.InstanceIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the instance are preserved.

> **Note:** `spanner.InstanceIAMPolicy` **cannot** be used in conjunction with `spanner.InstanceIAMBinding` and `spanner.InstanceIAMMember` or they will fight over what your policy should be.

> **Note:** `spanner.InstanceIAMBinding` resources **can be** used in conjunction with `spanner.InstanceIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_spanner\_instance\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				organizations.GetIAMPolicyBinding{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = spanner.NewInstanceIAMPolicy(ctx, "instance", &spanner.InstanceIAMPolicyArgs{
			Instance:   pulumi.String("your-instance-name"),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_instance\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewInstanceIAMBinding(ctx, "instance", &spanner.InstanceIAMBindingArgs{
			Instance: pulumi.String("your-instance-name"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Role: pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_spanner\_instance\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.NewInstanceIAMMember(ctx, "instance", &spanner.InstanceIAMMemberArgs{
			Instance: pulumi.String("your-instance-name"),
			Member:   pulumi.String("user:jane@example.com"),
			Role:     pulumi.String("roles/compute.networkUser"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

For all import syntaxes, the "resource in question" can take any of the following forms* {{project}}/{{name}} * {{name}} (project is taken from provider project) IAM member imports use space-delimited identifiers; the resource in question, the role, and the account, e.g.

```sh

$ pulumi import gcp:spanner/instanceIAMPolicy:InstanceIAMPolicy instance "project-name/instance-name roles/viewer user:foo@example.com"

```

IAM binding imports use space-delimited identifiers; the resource in question and the role, e.g.

```sh

$ pulumi import gcp:spanner/instanceIAMPolicy:InstanceIAMPolicy instance "project-name/instance-name roles/viewer"

```

IAM policy imports use the identifier of the resource in question, e.g.

```sh

$ pulumi import gcp:spanner/instanceIAMPolicy:InstanceIAMPolicy instance project-name/instance-name

```

-> **Custom Roles**If you're importing a IAM resource with a custom role, make sure to use the

full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.

func GetInstanceIAMPolicy

func GetInstanceIAMPolicy(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *InstanceIAMPolicyState, opts ...pulumi.ResourceOption) (*InstanceIAMPolicy, error)

GetInstanceIAMPolicy gets an existing InstanceIAMPolicy resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewInstanceIAMPolicy

func NewInstanceIAMPolicy(ctx *pulumi.Context,
	name string, args *InstanceIAMPolicyArgs, opts ...pulumi.ResourceOption) (*InstanceIAMPolicy, error)

NewInstanceIAMPolicy registers a new resource with the given unique name, arguments, and options.

func (*InstanceIAMPolicy) ElementType added in v4.4.0

func (*InstanceIAMPolicy) ElementType() reflect.Type

func (*InstanceIAMPolicy) ToInstanceIAMPolicyOutput added in v4.4.0

func (i *InstanceIAMPolicy) ToInstanceIAMPolicyOutput() InstanceIAMPolicyOutput

func (*InstanceIAMPolicy) ToInstanceIAMPolicyOutputWithContext added in v4.4.0

func (i *InstanceIAMPolicy) ToInstanceIAMPolicyOutputWithContext(ctx context.Context) InstanceIAMPolicyOutput

func (*InstanceIAMPolicy) ToInstanceIAMPolicyPtrOutput added in v4.11.1

func (i *InstanceIAMPolicy) ToInstanceIAMPolicyPtrOutput() InstanceIAMPolicyPtrOutput

func (*InstanceIAMPolicy) ToInstanceIAMPolicyPtrOutputWithContext added in v4.11.1

func (i *InstanceIAMPolicy) ToInstanceIAMPolicyPtrOutputWithContext(ctx context.Context) InstanceIAMPolicyPtrOutput

type InstanceIAMPolicyArgs

type InstanceIAMPolicyArgs struct {
	// The name of the instance.
	Instance pulumi.StringInput
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
}

The set of arguments for constructing a InstanceIAMPolicy resource.

func (InstanceIAMPolicyArgs) ElementType

func (InstanceIAMPolicyArgs) ElementType() reflect.Type

type InstanceIAMPolicyArray added in v4.11.1

type InstanceIAMPolicyArray []InstanceIAMPolicyInput

func (InstanceIAMPolicyArray) ElementType added in v4.11.1

func (InstanceIAMPolicyArray) ElementType() reflect.Type

func (InstanceIAMPolicyArray) ToInstanceIAMPolicyArrayOutput added in v4.11.1

func (i InstanceIAMPolicyArray) ToInstanceIAMPolicyArrayOutput() InstanceIAMPolicyArrayOutput

func (InstanceIAMPolicyArray) ToInstanceIAMPolicyArrayOutputWithContext added in v4.11.1

func (i InstanceIAMPolicyArray) ToInstanceIAMPolicyArrayOutputWithContext(ctx context.Context) InstanceIAMPolicyArrayOutput

type InstanceIAMPolicyArrayInput added in v4.11.1

type InstanceIAMPolicyArrayInput interface {
	pulumi.Input

	ToInstanceIAMPolicyArrayOutput() InstanceIAMPolicyArrayOutput
	ToInstanceIAMPolicyArrayOutputWithContext(context.Context) InstanceIAMPolicyArrayOutput
}

InstanceIAMPolicyArrayInput is an input type that accepts InstanceIAMPolicyArray and InstanceIAMPolicyArrayOutput values. You can construct a concrete instance of `InstanceIAMPolicyArrayInput` via:

InstanceIAMPolicyArray{ InstanceIAMPolicyArgs{...} }

type InstanceIAMPolicyArrayOutput added in v4.11.1

type InstanceIAMPolicyArrayOutput struct{ *pulumi.OutputState }

func (InstanceIAMPolicyArrayOutput) ElementType added in v4.11.1

func (InstanceIAMPolicyArrayOutput) Index added in v4.11.1

func (InstanceIAMPolicyArrayOutput) ToInstanceIAMPolicyArrayOutput added in v4.11.1

func (o InstanceIAMPolicyArrayOutput) ToInstanceIAMPolicyArrayOutput() InstanceIAMPolicyArrayOutput

func (InstanceIAMPolicyArrayOutput) ToInstanceIAMPolicyArrayOutputWithContext added in v4.11.1

func (o InstanceIAMPolicyArrayOutput) ToInstanceIAMPolicyArrayOutputWithContext(ctx context.Context) InstanceIAMPolicyArrayOutput

type InstanceIAMPolicyInput added in v4.4.0

type InstanceIAMPolicyInput interface {
	pulumi.Input

	ToInstanceIAMPolicyOutput() InstanceIAMPolicyOutput
	ToInstanceIAMPolicyOutputWithContext(ctx context.Context) InstanceIAMPolicyOutput
}

type InstanceIAMPolicyMap added in v4.11.1

type InstanceIAMPolicyMap map[string]InstanceIAMPolicyInput

func (InstanceIAMPolicyMap) ElementType added in v4.11.1

func (InstanceIAMPolicyMap) ElementType() reflect.Type

func (InstanceIAMPolicyMap) ToInstanceIAMPolicyMapOutput added in v4.11.1

func (i InstanceIAMPolicyMap) ToInstanceIAMPolicyMapOutput() InstanceIAMPolicyMapOutput

func (InstanceIAMPolicyMap) ToInstanceIAMPolicyMapOutputWithContext added in v4.11.1

func (i InstanceIAMPolicyMap) ToInstanceIAMPolicyMapOutputWithContext(ctx context.Context) InstanceIAMPolicyMapOutput

type InstanceIAMPolicyMapInput added in v4.11.1

type InstanceIAMPolicyMapInput interface {
	pulumi.Input

	ToInstanceIAMPolicyMapOutput() InstanceIAMPolicyMapOutput
	ToInstanceIAMPolicyMapOutputWithContext(context.Context) InstanceIAMPolicyMapOutput
}

InstanceIAMPolicyMapInput is an input type that accepts InstanceIAMPolicyMap and InstanceIAMPolicyMapOutput values. You can construct a concrete instance of `InstanceIAMPolicyMapInput` via:

InstanceIAMPolicyMap{ "key": InstanceIAMPolicyArgs{...} }

type InstanceIAMPolicyMapOutput added in v4.11.1

type InstanceIAMPolicyMapOutput struct{ *pulumi.OutputState }

func (InstanceIAMPolicyMapOutput) ElementType added in v4.11.1

func (InstanceIAMPolicyMapOutput) ElementType() reflect.Type

func (InstanceIAMPolicyMapOutput) MapIndex added in v4.11.1

func (InstanceIAMPolicyMapOutput) ToInstanceIAMPolicyMapOutput added in v4.11.1

func (o InstanceIAMPolicyMapOutput) ToInstanceIAMPolicyMapOutput() InstanceIAMPolicyMapOutput

func (InstanceIAMPolicyMapOutput) ToInstanceIAMPolicyMapOutputWithContext added in v4.11.1

func (o InstanceIAMPolicyMapOutput) ToInstanceIAMPolicyMapOutputWithContext(ctx context.Context) InstanceIAMPolicyMapOutput

type InstanceIAMPolicyOutput added in v4.4.0

type InstanceIAMPolicyOutput struct {
	*pulumi.OutputState
}

func (InstanceIAMPolicyOutput) ElementType added in v4.4.0

func (InstanceIAMPolicyOutput) ElementType() reflect.Type

func (InstanceIAMPolicyOutput) ToInstanceIAMPolicyOutput added in v4.4.0

func (o InstanceIAMPolicyOutput) ToInstanceIAMPolicyOutput() InstanceIAMPolicyOutput

func (InstanceIAMPolicyOutput) ToInstanceIAMPolicyOutputWithContext added in v4.4.0

func (o InstanceIAMPolicyOutput) ToInstanceIAMPolicyOutputWithContext(ctx context.Context) InstanceIAMPolicyOutput

func (InstanceIAMPolicyOutput) ToInstanceIAMPolicyPtrOutput added in v4.11.1

func (o InstanceIAMPolicyOutput) ToInstanceIAMPolicyPtrOutput() InstanceIAMPolicyPtrOutput

func (InstanceIAMPolicyOutput) ToInstanceIAMPolicyPtrOutputWithContext added in v4.11.1

func (o InstanceIAMPolicyOutput) ToInstanceIAMPolicyPtrOutputWithContext(ctx context.Context) InstanceIAMPolicyPtrOutput

type InstanceIAMPolicyPtrInput added in v4.11.1

type InstanceIAMPolicyPtrInput interface {
	pulumi.Input

	ToInstanceIAMPolicyPtrOutput() InstanceIAMPolicyPtrOutput
	ToInstanceIAMPolicyPtrOutputWithContext(ctx context.Context) InstanceIAMPolicyPtrOutput
}

type InstanceIAMPolicyPtrOutput added in v4.11.1

type InstanceIAMPolicyPtrOutput struct {
	*pulumi.OutputState
}

func (InstanceIAMPolicyPtrOutput) ElementType added in v4.11.1

func (InstanceIAMPolicyPtrOutput) ElementType() reflect.Type

func (InstanceIAMPolicyPtrOutput) ToInstanceIAMPolicyPtrOutput added in v4.11.1

func (o InstanceIAMPolicyPtrOutput) ToInstanceIAMPolicyPtrOutput() InstanceIAMPolicyPtrOutput

func (InstanceIAMPolicyPtrOutput) ToInstanceIAMPolicyPtrOutputWithContext added in v4.11.1

func (o InstanceIAMPolicyPtrOutput) ToInstanceIAMPolicyPtrOutputWithContext(ctx context.Context) InstanceIAMPolicyPtrOutput

type InstanceIAMPolicyState

type InstanceIAMPolicyState struct {
	// (Computed) The etag of the instance's IAM policy.
	Etag pulumi.StringPtrInput
	// The name of the instance.
	Instance pulumi.StringPtrInput
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringPtrInput
	// The ID of the project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput
}

func (InstanceIAMPolicyState) ElementType

func (InstanceIAMPolicyState) ElementType() reflect.Type

type InstanceInput added in v4.4.0

type InstanceInput interface {
	pulumi.Input

	ToInstanceOutput() InstanceOutput
	ToInstanceOutputWithContext(ctx context.Context) InstanceOutput
}

type InstanceMap added in v4.11.1

type InstanceMap map[string]InstanceInput

func (InstanceMap) ElementType added in v4.11.1

func (InstanceMap) ElementType() reflect.Type

func (InstanceMap) ToInstanceMapOutput added in v4.11.1

func (i InstanceMap) ToInstanceMapOutput() InstanceMapOutput

func (InstanceMap) ToInstanceMapOutputWithContext added in v4.11.1

func (i InstanceMap) ToInstanceMapOutputWithContext(ctx context.Context) InstanceMapOutput

type InstanceMapInput added in v4.11.1

type InstanceMapInput interface {
	pulumi.Input

	ToInstanceMapOutput() InstanceMapOutput
	ToInstanceMapOutputWithContext(context.Context) InstanceMapOutput
}

InstanceMapInput is an input type that accepts InstanceMap and InstanceMapOutput values. You can construct a concrete instance of `InstanceMapInput` via:

InstanceMap{ "key": InstanceArgs{...} }

type InstanceMapOutput added in v4.11.1

type InstanceMapOutput struct{ *pulumi.OutputState }

func (InstanceMapOutput) ElementType added in v4.11.1

func (InstanceMapOutput) ElementType() reflect.Type

func (InstanceMapOutput) MapIndex added in v4.11.1

func (InstanceMapOutput) ToInstanceMapOutput added in v4.11.1

func (o InstanceMapOutput) ToInstanceMapOutput() InstanceMapOutput

func (InstanceMapOutput) ToInstanceMapOutputWithContext added in v4.11.1

func (o InstanceMapOutput) ToInstanceMapOutputWithContext(ctx context.Context) InstanceMapOutput

type InstanceOutput added in v4.4.0

type InstanceOutput struct {
	*pulumi.OutputState
}

func (InstanceOutput) ElementType added in v4.4.0

func (InstanceOutput) ElementType() reflect.Type

func (InstanceOutput) ToInstanceOutput added in v4.4.0

func (o InstanceOutput) ToInstanceOutput() InstanceOutput

func (InstanceOutput) ToInstanceOutputWithContext added in v4.4.0

func (o InstanceOutput) ToInstanceOutputWithContext(ctx context.Context) InstanceOutput

func (InstanceOutput) ToInstancePtrOutput added in v4.11.1

func (o InstanceOutput) ToInstancePtrOutput() InstancePtrOutput

func (InstanceOutput) ToInstancePtrOutputWithContext added in v4.11.1

func (o InstanceOutput) ToInstancePtrOutputWithContext(ctx context.Context) InstancePtrOutput

type InstancePtrInput added in v4.11.1

type InstancePtrInput interface {
	pulumi.Input

	ToInstancePtrOutput() InstancePtrOutput
	ToInstancePtrOutputWithContext(ctx context.Context) InstancePtrOutput
}

type InstancePtrOutput added in v4.11.1

type InstancePtrOutput struct {
	*pulumi.OutputState
}

func (InstancePtrOutput) ElementType added in v4.11.1

func (InstancePtrOutput) ElementType() reflect.Type

func (InstancePtrOutput) ToInstancePtrOutput added in v4.11.1

func (o InstancePtrOutput) ToInstancePtrOutput() InstancePtrOutput

func (InstancePtrOutput) ToInstancePtrOutputWithContext added in v4.11.1

func (o InstancePtrOutput) ToInstancePtrOutputWithContext(ctx context.Context) InstancePtrOutput

type InstanceState

type InstanceState struct {
	// The name of the instance's configuration (similar but not
	// quite the same as a region) which defines defines the geographic placement and
	// replication of your databases in this instance. It determines where your data
	// is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc.
	// In order to obtain a valid list please consult the
	// [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances).
	Config pulumi.StringPtrInput
	// The descriptive name for this instance as it appears in UIs. Must be
	// unique per project and between 4 and 30 characters in length.
	DisplayName pulumi.StringPtrInput
	// An object containing a list of "key": value pairs.
	// Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
	Labels pulumi.StringMapInput
	// A unique identifier for the instance, which cannot be changed after
	// the instance is created. The name must be between 6 and 30 characters
	// in length.
	Name pulumi.StringPtrInput
	// The number of nodes allocated to this instance.
	NumNodes pulumi.IntPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// Instance status: 'CREATING' or 'READY'.
	State pulumi.StringPtrInput
}

func (InstanceState) ElementType

func (InstanceState) ElementType() reflect.Type

type LookupInstanceArgs added in v4.1.0

type LookupInstanceArgs struct {
	Config      *string           `pulumi:"config"`
	DisplayName *string           `pulumi:"displayName"`
	Labels      map[string]string `pulumi:"labels"`
	// The name of the spanner instance.
	Name     string `pulumi:"name"`
	NumNodes *int   `pulumi:"numNodes"`
	// The project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project *string `pulumi:"project"`
}

A collection of arguments for invoking getInstance.

type LookupInstanceResult added in v4.1.0

type LookupInstanceResult struct {
	Config      *string `pulumi:"config"`
	DisplayName *string `pulumi:"displayName"`
	// The provider-assigned unique ID for this managed resource.
	Id       string            `pulumi:"id"`
	Labels   map[string]string `pulumi:"labels"`
	Name     string            `pulumi:"name"`
	NumNodes *int              `pulumi:"numNodes"`
	Project  *string           `pulumi:"project"`
	State    string            `pulumi:"state"`
}

A collection of values returned by getInstance.

func LookupInstance added in v4.1.0

func LookupInstance(ctx *pulumi.Context, args *LookupInstanceArgs, opts ...pulumi.InvokeOption) (*LookupInstanceResult, error)

Get a spanner instance from Google Cloud by its name.

## Example Usage

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v4/go/gcp/spanner"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := spanner.LookupInstance(ctx, &spanner.LookupInstanceArgs{
			Name: "bar",
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL