2021/07/8

GO言語であるAWSのSDKの使い方をサンプルコードで学ぼう!

 
  

AWS SDK入門 GO言語で始めるAWS SDK

こちらの記事では、AWS SDK for Goを使ったハンズオンを行う内容になります。 まず、AWS SDK及びGO言語に関して簡単に概要を説明した後、実際にAWS SDKをパソコンにインストールして、SDKを通じてAWSのマネージドサービスを操作していきます。 AWS SDKやGO言語に関しての知識がゼロの方にもわかりやすいように解説しておりますので、ぜひ記事を読んで理解を深めてください。

記事を読む上での前提知識

こちらの記事は、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言語は、名前からも想像できる通り、Googleによって開発されたプログラミング言語になります。比較的新しい言語であり、2012年にリリースされた言語です。 開発のコンセプトとしては、シンプルな記載による可読性の高さ・高速な処理が可能に・大規模サービスに利用しやすいようになどが挙げられます。 JavaやCのようにコンパイルを必要とする言語であり、静的型付け・型推論などが実装されています。 マイクロサービスの用途としてもニーズが非常に高く、日本国内ではWeb系自社開発企業がRubyで書かれたアプリケーションを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の情報が取得できています。

AWS SDK for Goを活用しましょう!

これにて本記事は終了となります。今回はS3の情報を取得する機能を使用しましたが、S3以外にも多くの機能をSDKを通じて利用可能です。 現在、多くのアプリケーションは、AWSのマネージドサービスと連携が必要であると言えます。その際に、ぜひSDKを活用して実装を行いましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】