1. Docs
  2. Clouds
  3. AWS
  4. AWS Guides
  5. Creating an AWS S3 Bucket with Pulumi

Creating an AWS S3 Bucket with Pulumi

    Create an AWS S3 resource using @pulumi/aws

    The @pulumi/aws library enables fine-grained control over the AWS S3 resource meaning it can be coded, deployed, and managed entirely in code.

    const aws = require("@pulumi/aws");
    
    const bucket = new aws.s3.Bucket("my-bucket");
    
    const bucketMetric = new aws.s3.BucketMetric("my-bucket-metric", {
        bucket: bucket.bucket
    });
    
    const bucketNotification = new aws.s3.BucketNotification("my-bucket-notification", {
        bucket: bucket.bucket
    });
    
    const bucketObject = new aws.s3.BucketObject("my-bucket-object", {
        bucket: bucket.bucket,
        content: "hello world"
    });
    
    const bucketPolicy = new aws.s3.BucketPolicy("my-bucket-policy", {
        bucket: bucket.bucket,
        policy: bucket.bucket.apply(publicReadPolicyForBucket)
    })
    
    function publicReadPolicyForBucket(bucketName: string) {
        return JSON.stringify({
            Version: "2012-10-17",
            Statement: [{
                Effect: "Allow",
                Principal: "*",
                Action: [
                    "s3:GetObject"
                ],
                Resource: [
                    `arn:aws:s3:::${bucketName}/*` // policy refers to bucket name explicitly
                ]
            }]
        });
    }
    

    Create an AWS S3 bucket using @pulumi/cloud

    The @pulumi/cloud library provides a high-level abstraction over the AWS S3 resource ensuring the same code can be used in multi-cloud environments.

    const cloud = require("@pulumi/cloud-aws");
    const aws = require("@pulumi/aws");
    
    // A new bucket that will work in any cloud
    const bucket = new cloud.Bucket("bucket");
    
      Register for Pulumi UP, June 15, 2023