pulumi/pkg/codegen/internal/test/testdata/aws-s3-folder.pp.go

80 lines
2 KiB
Go

package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"mime"
"path"
"github.com/pulumi/pulumi-aws/sdk/v2/go/aws/s3"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
siteBucket, err := s3.NewBucket(ctx, "siteBucket", &s3.BucketArgs{
Website: &s3.BucketWebsiteArgs{
IndexDocument: pulumi.String("index.html"),
},
})
if err != nil {
return err
}
siteDir := "www"
files0, err := ioutil.ReadDir(siteDir)
if err != nil {
return err
}
fileNames0 := make([]string, len(files0))
for key0, val0 := range files0 {
fileNames0[key0] = val0.Name()
}
var files []*s3.BucketObject
for key0, val0 := range fileNames0 {
__res, err := s3.NewBucketObject(ctx, fmt.Sprintf("files-%v", key0), &s3.BucketObjectArgs{
Bucket: siteBucket.ID(),
Key: pulumi.String(val0),
Source: pulumi.NewFileAsset(fmt.Sprintf("%v%v%v", siteDir, "/", val0)),
ContentType: pulumi.String(mime.TypeByExtension(path.Ext(val0))),
})
if err != nil {
return err
}
files = append(files, __res)
}
_, err = s3.NewBucketPolicy(ctx, "bucketPolicy", &s3.BucketPolicyArgs{
Bucket: siteBucket.ID(),
Policy: siteBucket.ID().ApplyT(func(id string) (pulumi.String, error) {
var _zero pulumi.String
tmpJSON0, err := json.Marshal(map[string]interface{}{
"Version": "2012-10-17",
"Statement": []map[string]interface{}{
map[string]interface{}{
"Effect": "Allow",
"Principal": "*",
"Action": []string{
"s3:GetObject",
},
"Resource": []string{
fmt.Sprintf("%v%v%v", "arn:aws:s3:::", id, "/*"),
},
},
},
})
if err != nil {
return _zero, err
}
json0 := string(tmpJSON0)
return pulumi.String(json0), nil
}).(pulumi.StringOutput),
})
if err != nil {
return err
}
ctx.Export("bucketName", siteBucket.Bucket)
ctx.Export("websiteUrl", siteBucket.WebsiteEndpoint)
return nil
})
}