github.com/aavshr/aws-sdk-go@v1.41.3/example/service/s3/putObjectAcl/putObjectAcl.go (about) 1 //go:build example 2 // +build example 3 4 package main 5 6 import ( 7 "flag" 8 "fmt" 9 10 "github.com/aavshr/aws-sdk-go/aws" 11 "github.com/aavshr/aws-sdk-go/aws/session" 12 "github.com/aavshr/aws-sdk-go/service/s3" 13 ) 14 15 // Put an ACL on an S3 object 16 // 17 // Usage: 18 // putBucketAcl <params> 19 // -region <region> // required 20 // -bucket <bucket> // required 21 // -key <key> // required 22 // -owner-name <owner-name> 23 // -owner-id <owner-id> 24 // -grantee-type <some type> // required 25 // -uri <uri to group> 26 // -email <email address> 27 // -user-id <user-id> 28 func main() { 29 regionPtr := flag.String("region", "", "region of your request") 30 bucketPtr := flag.String("bucket", "", "name of your bucket") 31 keyPtr := flag.String("key", "", "of your object") 32 ownerNamePtr := flag.String("owner-name", "", "of your request") 33 ownerIDPtr := flag.String("owner-id", "", "of your request") 34 granteeTypePtr := flag.String("grantee-type", "", "of your request") 35 uriPtr := flag.String("uri", "", "of your grantee type") 36 emailPtr := flag.String("email", "", "of your grantee type") 37 userPtr := flag.String("user-id", "", "of your grantee type") 38 displayNamePtr := flag.String("display-name", "", "of your grantee type") 39 flag.Parse() 40 41 // Based off the type, fields must be excluded. 42 switch *granteeTypePtr { 43 case s3.TypeCanonicalUser: 44 emailPtr, uriPtr = nil, nil 45 if *displayNamePtr == "" { 46 displayNamePtr = nil 47 } 48 49 if *userPtr == "" { 50 userPtr = nil 51 } 52 case s3.TypeAmazonCustomerByEmail: 53 uriPtr, userPtr = nil, nil 54 case s3.TypeGroup: 55 emailPtr, userPtr = nil, nil 56 } 57 58 sess := session.Must(session.NewSession(&aws.Config{ 59 Region: regionPtr, 60 })) 61 62 svc := s3.New(sess) 63 64 resp, err := svc.PutObjectAcl(&s3.PutObjectAclInput{ 65 Bucket: bucketPtr, 66 Key: keyPtr, 67 AccessControlPolicy: &s3.AccessControlPolicy{ 68 Owner: &s3.Owner{ 69 DisplayName: ownerNamePtr, 70 ID: ownerIDPtr, 71 }, 72 Grants: []*s3.Grant{ 73 { 74 Grantee: &s3.Grantee{ 75 Type: granteeTypePtr, 76 DisplayName: displayNamePtr, 77 URI: uriPtr, 78 EmailAddress: emailPtr, 79 ID: userPtr, 80 }, 81 Permission: aws.String(s3.BucketLogsPermissionFullControl), 82 }, 83 }, 84 }, 85 }) 86 87 if err != nil { 88 fmt.Println("failed", err) 89 } else { 90 fmt.Println("success", resp) 91 } 92 }