AWS SDK for Go 시작하기
AWS SDK for Go에는 최소한 Go 1.23 버전이 필요합니다. 다음 명령을 실행하여 Go의 최신 버전을 확인할 수 있습니다.
go version
Go 버전 설치 또는 업그레이드에 대한 자세한 내용은 Go 설명서의 다운로드 및 설치
Amazon 계정 가져오기
AWS SDK for Go v2를 사용하려면 먼저 Amazon 계정이 있어야 합니다. 자세한 내용은 AWS 계정 생성을 참조하세요.
AWS SDK for Go v2 설치
AWS SDK for Go v2는 Go 1.11에 도입된 기능인 Go 모듈을 사용합니다. 로컬 프로젝트를 초기화하려면 다음 Go 명령을 실행합니다.
go mod init example
Go 모듈 프로젝트를 초기화한 후 go get 명령을 사용하여 SDK와 필요한 종속성을 검색할 수 있습니다. 이러한 종속성은 이전 명령으로 생성된 go.mod 파일에 기록됩니다.
다음 명령은 애플리케이션에서 사용할 표준 SDK 모듈 세트를 검색하는 방법을 보여줍니다.
go get github.com/aws/aws-sdk-go-v2 go get github.com/aws/aws-sdk-go-v2/config
그러면 코어 SDK 모듈과 AWS 공유 구성을 로드하는 데 사용되는 구성 모듈이 검색됩니다.
그런 다음 애플리케이션에 필요한 AWS 서비스 API 클라이언트를 하나 이상 설치할 수 있습니다. 모든 API 클라이언트는 github.com/aws/aws-sdk-go-v2/service 가져오기 계층 구조 아래에 있습니다. 현재 지원되는 API 클라이언트의 전체 세트는 여기go.mod 파일에 종속성을 기록합니다. 이 예제에서는 Amazon S3 API 클라이언트를 검색합니다.
go get github.com/aws/aws-sdk-go-v2/service/s3
AWS 액세스 키 받기
액세스 키는 액세스 키 ID 및 비밀 액세스 키로 이루어져 있는데, 이를 사용하여 에 보내는 프로그래밍 방식의 요청에 서명할 수 있습니다AWS 액세스 키가 없는 경우 AWS Management Console
참고
액세스 키를 생성하려면 필요한 IAM 작업을 수행할 수 있는 권한이 있어야 합니다. 자세한 내용은 IAM 사용 설명서의 IAM 리소스에 액세스하는 데 필요한 권한을 참조하세요.
계정 액세스 키 ID와 시크릿 액세스 키를 얻는 방법은 다음과 같습니다.
-
IAM 콘솔
을 엽니다. -
탐색 메뉴에서 사용자를 선택합니다.
-
IAM 사용자 이름(확인란이 아님)을 선택합니다.
-
Security credentials(보안 자격 증명) 탭을 연 다음 Create access key(액세스 키 생성)를 선택합니다.
-
새 액세스 키를 보려면 [Show]를 선택합니다. 자격 증명은 다음과 같을 것입니다.
-
액세스 키 ID:
AKIAIOSFODNN7EXAMPLE -
시크릿 액세스 키:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
-
-
키 페어 파일을 다운로드하려면 [Download .csv file]을 선택합니다. 안전한 위치에 키를 저장합니다.
주의
키를 기밀로 유지하여 AWS 계정을 보호하고 조직 외부의 누구와도 공유하지 마세요.
관련 주제
-
IAM 사용 설명서의 IAM이란 무엇입니까?
-
Amazon Web Services 일반 참조의 AWS 보안 자격 증명.
작업 간접 호출
SDK를 설치한 후 AWS, Config 및 Amazon S3 라이브러리를 가져오는 다음 예제와 같이 패키지를 AWS Go 애플리케이션으로 가져와 SDK를 사용합니다. SDK 패키지를 가져온 후 AWS SDK 공유 구성이 로드되고 클라이언트가 구성되며 API 작업이 간접적으로 호출됩니다.
package main import ( "context" "log" "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" ) func main() { // Load the Shared AWS Configuration (~/.aws/config) cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { log.Fatal(err) } // Create an Amazon S3 service client client := s3.NewFromConfig(cfg) // Get the first page of results for ListObjectsV2 for a bucket output, err := client.ListObjectsV2(context.TODO(), &s3.ListObjectsV2Input{ Bucket: aws.String("amzn-s3-demo-bucket"), }) if err != nil { log.Fatal(err) } log.Println("first page results") for _, object := range output.Contents { log.Printf("key=%s size=%d", aws.ToString(object.Key), *object.Size) } }