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  }