Go, AWS S3에 파일 올리고 다운받기
2020. 9. 17. 09:25ㆍ개발/GO
다른 곳에서 사용하던 putobject, getobject를 go에서 구현을 해보려고 했습니다.
사실 볼 자료는 AWS에 많고 예제도 많지만, 딱 원하는 부분이 시원하게 나오지 않아서 조금 해맸습니다.
AWS SDK for Go Developer Guide
putobject
getGitList() 를 하게 되면 제가 기존에 사용하던 struct 값을 가져오게 되고,
json.Marshal을 통해 GITLIST.txt 파일에 넣어주는 부분입니다
bucket := "YOUR BUCKET"
key := "GITLIST.txt"
gitList := getGitList()
strGitList, _ := json.Marshal(gitList)
sess, err := session.NewSession(&aws.Config{
Region: aws.String("ap-northeast-2")},
)
svc := s3.New(sess)
_, err = svc.PutObject(&s3.PutObjectInput{
Body: strings.NewReader(string(strGitList)),
Bucket: &bucket,
Key: &key,
})
if err != nil {
fmt.Printf("Failed to upload data to %s/%s, %s\n", bucket, key, err)
return
}
getobject
s3에서 값을 가져와서 기존에 사용하던 struct 에까지 넣는 방법입니다.
bucket := "YOUR BUCKET"
key := "GITLIST.txt"
sess, err := session.NewSession(&aws.Config{
Region: aws.String("ap-northeast-2")},
)
svc := s3.New(sess)
result, err := svc.GetObject(&s3.GetObjectInput{
Bucket: &bucket,
Key: &key,
})
if err != nil {
fmt.Printf("Failed to upload data to %s/%s, %s\n", bucket, key, err)
return
}
buf := new(bytes.Buffer)
_, _ = buf.ReadFrom(result.Body)
content := buf.String()
gitList := GitList{}
json.Unmarshal([]byte(content), &gitList)
aws.Config
추가로 중간에 aws.Config를 설명하면 region은 제가 표시하기 위해 설정을 했으며,
그 이외에는 아직 제가 필요치 않아서 따로 설정을 하지 않았습니다.
자세한 문서는 docs.aws.amazon.com/sdk-for-go/api/aws/#Config 에서 보시면 되겠습니다.
#을 통해 문서가 잘 이동이 안되는데 제법 하단에 있습니다.
아니면 git 주소를 이용해도 됩니다. github.com/aws/aws-sdk-go/blob/v1.34.24/aws/config.go#L33-L267
'개발 > GO' 카테고리의 다른 글
Go, Git API를 이용해서 남의 최신 releases 정보 가져오기 (0) | 2020.09.10 |
---|