Skip to content

AccessGrant ​

The AccessGrant resource lets you manage AWS S3 AccessGrants for granting permissions to objects in S3 buckets.

Minimal Example ​

Create an AccessGrant that allows a specified grantee to read objects in an S3 bucket.

ts
import AWS from "alchemy/aws/control";

const accessGrant = await AWS.S3.AccessGrant("basicAccessGrant", {
  Grantee: {
    Type: "CanonicalUser",
    Id: "12345abcde67890fghij12345klmnopqrstuvwx"
  },
  Permission: "READ",
  AccessGrantsLocationId: "myBucketLocationId",
  AccessGrantsLocationConfiguration: {
    Bucket: "my-example-bucket",
    Prefix: "documents/"
  }
});

Advanced Configuration ​

Set up an AccessGrant with additional properties including a specific application ARN and tags.

ts
const advancedAccessGrant = await AWS.S3.AccessGrant("advancedAccessGrant", {
  Grantee: {
    Type: "Group",
    URI: "http://acs.amazonaws.com/groups/global/AllUsers"
  },
  Permission: "WRITE",
  AccessGrantsLocationId: "myBucketLocationId",
  ApplicationArn: "arn:aws:lambda:us-east-1:123456789012:function:myFunction",
  Tags: [
    {
      Key: "Environment",
      Value: "Production"
    },
    {
      Key: "Project",
      Value: "DataAnalytics"
    }
  ]
});

Custom Prefix Type ​

Create an AccessGrant with a custom S3 prefix type for specific object path limitations.

ts
const prefixAccessGrant = await AWS.S3.AccessGrant("prefixAccessGrant", {
  Grantee: {
    Type: "CanonicalUser",
    Id: "abcde12345fghij67890klmnopqrstuvwx"
  },
  Permission: "FULL_CONTROL",
  AccessGrantsLocationId: "myBucketLocationId",
  S3PrefixType: "SpecificPrefix",
  AccessGrantsLocationConfiguration: {
    Bucket: "my-example-bucket",
    Prefix: "images/uploads/"
  }
});

Adoption of Existing Resource ​

Adopt an existing AccessGrant instead of failing if it already exists.

ts
const adoptAccessGrant = await AWS.S3.AccessGrant("adoptedAccessGrant", {
  Grantee: {
    Type: "CanonicalUser",
    Id: "zyxwvutsrqponmlkjihgfedcba9876543210"
  },
  Permission: "READ",
  AccessGrantsLocationId: "myBucketLocationId",
  adopt: true
});