mirror of https://github.com/pulumi/pulumi.git
43 lines
1.2 KiB
Puppet
43 lines
1.2 KiB
Puppet
// Create a bucket and expose a website index document
|
|
resource siteBucket "aws:s3:Bucket" {
|
|
website = {
|
|
indexDocument = "index.html"
|
|
}
|
|
}
|
|
|
|
siteDir = "www" // directory for content files
|
|
|
|
// For each file in the directory, create an S3 object stored in `siteBucket`
|
|
resource files "aws:s3:BucketObject" {
|
|
options {
|
|
range = readDir(siteDir)
|
|
deletedWith = siteBucket
|
|
}
|
|
|
|
bucket = siteBucket.id // Reference the s3.Bucket object
|
|
key = range.value // Set the key appropriately
|
|
|
|
source = fileAsset("${siteDir}/${range.value}") // use fileAsset to point to a file
|
|
contentType = range.value // set the MIME type of the file
|
|
}
|
|
|
|
// Set the access policy for the bucket so all objects are readable
|
|
resource bucketPolicy "aws:s3:BucketPolicy" {
|
|
bucket = siteBucket.id // refer to the bucket created earlier
|
|
|
|
// The policy is JSON-encoded.
|
|
policy = toJSON({
|
|
Version = "2012-10-17"
|
|
Statement = [{
|
|
Effect = "Allow"
|
|
Principal = "*"
|
|
Action = [ "s3:GetObject" ]
|
|
Resource = [ "arn:aws:s3:::${siteBucket.id}/*" ]
|
|
}]
|
|
})
|
|
}
|
|
|
|
// Stack outputs
|
|
output bucketName { value = siteBucket.bucket }
|
|
output websiteUrl { value = siteBucket.websiteEndpoint }
|