Skip to main content

Search the Dev Center

Search tutorials, templates, examples, and more.

Host a static website on Amazon S3

A minimal AWS Python Pulumi program

This example lives in the pulumi/examples repository. Check out just this directory to use it:

Get started with this example
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set aws-py-s3-folder
cd pulumi-examples/aws-py-s3-folder

A static website that uses S3’s website support. For a detailed walkthrough of this example, see the tutorial Static Website on AWS S3.

Note: some values in this example will be different from run to run. These values are indicated with ***.

Prerequisites#

  1. Install Pulumi
  2. Configure AWS credentials
  3. Install Python

Deploying the example#

  1. Create a new stack:

    Terminal window
    pulumi stack init website-testing
  2. Set the AWS region to deploy into:

    Terminal window
    pulumi config set aws:region us-west-2
  3. Install dependencies:

    Terminal window
    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
  4. Run pulumi up to preview and deploy changes. After the preview is shown you will be prompted whether to continue or not:

    Terminal window
    pulumi up
    Previewing update (dev):
    Type Name Plan
    + pulumi:pulumi:Stack aws-py-s3-folder-dev create
    + ├─ aws:s3:Bucket s3-website-bucket create
    + ├─ aws:s3:BucketObject index.html create
    + ├─ aws:s3:BucketObject python.png create
    + ├─ aws:s3:BucketObject favicon.png create
    + └─ aws:s3:BucketPolicy bucket-policy create
    Resources:
    + 6 to create
  5. To see the resources that were created, run pulumi stack output:

    Terminal window
    pulumi stack output
    Current stack outputs (2):
    OUTPUT VALUE
    bucket_name s3-website-bucket-***
    website_url ***.s3-website-us-west-2.amazonaws.com
  6. To see that the S3 objects exist, use either the AWS Console or the AWS CLI:

    Terminal window
    aws s3 ls $(pulumi stack output bucket_name)
    2018-04-17 15:40:47 13731 favicon.png
    2018-04-17 15:40:48 249 index.html
  7. Open the site URL in a browser to see both the rendered HTML, the favicon, and Python splash image:

    Terminal window
    pulumi stack output website_url
    ***.s3-website-us-west-2.amazonaws.com

Cleaning up#

Once you’re finished experimenting, destroy your stack and remove it to avoid incurring any additional cost:

Terminal window
pulumi destroy
pulumi stack rm

Related

The infrastructure as code platform for any cloud.