Bucket
The Bucket resource lets you manage AWS S3 Buckets and their configuration settings.
Minimal Example
Section titled “Minimal Example”Create a basic S3 bucket with a specified name and versioning enabled.
import AWS from "alchemy/aws/control";
const myBucket = await AWS.S3.Bucket("myUniqueBucketId", { BucketName: "my-unique-bucket-name", VersioningConfiguration: { Status: "Enabled" }, Tags: [ { Key: "Environment", Value: "Development" }, { Key: "Project", Value: "Alchemy" } ]});
Advanced Configuration
Section titled “Advanced Configuration”Configure an S3 bucket with encryption, lifecycle policies, and notification settings.
const advancedBucket = await AWS.S3.Bucket("advancedBucketId", { BucketName: "advanced-bucket-name", BucketEncryption: { ServerSideEncryptionConfiguration: [ { ServerSideEncryptionByDefault: { SSEAlgorithm: "AES256" } } ] }, LifecycleConfiguration: { Rules: [ { Status: "Enabled", ExpirationInDays: 365, Prefix: "logs/", Transitions: [ { TransitionInDays: 30, StorageClass: "GLACIER" } ] } ] }, NotificationConfiguration: { LambdaConfigurations: [ { Events: ["s3:ObjectCreated:*"], Function: "arn:aws:lambda:us-east-1:123456789012:function:myLambdaFunction", Filter: { Key: { FilterRules: [ { Name: "prefix", Value: "uploads/" } ] } } } ] }});
Static Website Hosting
Section titled “Static Website Hosting”Set up an S3 bucket for static website hosting with custom error and index documents.
const websiteBucket = await AWS.S3.Bucket("websiteBucketId", { BucketName: "my-website-bucket", WebsiteConfiguration: { IndexDocument: "index.html", ErrorDocument: "error.html" }});
Cross-Origin Resource Sharing (CORS)
Section titled “Cross-Origin Resource Sharing (CORS)”Configure CORS settings for an S3 bucket to allow specific origins.
const corsBucket = await AWS.S3.Bucket("corsBucketId", { BucketName: "my-cors-bucket", CorsConfiguration: { CorsRules: [ { AllowedOrigins: ["https://example.com"], AllowedMethods: ["GET", "POST"], AllowedHeaders: ["*"], MaxAgeSeconds: 3000 } ] }});