Ctrl + k

or run

tessl search
Log in

Version

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.pulumi/aws@7.16.x

docs

common-patterns.mdgetting-started.mdindex.mdprovider.md
tile.json

tessl/maven-com-pulumi--aws

tessl install tessl/maven-com-pulumi--aws@7.16.0

Pulumi Java SDK for AWS providing strongly-typed Infrastructure-as-Code for 227 AWS service packages including compute, storage, databases, networking, security, analytics, machine learning, and more.

s3.mddocs/services/storage/

S3 (Simple Storage Service)

Amazon S3 provides scalable object storage.

Core Imports

import com.pulumi.aws.s3.Bucket;
import com.pulumi.aws.s3.BucketArgs;
import com.pulumi.aws.s3.BucketObject;
import com.pulumi.aws.s3.BucketObjectArgs;
import com.pulumi.aws.s3.BucketPolicy;
import com.pulumi.aws.s3.BucketPolicyArgs;
import com.pulumi.aws.s3.BucketPublicAccessBlock;
import com.pulumi.aws.s3.BucketPublicAccessBlockArgs;
import com.pulumi.aws.s3.BucketVersioning;
import com.pulumi.aws.s3.BucketVersioningArgs;
import com.pulumi.aws.s3.BucketLifecycleConfiguration;
import com.pulumi.aws.s3.BucketLifecycleConfigurationArgs;
import com.pulumi.aws.s3.BucketNotification;
import com.pulumi.aws.s3.BucketNotificationArgs;
import com.pulumi.aws.s3.BucketCorsConfiguration;
import com.pulumi.aws.s3.BucketCorsConfigurationArgs;
import com.pulumi.aws.s3.S3Functions;
import com.pulumi.aws.s3.inputs.GetBucketArgs;
import com.pulumi.asset.FileAsset;
import com.pulumi.asset.StringAsset;

Bucket Resource

Create and manage S3 buckets.

@ResourceType(type="aws:s3/bucket:Bucket")
public class Bucket extends com.pulumi.resources.CustomResource {
    public Bucket(String name);
    public Bucket(String name, @Nullable BucketArgs args);
    public Bucket(String name, @Nullable BucketArgs args, @Nullable CustomResourceOptions options);

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<String> bucket();
    public Output<String> bucketDomainName();
    public Output<String> bucketRegionalDomainName();
    public Output<String> hostedZoneId();
    public Output<String> region();
    public Output<Optional<String>> acl();
    public Output<Optional<List<BucketCorsRule>>> corsRules();
    public Output<Optional<BucketVersioning>> versioning();
    public Output<Optional<BucketLogging>> logging();
    public Output<Optional<List<BucketLifecycleRule>>> lifecycleRules();
    public Output<Optional<BucketServerSideEncryptionConfiguration>> serverSideEncryptionConfiguration();
    public Output<Optional<BucketWebsite>> website();
    public Output<Optional<Map<String, String>>> tags();
}

public class BucketArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder bucket(Output<String> bucket);
        public Builder acl(Output<String> acl);
        public Builder corsRules(Output<List<BucketCorsRuleArgs>> corsRules);
        public Builder versioning(Output<BucketVersioningArgs> versioning);
        public Builder logging(Output<BucketLoggingArgs> logging);
        public Builder lifecycleRules(Output<List<BucketLifecycleRuleArgs>> lifecycleRules);
        public Builder serverSideEncryptionConfiguration(Output<BucketServerSideEncryptionConfigurationArgs> serverSideEncryptionConfiguration);
        public Builder website(Output<BucketWebsiteArgs> website);
        public Builder forceDestroy(Output<Boolean> forceDestroy);
        public Builder objectLockEnabled(Output<Boolean> objectLockEnabled);
        public Builder tags(Output<Map<String, String>> tags);

        public BucketArgs build();
    }
}

Bucket Object Resource

Upload and manage objects in S3 buckets.

@ResourceType(type="aws:s3/bucketObject:BucketObject")
public class BucketObject extends com.pulumi.resources.CustomResource {
    public BucketObject(String name, BucketObjectArgs args);
    public BucketObject(String name, BucketObjectArgs args, @Nullable CustomResourceOptions options);

    public Output<String> id();
    public Output<String> bucket();
    public Output<String> key();
    public Output<Optional<Asset>> source();
    public Output<Optional<String>> content();
    public Output<Optional<String>> contentType();
    public Output<Optional<String>> acl();
    public Output<String> etag();
    public Output<String> versionId();
    public Output<Optional<String>> storageClass();
    public Output<Optional<String>> serverSideEncryption();
    public Output<Optional<String>> kmsKeyId();
    public Output<Optional<Map<String, String>>> metadata();
    public Output<Optional<Map<String, String>>> tags();
}

public class BucketObjectArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        // Required
        public Builder bucket(Output<String> bucket);
        public Builder key(Output<String> key);

        // Content (one required)
        public Builder source(Output<Asset> source);
        public Builder content(Output<String> content);

        // Optional
        public Builder acl(Output<String> acl);
        public Builder contentType(Output<String> contentType);
        public Builder contentDisposition(Output<String> contentDisposition);
        public Builder contentEncoding(Output<String> contentEncoding);
        public Builder contentLanguage(Output<String> contentLanguage);
        public Builder storageClass(Output<String> storageClass);
        public Builder serverSideEncryption(Output<String> serverSideEncryption);
        public Builder kmsKeyId(Output<String> kmsKeyId);
        public Builder metadata(Output<Map<String, String>> metadata);
        public Builder tags(Output<Map<String, String>> tags);
        public Builder cacheControl(Output<String> cacheControl);

        public BucketObjectArgs build();
    }
}

Bucket Policy Resource

Manage bucket-level IAM policies.

@ResourceType(type="aws:s3/bucketPolicy:BucketPolicy")
public class BucketPolicy extends com.pulumi.resources.CustomResource {
    public BucketPolicy(String name, BucketPolicyArgs args);

    public Output<String> id();
    public Output<String> bucket();
    public Output<String> policy();
}

public class BucketPolicyArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder bucket(Output<String> bucket);
        public Builder policy(Output<String> policy);

        public BucketPolicyArgs build();
    }
}

Bucket Public Access Block Resource

Block public access to S3 buckets.

@ResourceType(type="aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock")
public class BucketPublicAccessBlock extends com.pulumi.resources.CustomResource {
    public BucketPublicAccessBlock(String name, BucketPublicAccessBlockArgs args);

    public Output<String> id();
    public Output<String> bucket();
    public Output<Optional<Boolean>> blockPublicAcls();
    public Output<Optional<Boolean>> blockPublicPolicy();
    public Output<Optional<Boolean>> ignorePublicAcls();
    public Output<Optional<Boolean>> restrictPublicBuckets();
}

public class BucketPublicAccessBlockArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder bucket(Output<String> bucket);
        public Builder blockPublicAcls(Output<Boolean> blockPublicAcls);
        public Builder blockPublicPolicy(Output<Boolean> blockPublicPolicy);
        public Builder ignorePublicAcls(Output<Boolean> ignorePublicAcls);
        public Builder restrictPublicBuckets(Output<Boolean> restrictPublicBuckets);

        public BucketPublicAccessBlockArgs build();
    }
}

Bucket Versioning Resource

Enable versioning for S3 buckets.

@ResourceType(type="aws:s3/bucketVersioning:BucketVersioning")
public class BucketVersioning extends com.pulumi.resources.CustomResource {
    public BucketVersioning(String name, BucketVersioningArgs args);

    public Output<String> id();
    public Output<String> bucket();
    public Output<BucketVersioningVersioningConfiguration> versioningConfiguration();
}

public class BucketVersioningArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder bucket(Output<String> bucket);
        public Builder versioningConfiguration(Output<BucketVersioningVersioningConfigurationArgs> versioningConfiguration);

        public BucketVersioningArgs build();
    }
}

Bucket Lifecycle Configuration Resource

Manage object lifecycle policies.

@ResourceType(type="aws:s3/bucketLifecycleConfiguration:BucketLifecycleConfiguration")
public class BucketLifecycleConfiguration extends com.pulumi.resources.CustomResource {
    public BucketLifecycleConfiguration(String name, BucketLifecycleConfigurationArgs args);

    public Output<String> id();
    public Output<String> bucket();
    public Output<List<BucketLifecycleConfigurationRule>> rules();
}

public class BucketLifecycleConfigurationArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder bucket(Output<String> bucket);
        public Builder rules(Output<List<BucketLifecycleConfigurationRuleArgs>> rules);

        public BucketLifecycleConfigurationArgs build();
    }
}

Bucket Notification Resource

Configure event notifications for S3 buckets.

@ResourceType(type="aws:s3/bucketNotification:BucketNotification")
public class BucketNotification extends com.pulumi.resources.CustomResource {
    public BucketNotification(String name, BucketNotificationArgs args);

    public Output<String> id();
    public Output<String> bucket();
    public Output<Optional<List<BucketNotificationLambdaFunction>>> lambdaFunctions();
    public Output<Optional<List<BucketNotificationQueue>>> queues();
    public Output<Optional<List<BucketNotificationTopic>>> topics();
}

public class BucketNotificationArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder bucket(Output<String> bucket);
        public Builder lambdaFunctions(Output<List<BucketNotificationLambdaFunctionArgs>> lambdaFunctions);
        public Builder queues(Output<List<BucketNotificationQueueArgs>> queues);
        public Builder topics(Output<List<BucketNotificationTopicArgs>> topics);

        public BucketNotificationArgs build();
    }
}

Bucket CORS Configuration Resource

Configure Cross-Origin Resource Sharing.

@ResourceType(type="aws:s3/bucketCorsConfiguration:BucketCorsConfiguration")
public class BucketCorsConfiguration extends com.pulumi.resources.CustomResource {
    public BucketCorsConfiguration(String name, BucketCorsConfigurationArgs args);

    public Output<String> id();
    public Output<String> bucket();
    public Output<List<BucketCorsConfigurationCorsRule>> corsRules();
}

public class BucketCorsConfigurationArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder bucket(Output<String> bucket);
        public Builder corsRules(Output<List<BucketCorsConfigurationCorsRuleArgs>> corsRules);

        public BucketCorsConfigurationArgs build();
    }
}

S3 Data Sources

Query existing S3 resources.

public class S3Functions {
    // Get bucket information
    public static Output<GetBucketResult> getBucket(GetBucketArgs args);
    public static CompletableFuture<GetBucketResult> getBucketPlain(GetBucketArgs args);

    // Get bucket object
    public static Output<GetBucketObjectResult> getBucketObject(GetBucketObjectArgs args);
    public static CompletableFuture<GetBucketObjectResult> getBucketObjectPlain(GetBucketObjectArgs args);

    // List bucket objects
    public static Output<GetBucketObjectsResult> getBucketObjects(GetBucketObjectsArgs args);
    public static CompletableFuture<GetBucketObjectsResult> getBucketObjectsPlain(GetBucketObjectsArgs args);
}

Usage Example

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.aws.s3.*;
import com.pulumi.aws.s3.inputs.*;
import com.pulumi.asset.FileAsset;
import com.pulumi.asset.StringAsset;
import java.util.Map;
import java.util.List;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        // Create an S3 bucket
        var bucket = new Bucket("my-bucket", BucketArgs.builder()
            .bucket("my-unique-bucket-name")
            .tags(Map.of(
                "Environment", "Production",
                "Project", "MyApp"
            ))
            .build());

        // Block public access
        var publicAccessBlock = new BucketPublicAccessBlock("bucket-pab",
            BucketPublicAccessBlockArgs.builder()
                .bucket(bucket.id())
                .blockPublicAcls(true)
                .blockPublicPolicy(true)
                .ignorePublicAcls(true)
                .restrictPublicBuckets(true)
                .build());

        // Enable versioning
        var versioning = new BucketVersioning("bucket-versioning",
            BucketVersioningArgs.builder()
                .bucket(bucket.id())
                .versioningConfiguration(BucketVersioningVersioningConfigurationArgs.builder()
                    .status("Enabled")
                    .build())
                .build());

        // Configure lifecycle
        var lifecycle = new BucketLifecycleConfiguration("bucket-lifecycle",
            BucketLifecycleConfigurationArgs.builder()
                .bucket(bucket.id())
                .rules(
                    BucketLifecycleConfigurationRuleArgs.builder()
                        .id("archive-old-versions")
                        .status("Enabled")
                        .transitions(
                            BucketLifecycleConfigurationRuleTransitionArgs.builder()
                                .days(30)
                                .storageClass("STANDARD_IA")
                                .build(),
                            BucketLifecycleConfigurationRuleTransitionArgs.builder()
                                .days(90)
                                .storageClass("GLACIER")
                                .build()
                        )
                        .expiration(BucketLifecycleConfigurationRuleExpirationArgs.builder()
                            .days(365)
                            .build())
                        .build()
                )
                .build());

        // Upload an object
        var file = new BucketObject("index.html", BucketObjectArgs.builder()
            .bucket(bucket.id())
            .key("index.html")
            .source(new FileAsset("./public/index.html"))
            .contentType("text/html")
            .acl("private")
            .build());

        // Configure CORS
        var cors = new BucketCorsConfiguration("bucket-cors",
            BucketCorsConfigurationArgs.builder()
                .bucket(bucket.id())
                .corsRules(BucketCorsConfigurationCorsRuleArgs.builder()
                    .allowedHeaders("*")
                    .allowedMethods("GET", "HEAD")
                    .allowedOrigins("https://example.com")
                    .exposeHeaders("ETag")
                    .maxAgeSeconds(3000)
                    .build())
                .build());

        // Bucket policy for CloudFront access
        var bucketPolicy = new BucketPolicy("bucket-policy", BucketPolicyArgs.builder()
            .bucket(bucket.id())
            .policy(bucket.arn().applyValue(arn -> String.format("""
                {
                  "Version": "2012-10-17",
                  "Statement": [{
                    "Effect": "Allow",
                    "Principal": {
                      "Service": "cloudfront.amazonaws.com"
                    },
                    "Action": "s3:GetObject",
                    "Resource": "%s/*"
                  }]
                }
                """, arn)))
            .build());

        // Export bucket details
        ctx.export("bucketName", bucket.id());
        ctx.export("bucketArn", bucket.arn());
        ctx.export("bucketDomainName", bucket.bucketDomainName());
    }
}