mirror of https://github.com/pulumi/pulumi.git
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
import pulumi
|
|
import json
|
|
import os
|
|
import pulumi_aws as aws
|
|
|
|
# Create a bucket and expose a website index document
|
|
site_bucket = aws.s3.Bucket("siteBucket", website={
|
|
"index_document": "index.html",
|
|
})
|
|
site_dir = "www"
|
|
# For each file in the directory, create an S3 object stored in `siteBucket`
|
|
files = []
|
|
for range in [{"key": k, "value": v} for [k, v] in enumerate(os.listdir(site_dir))]:
|
|
files.append(aws.s3.BucketObject(f"files-{range['key']}",
|
|
bucket=site_bucket.id,
|
|
key=range["value"],
|
|
source=pulumi.FileAsset(f"{site_dir}/{range['value']}"),
|
|
content_type=range["value"],
|
|
opts = pulumi.ResourceOptions(deleted_with=site_bucket)))
|
|
# set the MIME type of the file
|
|
# Set the access policy for the bucket so all objects are readable
|
|
bucket_policy = aws.s3.BucketPolicy("bucketPolicy",
|
|
bucket=site_bucket.id,
|
|
policy=pulumi.Output.json_dumps({
|
|
"Version": "2012-10-17",
|
|
"Statement": [{
|
|
"Effect": "Allow",
|
|
"Principal": "*",
|
|
"Action": ["s3:GetObject"],
|
|
"Resource": [site_bucket.id.apply(lambda id: f"arn:aws:s3:::{id}/*")],
|
|
}],
|
|
}))
|
|
pulumi.export("bucketName", site_bucket.bucket)
|
|
pulumi.export("websiteUrl", site_bucket.website_endpoint)
|