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  }