728x90
Go AWS S3 GetObject 파일 가져오기
AWS SDK for Go v2를 사용하여 간단하게 구현한 예제입니다. GetObject를 사용하여 S3 버킷에 있는 파일을 다운로드할 수 있습니다.
package main
import (
"context"
"fmt"
"io"
"log"
"time"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
type Client interface {
GetObject(ctx context.Context, params *s3.GetObjectInput, optFns ...func(*s3.Options)) (*s3.GetObjectOutput, error)
}
type Object struct {
Body io.ReadCloser
ContentEncoding *string
ContentLength int64
ContentType *string
LastModified *time.Time
}
func GetObject(ctx context.Context, client Client, bucket, key string) (*Object, error) {
result, err := client.GetObject(ctx, &s3.GetObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
})
if err != nil {
return nil, err
}
return &Object{
Body: result.Body,
ContentEncoding: result.ContentEncoding,
ContentLength: result.ContentLength,
ContentType: result.ContentType,
LastModified: result.LastModified,
}, nil
}
func main() {
cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
log.Fatalln("configuration error, " + err.Error())
}
result, err := GetObject(context.TODO(), s3.NewFromConfig(cfg), "bucket", "key")
if err != nil {
log.Fatalln("GetObject error, " + err.Error())
}
fmt.Println(*result.ContentType)
fmt.Println(*result.LastModified)
}
728x90
'Go' 카테고리의 다른 글
Go URL로 파일 다운로드 (0) | 2023.02.14 |
---|---|
Go 파일 읽기 (0) | 2022.11.24 |
Go 랜덤 문자열 만들기 (0) | 2022.09.21 |
Go 수행시간 측정 (0) | 2017.09.26 |
Go 파일 사이즈 구하기 (0) | 2017.08.07 |