AWS Cloud9 Go チュートリアル - AWS Cloud9

新規のお客様への AWS Cloud9 の提供は終了しました。AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら

AWS Cloud9 Go チュートリアル

このチュートリアルでは、AWS Cloud9 開発環境でいくつかの Go コードを実行できます。

このチュートリアルに従って、このサンプルを作成すると、AWS アカウントに料金が発生する可能性があります。Amazon EC2 や Amazon S3 などのサービスに対して発生する可能性がある料金も含まれます。詳細については、「Amazon EC2 料金表」および「Amazon S3 料金表」を参照してください。

前提条件

このサンプルを使用する前に、設定が次の要件を満たしていることを確認します。

  • 既存の AWS Cloud9 EC2 開発環境が存在している必要があります。このサンプルは、Amazon Linux または Ubuntu Server を実行する 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. (Amazon Linux) 用 yum update または (Ubuntu Server) 用 apt update コマンドを実行して、最新のセキュリティ更新プログラムおよびバグ修正がインストールされていることを確認します。

    Amazon Linux の場合:

    sudo yum -y update

    Ubuntu Server の場合:

    sudo apt update
  3. Go をインストールするには、以下のコマンドを 1 つずつ実行します。

    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 プログラミング言語ウェブサイトで「Downloads」を参照してください。

  4. Go バイナリのパスを PATH 環境変数に追加します。次のようになります。

    1. 編集のため、シェルプロファイルのファイル (たとえば ~/.bashrc) を開きます。

    2. 次のコード行の末尾に、次のように入力します。これにより、コードは次のようになります。

      PATH=$PATH:/usr/local/go/bin
    3. ファイルを保存します。

  5. ~/.bashrc ファイルをソース化し、ターミナルが今参照した Go バイナリを見つけられるようにします。

    . ~/.bashrc
  6. go version コマンドを実行して、Go が正しくインストールおよび設定されていることを確認します。成功した場合、出力に Go のバージョン番号が含まれています。

ステップ 2: コードを追加する

AWS Cloud9 IDE で、以下の内容のファイルを作成し、hello.go という名前で保存します (メニューバーでファイルを作成するには、ファイルNew File (新しいファイル)を選択します。 ファイルを保存するには、ファイル保存を選択します。)

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 (名前を付けて保存)] の順に選択し、ファイルを Go.run として /.c9/runners フォルダに保存します。

    4. [[New] - Idle ([新規] - アイドル)] タブで、[Runner: Auto (ランナー: 自動)] を選択し、[Go] を選択します。

    5. [hello.go] タブを選択し、アクティブにします。

  3. Command (コマンド)]に「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 バケットの作成、利用可能なバケットの一覧表示、さらに作成したバケットの削除を行うことができます。

このステップでは、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. コマンド] に、「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 全般のリファレンス」を参照してください。

    注記

    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 で環境を削除する を参照してください。