-
Notifications
You must be signed in to change notification settings - Fork 711
Closed
Labels
bugThis issue is a bug.This issue is a bug.
Description
Confirm by changing [ ] to [x] below to ensure that it's a bug:
- I've gone though the API reference
- I've checked AWS Forums and StackOverflow for answers
- I've searched for previous similar issues and didn't find any solution
Describe the bug
Objects uploaded to S3 ith presign Put Object URL withTagging
parameter set, do not have the tagging metadata. The SDK hoists the x-amz-tagging
header to the query string, which is ignored by S3. S3 requires the x-amz-tagging
to be a signed header.
Version of AWS SDK for Go?
v0.31.0`
Version of Go (go version
)?
v1.15.x
To Reproduce (observed behavior)
package main
import (
"context"
"fmt"
"log"
"os"
"strings"
"github.com/aws/aws-sdk-go-v2/aws"
v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
func main() {
bucket := os.Args[1]
key := os.Args[2]
fileToPut := os.Args[3]
presigned, err := getPresignedPut(context.TODO(), bucket, key)
if err != nil {
log.Fatalf("failed to get presigned URL, %v", err)
}
var headerStr strings.Builder
for k, vs := range presigned.SignedHeader {
for _, v := range vs {
fmt.Fprintf(&headerStr, "-H \"%s: %s\" \\\n", k, v)
}
}
fmt.Printf("curl -X %s \\\n%s-d @%s \\\n%q\n",
presigned.Method, headerStr.String(), fileToPut, presigned.URL)
}
func getPresignedPut(ctx context.Context, bucket, key string) (*v4.PresignedHTTPRequest, error) {
cfg, err := config.LoadDefaultConfig(ctx)
if err != nil {
return nil, fmt.Errorf("failed to load config, %w", err)
}
client := s3.NewPresignClient(s3.NewFromConfig(cfg))
presigned, err := client.PresignPutObject(ctx, &s3.PutObjectInput{
Bucket: &bucket,
Key: &key,
Tagging: aws.String("mytagname=mytagvalue"),
})
if err != nil {
return nil, fmt.Errorf("failed to get PutObject presigned URL, %w", err)
}
return presigned, nil
}
Expected behavior
To be able to put the object to S3 with the tagged header.
Additional context
Add any other context about the problem here.
Metadata
Metadata
Assignees
Labels
bugThis issue is a bug.This issue is a bug.