AWS Cloud9용 Go 자습서 - AWS Cloud9

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS Cloud9용 Go 자습서

이 자습서를 사용하면 AWS Cloud9 개발 환경에서 Go 코드를 실행할 수 있습니다.

이 자습서를 따르고 이 샘플을 생성하면 AWS 계정에 요금이 발생할 수 있습니다. 여기에는 Amazon EC2 및 Amazon S3 같은 서비스에 대한 발생할 수 있는 요금이 포함됩니다. 자세한 내용은 Amazon EC2 요금Amazon S3 요금을 참조하세요.

사전 조건

이 샘플을 사용하기 전에 설정이 다음 요구 사항을 충족하는지 확인하세요.

  • 기존 AWS Cloud9 EC2 개발 환경이 있어야 합니다. 이 샘플에서는 Amazon Linux 또는 Ubuntu 서버를 실행 중인 Amazon EC2 인스턴스에 연결된 EC2 환경이 이미 있다고 가정합니다. 다른 환경 또는 운영 시스템이라면 이 샘플 지침을 관련 도구를 설치하는 데에 적용해야 합니다. 자세한 내용은 AWS Cloud9에서 환경 생성 섹션을 참조하세요.

  • 기존 환경에 대한 AWS Cloud9 IDE가 이미 열려 있습니다. 환경을 열 때 AWS Cloud9은 웹 브라우저에서 환경을 위한 IDE를 엽니다. 자세한 내용은 AWS Cloud9에서 환경 열기 섹션을 참조하세요.

1단계: 필수 도구 설치

이 단계에서는 이 샘플을 실행할 때 필요한 Go를 설치하고 구성합니다.

  1. AWS Cloud9 IDE의 터미널 세션에서 go version 명령을 실행하여 Go가 이미 설치되었는지 여부를 확인합니다. (터미널 세션을 새로 시작하려면 메뉴 모음에서 Window(창), New Terminal(새 터미널)을 선택합니다.) 성공할 경우, 출력에 Go 버전 번호가 포함됩니다. 그렇지 않으면 오류 메시지가 출력됩니다. Go가 설치된 경우 2단계: 코드 추가 섹션으로 건너뜁니다.

  2. yum update 명령(Amazon Linux) 또는 apt update 명령(Ubuntu Server)을 실행하여 최신 보안 업데이트와 버그 수정이 설치되어 있는지 확인합니다.

    Amazon Linux의 경우:

    sudo yum -y update

    Ubuntu Server:

    sudo apt update
  3. Go를 설치하려면 한 번에 하나씩 다음 명령을 실행합니다.

    wget https://storage.googleapis.com/golang/go1.9.3.linux-amd64.tar.gz # Download the Go installer. sudo tar -C /usr/local -xzf ./go1.9.3.linux-amd64.tar.gz # Install Go. rm ./go1.9.3.linux-amd64.tar.gz # Delete the installer.

    앞의 명령은 이 주제가 작성된 당시의 안정된 최신 버전의 Go를 기준으로 합니다. 자세한 내용은 Go 프로그래밍 언어 웹 사이트에서 다운로드를 참조하세요.

  4. 다음과 같이 Go 바이너리에 대한 경로를 PATH 환경 변수에 추가합니다.

    1. 편집을 위해 셸 프로파일 파일(예: ~/.bashrc)을 엽니다.

    2. 이 코드 줄 끝에 다음을 입력하여 코드가 다음과 같이 표시되도록 합니다.

      PATH=$PATH:/usr/local/go/bin
    3. 파일을 저장합니다.

  5. 터미널이 방금 참조한 Go 바이너리를 찾을 수 있도록 ~/.bashrc 파일을 소스로 지정합니다.

    . ~/.bashrc
  6. go version 명령을 실행하여 Go가 성공적으로 설치 및 구성되었는지 확인합니다. 성공할 경우, 출력에 Go 버전 번호가 포함됩니다.

2단계: 코드 추가

AWS Cloud9 IDE에서 이 콘텐츠를 사용해 파일을 생성하고 hello.go라는 이름으로 파일을 저장합니다. (파일을 생성하려면 메뉴 모음에서 [파일(File)], [새 파일(New File)]을 선택합니다. 파일을 저장하려면 [파일(File)], [저장(Save)]을 선택합니다.)

package main import ( "fmt" "os" "strconv" ) func main() { fmt.Printf("Hello, World!\n") fmt.Printf("The sum of 2 and 3 is 5.\n") first, _ := strconv.Atoi(os.Args[1]) second, _ := strconv.Atoi(os.Args[2]) sum := first + second fmt.Printf("The sum of %s and %s is %s.", os.Args[1], os.Args[2], strconv.Itoa(sum)) }

3단계: 코드 실행

  1. AWS Cloud9 IDE의 메뉴 모음에서 [실행(Run)], [실행 구성(Run Configurations)] 및 [새 실행 구성(New Run Configuration)]을 선택합니다.

  2. [[새로 만들기] - 유휴([New] - Idle)] 탭에서 [러너: 자동(Runner: Auto)]을 선택한 다음 [Go]를 선택합니다.

    참고

    Go를 사용할 수 없는 경우 Go용 사용자 지정 러너를 생성할 수 있습니다.

    1. [New] - Idle([새로 만들기] = 유휴) 탭에서 Runner: Auto(실행기: 자동)를 선택하고 나서 New Runner(새 실행기)를 선택합니다.

    2. My Runner.run(내 실행기.run) 탭에서 탭의 내용을 이 코드로 바꿉니다.

      { "cmd" : ["go", "run", "$file", "$args"], "info" : "Running $project_path$file_name...", "selector" : "source.go" }
    3. 메뉴 모음에서 File(파일), Save As(다른 이름으로 저장)를 선택한 후 파일을 /.c9/runners 폴더의 Go.run으로 저장합니다.

    4. [[새로 만들기] - 유휴([New] - Idle)] 탭에서 [러너: 자동(Runner: Auto)]을 선택한 다음 [Go]를 선택합니다.

    5. hello.go 탭을 선택하여 활성화합니다.

  3. 명령hello.go 5 9를 입력합니다. 이 코드에서 5os.Args[1]을 나타내고 9os.Args[2]를 나타냅니다.

    
                  AWS Cloud9 IDE의 Go 코드 실행 출력
  4. Run(실행) 버튼을 선택하여 출력값을 비교합니다.

    Hello, World! The sum of 2 and 3 is 5. The sum of 5 and 9 is 14.

4단계: AWS SDK for Go 설치 및 구성

이 샘플을 응용해 AWS SDK for Go을 사용하여 Amazon S3 버킷을 생성하고 사용 가능한 버킷을 나열한 다음 방금 생성한 버킷을 삭제합니다.

이 단계에서는 Go 코드에서 Amazon S3와 같은 AWS 서비스와 상호 작용할 수 있는 편리한 방법을 제공하는 AWS SDK for Go를 설치 및 구성합니다. AWS SDK for Go를 설치하기 전에 GOPATH 환경 변수를 설정해야 합니다. AWS SDK for Go를 설치하고 GOPATH 환경 변수를 설정한 후에는 환경에서 자격 증명 관리를 설정해야 합니다. AWS SDK for Go는 AWS 서비스와 상호 작용하기 위해서 이런 자격 증명이 필요합니다.

GOPATH 환경 변수를 설정하려면

  1. 편집을 위해 ~/.bashrc 파일을 엽니다.

  2. 파일의 마지막 줄 뒤에 이 코드를 입력합니다.

    GOPATH=~/environment/go export GOPATH
  3. 파일을 저장합니다.

  4. 터미널이 방금 참조한 GOPATH 환경 변수를 찾을 수 있도록 ~/.bashrc 파일을 소스로 지정합니다.

    . ~/.bashrc
  5. echo $GOPATH 명령을 실행하여 GOPATH 환경 변수가 성공적으로 설정되었는지 확인합니다. 성공적으로 설정된 경우 /home/ec2-user/environment/go 또는 /home/ubuntu/environment/go가 출력되어야 합니다.

AWS SDK for Go를 설치하려면

AWS SDK for Go소스의 위치를 지정하여 go get 명령을 실행합니다.

go get -u github.com/aws/aws-sdk-go/...

Go는 GOPATH 환경 변수에 의해 지정된 위치, 즉 환경의 go폴더에 AWS SDK for Go 소스를 설치합니다.

환경에서 자격 증명 관리를 설정하려면

AWS SDK for Go을 사용하여 AWS 서비스를 호출할 때마다 호출과 함께 자격 증명 세트를 제공해야 합니다. 이러한 자격 증명은 AWS SDK for Go가 해당 호출을 할 수 있는 적절한 권한이 있는지 여부를 결정합니다. 자격 증명으로 적절한 권한이 확인되지 않는 경우 호출이 실패합니다.

이 단계에서는 환경 내에서 자격 증명을 저장합니다. 이렇게 하려면 AWS Cloud9의 환경에서 AWS 서비스 호출 섹션의 지침을 수행한 다음 이 주제로 돌아옵니다.

자세한 내용은 AWS SDK for Go 개발자 가이드에서 자격 증명 지정을 참조하세요.

5단계: AWS SDK 코드 추가

이 단계에서는 몇 가지 코드를 더 추가합니다. 이번 경우에는 Amazon S3와 상호 작용하기 위한 것이며 버킷을 생성하고 사용 가능한 버킷을 나열한 다음 막 생성한 버킷을 삭제합니다. 이 코드를 나중에 실행합니다.

AWS Cloud9 IDE에서 이 콘텐츠를 사용해 파일을 생성하고 s3.go라는 이름으로 파일을 저장합니다.

package main import ( "fmt" "os" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" ) func main() { if len(os.Args) < 3 { fmt.Printf("Usage: go run s3.go <the bucket name> <the AWS Region to use>\n" + "Example: go run s3.go my-test-bucket us-east-2\n") os.Exit(1) } sess := session.Must(session.NewSessionWithOptions(session.Options{ SharedConfigState: session.SharedConfigEnable, })) svc := s3.New(sess, &aws.Config{ Region: aws.String(os.Args[2]), }) listMyBuckets(svc) createMyBucket(svc, os.Args[1], os.Args[2]) listMyBuckets(svc) deleteMyBucket(svc, os.Args[1]) listMyBuckets(svc) } // List all of your available buckets in this AWS Region. func listMyBuckets(svc *s3.S3) { result, err := svc.ListBuckets(nil) if err != nil { exitErrorf("Unable to list buckets, %v", err) } fmt.Println("My buckets now are:\n") for _, b := range result.Buckets { fmt.Printf(aws.StringValue(b.Name) + "\n") } fmt.Printf("\n") } // Create a bucket in this AWS Region. func createMyBucket(svc *s3.S3, bucketName string, region string) { fmt.Printf("\nCreating a new bucket named '" + bucketName + "'...\n\n") _, err := svc.CreateBucket(&s3.CreateBucketInput{ Bucket: aws.String(bucketName), CreateBucketConfiguration: &s3.CreateBucketConfiguration{ LocationConstraint: aws.String(region), }, }) if err != nil { exitErrorf("Unable to create bucket, %v", err) } // Wait until bucket is created before finishing fmt.Printf("Waiting for bucket %q to be created...\n", bucketName) err = svc.WaitUntilBucketExists(&s3.HeadBucketInput{ Bucket: aws.String(bucketName), }) } // Delete the bucket you just created. func deleteMyBucket(svc *s3.S3, bucketName string) { fmt.Printf("\nDeleting the bucket named '" + bucketName + "'...\n\n") _, err := svc.DeleteBucket(&s3.DeleteBucketInput{ Bucket: aws.String(bucketName), }) if err != nil { exitErrorf("Unable to delete bucket, %v", err) } // Wait until bucket is deleted before finishing fmt.Printf("Waiting for bucket %q to be deleted...\n", bucketName) err = svc.WaitUntilBucketNotExists(&s3.HeadBucketInput{ Bucket: aws.String(bucketName), }) } // If there's an error, display it. func exitErrorf(msg string, args ...interface{}) { fmt.Fprintf(os.Stderr, msg+"\n", args...) os.Exit(1) }

6단계: AWS SDK 코드 실행

  1. AWS Cloud9 IDE의 메뉴 모음에서 [실행(Run)], [실행 구성(Run Configurations)] 및 [새 실행 구성(New Run Configuration)]을 선택합니다.

  2. [[새로 만들기] - 유휴([New] - Idle)] 탭에서 [러너: 자동(Runner: Auto)]을 선택한 다음 [Go]를 선택합니다.

  3. [명령(Command)]에 s3.go YOUR_BUCKET_NAME THE_AWS_REGION 을 입력합니다. 여기서 YOUR_BUCKET_NAME 은 생성했다고 삭제할 버킷의 이름이며, THE_AWS_REGION 는 버킷을 생성할 AWS 리전의 ID입니다. 예를 들어, 미국 동부(오하이오) 리전의 경우 us-east-2를 사용합니다. 더 많은 ID는 Amazon Web Services 일반 참조의 Amazon Simple Storage Service(Amazon S3)를 참조하세요.

    참고

    Amazon S3 버킷 이름은 해당 AWS 계정뿐만 아니라 모든 AWS에서 고유해야 합니다.

  4. Run(실행) 버튼을 선택하여 출력값을 비교합니다.

    My buckets now are: Creating a new bucket named 'my-test-bucket'... My buckets now are: my-test-bucket Deleting the bucket named 'my-test-bucket'... My buckets now are:

7단계: 정리

이 샘플 사용 후 AWS 계정에 계속하여 요금이 부과되지 않도록 환경을 삭제해야 합니다. 지침은 AWS Cloud9에서 환경 삭제 단원을 참조하세요.