AWS SDK for Go の開始方法
AWS SDK for Go を使用するには、Go 1.23 以上のバージョンが必要です。次のコマンドを実行することで、Go の現在のバージョンを確認できます。
go version
Go のインストールやアップグレードの方法については、Go のドキュメントの「Download and install
Amazon アカウントを取得する
AWS SDK for Go v2 を使用するには、Amazon アカウントが必要です。詳細については、「AWS アカウントを作成する」を参照してください。
AWS SDK for Go v2 をインストールする
AWS SDK for Go v2 は Go モジュールを使用します。これは Go 1.11 で導入された機能です。次の Go コマンドを実行してローカルプロジェクトを初期化します。
go mod init example
Go モジュールプロジェクトを初期化した後、go get コマンドを使用して SDK とその必要な依存関係を取得できるようになります。これらの依存関係は、前のコマンドで作成された go.mod ファイルに記録されます。
次のコマンドは、アプリケーションで使用する標準的な SDK モジュール群の取得方法を示しています。
go get github.com/aws/aws-sdk-go-v2 go get github.com/aws/aws-sdk-go-v2/config
これにより、コア SDK モジュールと、AWS 共有設定のロードに使用される設定モジュールが取得されます。
次に、アプリケーションに必要な 1 つ以上の AWS サービス API クライアントをインストールできます。すべての API クライアントは github.com/aws/aws-sdk-go-v2/service インポート階層下にあります。現在サポートされている API クライアントの一覧はこちらgo.mod ファイルに記録します。この例では、Amazon S3 API クライアントを取得します。
go get github.com/aws/aws-sdk-go-v2/service/s3
AWS アクセスキーを取得する
アクセスキーはアクセスキー ID とシークレットアクセスキーから成り、AWS に対するプログラムによるリクエストに署名するときに使用されます。アクセスキーがない場合は、AWS マネジメントコンソール
注記
アクセスキーを作成するには、必要な IAM アクションを実行するためのアクセス許可が必要です。詳細については、「IAM ユーザーガイド」の「IAM リソースにアクセスするために必要なアクセス許可」を参照してください。
アクセスキー ID とシークレットアクセスキーを取得するには:
-
[IAM コンソール]
を開きます。 -
ナビゲーションメニューで [ユーザー] を選択します。
-
IAM ユーザー名 (チェックボックスではありません) を選択します。
-
[認証情報] タブを開き、次に [アクセスキーの作成] を選択します。
-
新しいアクセスキーを表示するには、[表示] を選択します。認証情報は次のようになります。
-
アクセスキー ID:
AKIAIOSFODNN7EXAMPLE -
シークレットアクセスキー:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
-
-
キーペアをダウンロードするには、[Download .csv file.csv (.csv ファイルのダウンロード)] を選択します。このキーは安全な場所に保存してください。
警告
AWS アカウントを保護するために、これらのキーは厳重に管理し、組織外の誰とも共有しないでください。
関連トピック
-
「IAM ユーザーガイド」の「IAM とは」。
-
「Amazon Web Services 全般的なリファレンス」の「AWS セキュリティの認証情報」。
オペレーションを呼び出す
SDK をインストールした後、Go アプリケーションに AWS パッケージをインポートすることで SDK を使用できます。次の例では、AWS、Config、および Amazon S3 ライブラリをインポートしています。SDK パッケージをインポートした後、AWS SDK の共有設定がロードされ、クライアントが作成されて、API オペレーションが呼び出されます。
package main import ( "context" "log" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" ) func main() { // Load the Shared AWS Configuration (~/.aws/config) cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { log.Fatal(err) } // Create an Amazon S3 service client client := s3.NewFromConfig(cfg) // Get the first page of results for ListObjectsV2 for a bucket output, err := client.ListObjectsV2(context.TODO(), &s3.ListObjectsV2Input{ Bucket: aws.String("amzn-s3-demo-bucket"), }) if err != nil { log.Fatal(err) } log.Println("first page results") for _, object := range output.Contents { log.Printf("key=%s size=%d", aws.ToString(object.Key), *object.Size) } }