ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
client, err := newS3(ctx)
if err != nil { panic(err) }
bucket := os.Getenv("TEST_BUCKET")
key := "go/" + time.Now().UTC().Format("20060102T150405.000000000Z") + "-hello.txt"
body := "hello through Cloud Adapter\n"
_, err = client.PutObject(ctx, &s3.PutObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
Body: strings.NewReader(body),
ContentType: aws.String("text/plain"),
})
if err != nil { panic(err) }
_, err = client.HeadObject(ctx, &s3.HeadObjectInput{Bucket: aws.String(bucket), Key: aws.String(key)})
if err != nil { panic(err) }
got, err := client.GetObject(ctx, &s3.GetObjectInput{Bucket: aws.String(bucket), Key: aws.String(key)})
if err != nil { panic(err) }
defer got.Body.Close()
actual, err := io.ReadAll(got.Body)
if err != nil { panic(err) }
if string(actual) != body { panic("downloaded bytes differ") }
_, err = client.DeleteObject(ctx, &s3.DeleteObjectInput{Bucket: aws.String(bucket), Key: aws.String(key)})
if err != nil { panic(err) }