的 Go 教學課程 AWS Cloud9 - AWS Cloud9

AWS Cloud9 不再提供給新客戶。的現有客戶 AWS Cloud9 可以繼續正常使用服務。進一步了解

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

的 Go 教學課程 AWS Cloud9

本教學課程可讓您在 AWS Cloud9 開發環境中執行一些 Go 程式碼。

遵循本教學課程並建立此範例可能會導致 AWS 您的帳戶產生費用。這包括 Amazon EC2和 Amazon S3 等服務的可能費用。如需詳細資訊,請參閱 Amazon EC2 PricingAmazon S3 Pricing

必要條件

在您使用此範例前,請務必確認您的設定符合下列要求:

  • 您必須具有現有的 AWS Cloud9 EC2開發環境。此範例假設您已擁有連線至執行 Amazon Linux 或 的 Amazon EC2執行個體EC2的環境 Ubuntu 伺服器。如果您有不同類型的環境或作業系統,您可能需要依照此範例的說明來設定相關工具。如需詳細資訊,請參閱在 中建立環境 AWS Cloud9

  • 您已經開啟現有環境的 AWS Cloud9 IDE。當您開啟環境時,請在 Web 瀏覽器中 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 Programming Language 網站上的 Downloads

  4. 將 Go 二進位檔的路徑新增至 PATH 環境變數,如下所示。

    1. 開啟您的 shell 描述檔檔案 (例如,~/.bashrc) 以進行編輯。

    2. 在這行程式碼的結尾,輸入下列程式碼,讓程式碼現在如下所示。

      PATH=$PATH:/usr/local/go/bin
    3. 儲存檔案。

  5. 取得 ~/.bashrc 檔案,讓終端機現在可以找到您剛剛參考的 Go 二進位檔。

    . ~/.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的選單列中,選擇執行 執行組態 新執行組態

  2. [New] - Idle ([新增] - 閒置) 標籤上,選擇 Runner: Auto (執行器: 自動),然後選擇 Go

    注意

    如果未提供 Go,您可以建立 Go 的自訂執行器。

    1. [New] - Idle ([新增] - 閒置) 標籤上,選擇 Runner: Auto (執行器: 自動),然後選擇 New Runner (新執行器)。

    2. My Runner.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. Command (命令) 中輸入 hello.go 5 9。此程式碼的 5 代表 os.Args[1],而 9 代表 os.Args[2]

    在 中執行 Go 程式碼的輸出 AWS Cloud9 IDE
  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 儲存貯體、列出可用的儲存貯體,然後刪除剛建立的儲存貯體。

在此步驟中,您會安裝並設定 AWS SDK for Go,它提供一種方便的方式,讓您從您的 Go 程式碼與 Amazon S3 等 AWS 服務互動。安裝 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. 取得 ~/.bashrc 檔案,讓終端機現在可以找到您剛剛參考的 GOPATH 環境變數。

    . ~/.bashrc
  5. 執行 echo $GOPATH 命令,以確認已成功設定 GOPATH 環境變數。如果成功,應該會輸出 /home/ec2-user/environment/go/home/ubuntu/environment/go

安裝 AWS SDK for Go

執行 go get命令,指定 AWS SDK for Go 來源的位置。

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

Go 會將 AWS SDK for Go 來源安裝到GOPATH環境變數指定的位置,這是您環境中的go資料夾。

在環境中設定憑證管理

每次使用 AWS SDK for Go 呼叫 AWS 服務時,您必須隨呼叫提供一組憑證。這些憑證會判斷 是否 AWS SDK for Go 具有適當的許可來進行該呼叫。如果登入資料未涵蓋適當許可,呼叫即會失敗。

在此步驟中,您會在環境中存放您的憑證。若要這麼做,請遵循 AWS 服務 從 中的環境呼叫 AWS Cloud9 中的指示,然後返回本主題。

如需詳細資訊,請參閱 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的選單列中,選擇執行 執行組態 新執行組態

  2. [New] - Idle ([新增] - 閒置) 標籤上,選擇 Runner: Auto (執行器: 自動),然後選擇 Go

  3. 對於命令 ,輸入 s3.go YOUR_BUCKET_NAME THE_AWS_REGION ,其中 YOUR_BUCKET_NAME 是您要建立和刪除的儲存貯體名稱,而 THE_AWS_REGION 是您要建立儲存貯體 AWS 的區域 ID。例如,若為美國東部 (俄亥俄) 區域,則使用 us-east-2。如需更多 IDs,請參閱 中的 Amazon Simple Storage Service (Amazon S3)Amazon Web Services 一般參考

    注意

    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 中的環境」。