aws-sdk-go の変更に対応した話 その2 #aws #golang #jawsug

寒い時期に↓なツールを作り

uchimanajet7.hatenablog.com

春の時期に↓な変更に対応してみたのですが

uchimanajet7.hatenablog.com

その後さらに↓のような発表がありました

Developer Preview of AWS SDK for Go is Now Available | AWS Official Blog

https://aws.amazon.com/jp/blogs/aws/developer-preview-of-aws-sdk-for-go-is-now-available/

ついに AWS公式のDeveloper Preview 版のリリースとなりました!これに伴いリポジトリもawslabs/aws-sdk-goから↓に変更になっています

github.com

正式リリースに向けて修正・追加が活発に行われているので今後も楽しみです!

ですが・・・当然ながら色々と変更しないとビルドが通らないので今回も修正していきます

今回の変更は以下の部分になります

github.com

まず単純な置き換えからスタートで、awslabsではなくなったのでimport文を修正するところから

import (
  "github.com/aws/aws-sdk-go/aws"
  "github.com/aws/aws-sdk-go/service/rds"
)

今回の変更で一番影響が出たのが  credential 周りの変更ですね。今までは

aws-sdk-go/aws

に aws.Creds や aws.DetectCreds などがありましたが、今回からは

aws-sdk-go/aws/credentials

という形に分離され、 DetectCreds のような便利メソッドは無くなってる感じ

Package: credentials — AWS SDK for Go

http://docs.aws.amazon.com/sdk-for-go/api/aws/credentials.html

当然便利だったので使ってたりしたので、この部分を修正することに。DetectCreds は

  1. input variable
  2. Environment variable
  3. /.aws/credentials
  4. IAM Role

の順で評価して credential 情報がOKなところでいい感じに値が戻ってきたのですが、よくよく考えると確かに /.aws/credentials ファイルの情報をプロファイル指定なしで利用するのはマズイ気がしますね・・・なので今回の修正では

  1. input variable
  2. Environment variable
  3. IAM Role

/.aws/credentials ファイルの情報を利用しないこととして、上記の順で評価していくように変更を加えた

github.com

rds-try/config/config.go 中の GetAWSCreds() で処理を行っている

番外編

これで今回の aws-sdk-go の変更に対応分は終わりなのだが、設定変更していないにも関わらず何故か travis ci でのテストが上手く通らず・・・失敗しているのは golint の部分で当然何の変更もなし

uchimanajet7.hatenablog.com  

色々悩んで travis.yml を何回もコミットして試すがいい感じにならず・・・ci 試すためにコミットって微妙だなーと感じたんですが、こういう場合はどうするのが正解なんでしょうかねぇ?

ブランチ切ってそっち側で色々試せばよかったなぁーと後から思ったりはしましたが・・・

で、どうにもならないので手元で golint をかけて見ると・・・出るじゃありませんか!エラーが!なんでだろうなぁ?と思ってたら

github.com

あーあーSQLって文字が対象に追加されてますねぇーなるほどなぁーと。チェックする側の更新っていうところに全然発想が行かなかったので良い経験になりました。

こちらもSql から SQL に変更して無事に travis ci でのテストが通過するようになりました。

github.com

そしてコミットメッセージをtypoしてるし・・・

新しいサービスも続々追加されているのでそれに対応した状態でのaws-sdk-go の正式リリースが楽しみですね!

 

以上