ObjectAccessControl class
The ObjectAccessControls resources represent the Access Control Lists (ACLs) for objects within Google Cloud Storage. ACLs let you specify who has access to your data and to what extent.
There are two roles that can be assigned to an entity:
READERs can get an object, though the acl property will not be revealed. OWNERs are READERs, and they can get the acl property, update an object, and call all objectAccessControls methods on the object. The owner of an object is always an OWNER. For more information, see Access Control, with the caveat that this API uses READER and OWNER instead of READ and FULL_CONTROL.
To get more information about ObjectAccessControl, see:
- API documentation
- How-to Guides
- Official Documentation
Example Usage
Storage Object Access Control Public Object
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const bucket = new gcp.storage.Bucket("bucket", {
name: "static-content-bucket",
location: "US",
});
const object = new gcp.storage.BucketObject("object", {
name: "public-object",
bucket: bucket.name,
source: new pulumi.asset.FileAsset("../static/img/header-logo.png"),
});
const publicRule = new gcp.storage.ObjectAccessControl("public_rule", {
object: object.outputName,
bucket: bucket.name,
role: "READER",
entity: "allUsers",
});
import pulumi
import pulumi_gcp as gcp
bucket = gcp.storage.Bucket("bucket",
name="static-content-bucket",
location="US")
object = gcp.storage.BucketObject("object",
name="public-object",
bucket=bucket.name,
source=pulumi.FileAsset("../static/img/header-logo.png"))
public_rule = gcp.storage.ObjectAccessControl("public_rule",
object=object.output_name,
bucket=bucket.name,
role="READER",
entity="allUsers")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var bucket = new Gcp.Storage.Bucket("bucket", new()
{
Name = "static-content-bucket",
Location = "US",
});
var @object = new Gcp.Storage.BucketObject("object", new()
{
Name = "public-object",
Bucket = bucket.Name,
Source = new FileAsset("../static/img/header-logo.png"),
});
var publicRule = new Gcp.Storage.ObjectAccessControl("public_rule", new()
{
Object = @object.OutputName,
Bucket = bucket.Name,
Role = "READER",
Entity = "allUsers",
});
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/storage"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
bucket, err := storage.NewBucket(ctx, "bucket", &storage.BucketArgs{
Name: pulumi.String("static-content-bucket"),
Location: pulumi.String("US"),
})
if err != nil {
return err
}
object, err := storage.NewBucketObject(ctx, "object", &storage.BucketObjectArgs{
Name: pulumi.String("public-object"),
Bucket: bucket.Name,
Source: pulumi.NewFileAsset("../static/img/header-logo.png"),
})
if err != nil {
return err
}
_, err = storage.NewObjectAccessControl(ctx, "public_rule", &storage.ObjectAccessControlArgs{
Object: object.OutputName,
Bucket: bucket.Name,
Role: pulumi.String("READER"),
Entity: pulumi.String("allUsers"),
})
if err != nil {
return err
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
resource "gcp_storage_objectaccesscontrol" "public_rule" {
object = gcp_storage_bucketobject.object.output_name
bucket = gcp_storage_bucket.bucket.name
role = "READER"
entity = "allUsers"
}
resource "gcp_storage_bucket" "bucket" {
name = "static-content-bucket"
location = "US"
}
resource "gcp_storage_bucketobject" "object" {
name = "public-object"
bucket = gcp_storage_bucket.bucket.name
source = fileAsset("../static/img/header-logo.png")
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.storage.Bucket;
import com.pulumi.gcp.storage.BucketArgs;
import com.pulumi.gcp.storage.BucketObject;
import com.pulumi.gcp.storage.BucketObjectArgs;
import com.pulumi.gcp.storage.ObjectAccessControl;
import com.pulumi.gcp.storage.ObjectAccessControlArgs;
import com.pulumi.asset.FileAsset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var bucket = new Bucket("bucket", BucketArgs.builder()
.name("static-content-bucket")
.location("US")
.build());
var object = new BucketObject("object", BucketObjectArgs.builder()
.name("public-object")
.bucket(bucket.name())
.source(new FileAsset("../static/img/header-logo.png"))
.build());
var publicRule = new ObjectAccessControl("publicRule", ObjectAccessControlArgs.builder()
.object(object.outputName())
.bucket(bucket.name())
.role("READER")
.entity("allUsers")
.build());
}
}
resources:
publicRule:
type: gcp:storage:ObjectAccessControl
name: public_rule
properties:
object: ${object.outputName}
bucket: ${bucket.name}
role: READER
entity: allUsers
bucket:
type: gcp:storage:Bucket
properties:
name: static-content-bucket
location: US
object:
type: gcp:storage:BucketObject
properties:
name: public-object
bucket: ${bucket.name}
source:
fn::fileAsset: ../static/img/header-logo.png
Import
ObjectAccessControl can be imported using any of these accepted formats:
{{bucket}}/{{object}}/{{entity}}
When using the pulumi import command, ObjectAccessControl can be imported using one of the formats above. For example:
$ pulumi import gcp:storage/objectAccessControl:ObjectAccessControl default {{bucket}}/{{object}}/{{entity}}
Constructors
- ObjectAccessControl(String name, {ObjectAccessControlArgs? args, CustomResourceOptions? options})
-
Creates a new ObjectAccessControl.
nameThe Pulumi resource name.argsArguments used to configure this ObjectAccessControl. The set of arguments for ObjectAccessControl.optionsResource options controlling this resource's behavior. - ObjectAccessControl.reference(String urn)
- Creates a typed reference to an existing ObjectAccessControl resource.
Properties
-
bucket
↔ Output<
String> -
The name of the bucket.
latefinal
-
childResources
→ Set<
Resource> -
finalinherited
-
completionSources
↔ Map<
String, IOutputCompletionSource> -
latefinalinherited
-
deletionPolicy
↔ Output<
String> -
Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
When a 'terraform destroy' or 'pulumi up' would delete the resource,
the command will fail if this field is set to "PREVENT" in Terraform state.
When set to "ABANDON", the command will remove the resource from Terraform
management without updating or deleting the resource in the API.
When set to "DELETE", deleting the resource is allowed.
latefinal
-
domain
↔ Output<
String> -
The domain associated with the entity.
latefinal
-
email
↔ Output<
String> -
The email address associated with the entity.
latefinal
-
entity
↔ Output<
String> -
The entity holding the permission, in one of the following forms:
latefinal
-
entityId
↔ Output<
String> -
The ID for the entity
latefinal
-
generation
↔ Output<
int> -
The content generation of the object, if applied to an object.
latefinal
- hashCode → int
-
The hash code for this object.
no setterinherited
-
id
↔ Output<
String> -
getter/setter pairinherited
- isCustom → bool
-
Returns whether this resource is provider-managed.
no setterinherited
- isProtected → bool
-
Returns whether this resource is protected from deletion.
no setterinherited
- isRemote → bool
-
Whether this resource is registered as remote.
no setterinherited
- isResourceReference → bool
-
Whether this instance represents a resource value returned over RPC.
finalinherited
-
object_
↔ Output<
String> -
The name of the object to apply the access control to.
latefinal
-
projectTeams
↔ Output<
List< ObjectAccessControlProjectTeam> > -
The project team associated with the entity
Structure is documented below.
latefinal
-
resourceTransforms
→ List<
ResourceTransform> -
Inherited/explicit async transforms.
no setterinherited
-
role
↔ Output<
String> -
The access permission for the entity.
Possible values are:
OWNER,READER.latefinal - runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
transformations
→ List<
ResourceTransformation> -
Inherited/explicit legacy transformations.
no setterinherited
-
urn
↔ Output<
String> -
latefinalinherited
Methods
-
failId(
Object error) → void -
Completes this resource ID with an error when registration fails.
inherited
-
failOutputs(
Object error) → void -
Completes all output properties with
error.inherited -
failUrn(
Object error) → void -
Completes this resource URN with an error when registration fails.
inherited
-
getProvider(
String moduleMember) → ProviderResource? -
Returns provider for
moduleMember's package, if configured.inherited -
getResourceName(
) → String -
Returns this resource's logical name.
inherited
-
getResourceType(
) → String -
Returns this resource's Pulumi type token.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
registerOutput<
T> (String propertyName, {Object? decoder(Object?)?, bool isSecret = false}) → Output< T> -
Registers a dynamic output property for this resource.
inherited
-
resolveId(
String? value, {required bool isKnown}) → void -
Resolves the provider-assigned ID for this resource.
inherited
-
resolveOutputs(
Struct outputs) → void -
Resolves all output properties from a monitor response payload.
inherited
-
resolveUrn(
String value) → void -
Resolves this resource's URN once assigned by the engine.
inherited
-
serializeProperties(
Map< String, dynamic> properties) → Future<Struct> -
Serializes resource properties for RPC transmission.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
get(
String name, Input< String> id, {ObjectAccessControlState? state, CustomResourceOptions? options}) → ObjectAccessControl -
Gets an existing ObjectAccessControl resource's state with the given
nameandid.