この記事の目次
AWS SDK入門 GO言語で始めるAWS SDK

記事を読む上での前提知識
こちらの記事は、AWSに関しての一定の理解がある前提で話を進めます。AWSのアカウントの作り方や、ハンズオンパートで利用する予定のストレージサービスであるS3に関しての解説は省略いたします。 また、OSに関してはMacの利用を前提としております。Macのコマンドの使い方等の解説は省略いたしますので、予めご了承ください。 またこちらの記事で使用するGO言語のバージョンは、以下となっております。$ go version
go version go1.15.5 darwin/amd64
AWS SDKとは
AWS SDKとは、AWS側が提供している公式のSDK(Software Development Kit)になります。 自身で作成されたプログラムから、AWSのサービスを利用したい場合などに利用されます。SDKですので、自身のプログラムにSDKのライブラリを組み込んで使用することになります。 AWS SDKには、今回解説するGO言語以外にも様々な言語が対応しています。執筆時点ではC++, Java, JavaScript, .NET, Python, RubyなどのSDKが存在します。ご自身の得意な言語に合わせてSDKを選択できるのが、魅力的な点と言えるでしょう。GO言語とは?

GO言語での開発環境を構築しよう!
SDKを使う前には、GO言語のインストールや設定等が必要になります。すでにパソコンにインストール済みという方は、こちらのセクションを飛ばしていただいても構いません。GO言語のインストール
ターミナルを開いて、HomebresにてGOをインストールします。$ brew install go
インストールが完了したらバージョンを表示して、インストールが完了したかどうかをチェックします。
$ go version
go version go1.15.5 darwin/amd64
上記の通り表示されれば、問題ありません。
GO言語の環境設定
GOをインストールしただけでは、アプリの開発はできません。次に、重要な環境変数やパスの設定を行います。 ターミナルを開いて、以下のコマンドを実行してください。$ mkdir $HOME/go
$ cd $HOME/go
$ pwd
/Users/{yourname}/go
最終的にpwdでパスが表示されていれば問題ありません。{yourname}はご自身の環境によって変化しますので、注意してください。
次に環境変数の設定を行います。ターミナルで、以下の通り実行をしてみてください。
$ export GOPATH=/Users/{yourname}/go
$ echo $GOPATH
/Users/{yourname}/go
前のセクションと同じように、/Users/{yourname}/goが表示されれば問題ありません。
GOPATHとは
前のセクションでは、GOPATHを設定しました。こちらの環境変数は、非常に重要な意味合いを果たします。GOでライブラリをインストールする先が、こちらのパスになります。 今後、GOで開発を進めていく際には、go get というコマンドを利用することになりますが、そちらのgo getで取得したソースコードの格納先がGOPATHになります。SDKを用いたサンプルアプリケーションの実装
今回は、S3のバケットのリストを取得する簡単なアプリケーションを作成します。AWSのアカウントは保持しているという前提で話をしますので、作成されていない方は事前に作成をお願いします。IAMの認証情報の設定
AWSのIAMからAPIのアクセスキーとシークレットを取得して、ローカル環境に認証情報を記載します。また、デフォルトのリージョン(今回の例ではap-northeast-1)も合わせて記載します。$ vim ~/.aws/credentials
[default]
aws_access_key_id = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
region = ap-northeast-1
xxxxxの部分は取得した値を記載してください。使用するIAMに関しては、必ずS3の参照権限を付与しておいてください。
S3でのバケットの作成
S3にてバケットが作成されていない場合は、AWSのコンソール上で、任意のバケットを作成してください。バケットの数は何個でも構いません。今回はバケットの一覧を表示するだけなので、わかりやすいバケットの名前にしておいてください。ライブラリのインストール
任意のディレクトリで、以下のコマンドを実行してください。今回は、2つのライブラリをgo getします。go get github.com/aws/aws-sdk-go/service/s3
go get github.com/aws/aws-sdk-go/aws/session
次に以下のコマンドを実行して、ファイル等が表示されれば、正しくgo getでライブラリがインストールできた証拠となります。
ls -al $HOME/go/src/github.com/aws/aws-sdk-go/service/s3
ls -al $HOME/go/src/github.com/aws/aws-sdk-go/aws/session
SDKを利用したサンプルアプリの実装
GOPATH配下に作業ディレクトリを用意して、アプリケーションの実装を行います。 今回はエラー処理等は考慮しておりません。最低限SDKが利用できるアプリを目指します。$ mkdir $GOPATH/gosdksample
$ cd $GOPATH/gosdksample
$ vim main.go
func main() {
svc := s3.New(session.New())
input := &s3.ListBucketsInput{}
result, _ := svc.ListBuckets(input)
fmt.Println(result)
}
では、go runコマンドで実行してみましょう。
$ go run main.go
{
Buckets: [{
CreationDate: 2020-09-15 06:07:33 +0000 UTC,
Name: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},{
CreationDate: 2020-05-08 12:39:56 +0000 UTC,
Name: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}],
Owner: {
DisplayName: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
ID: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
上記の通り、バケットの一覧が表示されれば、正しく動作している証拠です。
ローカルからSDKを通じてS3の情報が取得できています。