Skip to main content

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.

Deploying and running the program#

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

  1. Create a new stack:

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

    Terminal window
    pulumi config set aws:region us-west-2
  3. Run pulumi up to preview and deploy changes. After the preview is shown you will be prompted if you want 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
    Do you want to perform this update?
    > yes
    no
    details
  4. 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
  5. To see that the S3 objects exist, you can either use 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
  6. 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
  7. To clean up resources, run pulumi destroy and answer the confirmation question at the prompt.

Related

The infrastructure as code platform for any cloud.