github.com/myhau/pulumi/pkg/v3@v3.70.2-0.20221116134521-f2775972e587/codegen/testing/test/testdata/aws-s3-folder-pp/go/aws-s3-folder.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "os" 7 8 "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/iam" 9 "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/s3" 10 "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 11 ) 12 13 func main() { 14 pulumi.Run(func(ctx *pulumi.Context) error { 15 siteBucket, err := s3.NewBucket(ctx, "siteBucket", &s3.BucketArgs{ 16 Website: &s3.BucketWebsiteArgs{ 17 IndexDocument: pulumi.String("index.html"), 18 }, 19 }) 20 if err != nil { 21 return err 22 } 23 siteDir := "www" 24 files0, err := os.ReadDir(siteDir) 25 if err != nil { 26 return err 27 } 28 fileNames0 := make([]string, len(files0)) 29 for key0, val0 := range files0 { 30 fileNames0[key0] = val0.Name() 31 } 32 var files []*s3.BucketObject 33 for key0, val0 := range fileNames0 { 34 __res, err := s3.NewBucketObject(ctx, fmt.Sprintf("files-%v", key0), &s3.BucketObjectArgs{ 35 Bucket: siteBucket.ID(), 36 Key: pulumi.String(val0), 37 Source: pulumi.NewFileAsset(fmt.Sprintf("%v/%v", siteDir, val0)), 38 ContentType: pulumi.String(val0), 39 }) 40 if err != nil { 41 return err 42 } 43 files = append(files, __res) 44 } 45 _, err = s3.NewBucketPolicy(ctx, "bucketPolicy", &s3.BucketPolicyArgs{ 46 Bucket: siteBucket.ID(), 47 Policy: siteBucket.ID().ApplyT(func(id string) (pulumi.String, error) { 48 var _zero pulumi.String 49 tmpJSON0, err := json.Marshal(map[string]interface{}{ 50 "Version": "2012-10-17", 51 "Statement": []map[string]interface{}{ 52 map[string]interface{}{ 53 "Effect": "Allow", 54 "Principal": "*", 55 "Action": []string{ 56 "s3:GetObject", 57 }, 58 "Resource": []string{ 59 fmt.Sprintf("arn:aws:s3:::%v/*", id), 60 }, 61 }, 62 }, 63 }) 64 if err != nil { 65 return _zero, err 66 } 67 json0 := string(tmpJSON0) 68 return pulumi.String(json0), nil 69 }).(pulumi.StringOutput), 70 }) 71 if err != nil { 72 return err 73 } 74 ctx.Export("bucketName", siteBucket.Bucket) 75 ctx.Export("websiteUrl", siteBucket.WebsiteEndpoint) 76 return nil 77 }) 78 }