AWS Cloud9 不再提供給新客戶。的現有客戶 AWS Cloud9 可繼續正常使用此服務。了解更多」
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
前往的教學課程 AWS Cloud9
本教程使您可以在AWS Cloud9開發環境中運行一些 Go 代碼。
遵循本教學課程並建立此範例可能會對您的AWS帳戶產生費用。其中包括 Amazon EC2 和 Amazon S3 這類服務可能的費用。如需詳細資訊,請參閱 Amazon EC2 定價
主題
必要條件
在您使用此範例前,請務必確認您的設定符合下列要求:
-
您必須已有 AWS Cloud9 EC2 開發環境。本範例假設您已具備 EC2 環境,且該環境已連線到執行 Amazon Linux 或 Ubuntu Server 的 Amazon EC2 執行個體。如果您有不同類型的環境或作業系統,您可能需要依照此範例的說明來設定相關工具。如需詳細資訊,請參閱在中建立環境 AWS Cloud9。
-
您現有環境的 AWS Cloud9 IDE 已開啟。當您開啟環境時,AWS Cloud9 會在 Web 瀏覽器中開啟該環境的 IDE。如需詳細資訊,請參閱在 AWS Cloud9 中開啟環境。
步驟 1:安裝必要工具
在此步驟中,您將安裝和設定 Go,這是執行此範例的必要工具。
-
在 AWS Cloud9 IDE 的終端機工作階段中,執行
go version
命令,確認是否已安裝 Go。(若要啟動新終端機工作階段,請在選單列上,選擇 Window (視窗)、New Terminal (新增終端機)。如果成功,則輸出應該包含 Go 版本號碼。否則,應該會輸出錯誤訊息。若 Go 已安裝,請跳至步驟 2:新增程式碼。 -
執行
yum update
(適用於 Amazon Linux) 或apt update
(適用於 Ubuntu Server) 命令,協助確保已安裝最新安全性更新和錯誤修正。針對 Amazon Linux:
sudo yum -y update
針對 Ubuntu Server:
sudo apt update
-
若要安裝 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
。 -
將 Go 二進位檔的路徑新增至
PATH
環境變數,如下所示。-
開啟您的 shell 描述檔檔案 (例如,
~/.bashrc
) 以進行編輯。 -
在這行程式碼的結尾,輸入下列程式碼,讓程式碼現在如下所示。
PATH=$PATH:/usr/local/go/bin
-
儲存檔案。
-
-
取得
~/.bashrc
檔案,讓終端機現在可以找到您剛剛參考的 Go 二進位檔。. ~/.bashrc
-
執行
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:執行程式碼
-
在 AWS Cloud9 IDE 的選單列上,選擇 Run (執行)、Run Configurations (執行組態)、New Run Configuration (新增執行組態)。
-
在 [New] - Idle ([新增] - 閒置) 標籤上,選擇 Runner: Auto (執行器: 自動),然後選擇 Go。
注意
如果未提供 Go,您可以建立 Go 的自訂執行器。
-
在 [New] - Idle ([新增] - 閒置) 標籤上,選擇 Runner: Auto (執行器: 自動),然後選擇 New Runner (新執行器)。
-
在 My Runner.run 標籤上,使用以下程式碼取代標籤的內容。
{ "cmd" : ["go", "run", "$file", "$args"], "info" : "Running $project_path$file_name...", "selector" : "source.go" }
-
從選單列選擇 File (檔案)、Save As (另存新檔),然後儲存檔案至
/.c9/runners
資料夾並命名為Go.run
。 -
在 [New] - Idle ([新增] - 閒置) 標籤上,選擇 Runner: Auto (執行器: 自動),然後選擇 Go。
-
選擇 hello.go 標籤以使其作用。
-
-
在 Command (命令) 中輸入
hello.go 5 9
。此程式碼的5
代表os.Args[1]
,而9
代表os.Args[2]
。 -
選擇 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 環境變數
-
開啟
~/.bashrc
檔案進行編輯。 -
在檔案的最後一行後面,輸入此程式碼。
GOPATH=~/environment/go export GOPATH
-
儲存檔案。
-
取得
~/.bashrc
檔案,讓終端機現在可以找到您剛剛參考的GOPATH
環境變數。. ~/.bashrc
-
執行
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 程式碼
-
在 AWS Cloud9 IDE 的選單列上,選擇 Run (執行)、Run Configurations (執行組態)、New Run Configuration (新增執行組態)。
-
在 [New] - Idle ([新增] - 閒置) 標籤上,選擇 Runner: Auto (執行器: 自動),然後選擇 Go。
-
針對 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 中皆不可重複。
-
選擇 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 中的環境。