前往的教學課程 AWS Cloud9 - AWS Cloud9

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

前往的教學課程 AWS Cloud9

本教程使您可以在AWS Cloud9開發環境中運行一些 Go 代碼。

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

必要條件

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

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

  • 您現有環境的 AWS Cloud9 IDE 已開啟。當您開啟環境時,AWS Cloud9 會在 Web 瀏覽器中開啟該環境的 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 的選單列上,選擇 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 標籤上,使用以下程式碼取代標籤的內容。

      { "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]

    
                  在 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 儲存貯體、列出可用的儲存貯體,然後刪除您剛建立的儲存貯體。

在此步驟中,您會安裝並設定 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 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 Simple Storage Service (Amazon S3)Amazon Web Services 一般參考

    注意

    不只是在您的 AWS 帳戶中,Amazon S3 儲存貯體名稱在整個 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 中的環境