Open10

AWS+MFAのCLIツールを作ってみる

どんぎどんぎ

config、credentialsの編集に使えそう

https://ini.unknwon.io/

To create a new key:
err := cfg.Section("").NewKey("name", "value")

https://ini.unknwon.io/docs/howto/work_with_keys


読み込みだけaws-sdk-go-v2、書き込みはiniにしてしまうと煩雑化しそうなので、

  • config、credentialsの読み込み〜更新は「ini」に任す
  • 読み込んだ値をaws-sdk-go-v2に渡して、セッション取得

の流れにしたい

↑環境変数によるcredentialsの上書きの挙動を考慮すると、読み込みを独自で実装するとユーザーを混乱させてしまいそう

Environment Variables
By default, the SDK detects AWS credentials set in your environment and uses them to sign requests to > > AWS. That way you don’t need to manage credentials in your applications.

The SDK looks for credentials in the following environment variables:

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN (optional)

  • config、credentialsの読み込み: aws-sdk-go-v2
  • config、credentialsファイルの更新のみ: ini

がよさそう

aws-sdk-go-v2だと、configに記載したsource_profileの値が読み取りづらいなどなど、問題が山積していたので、

  • 環境変数の考慮必要な場合のconfig、credentialsの読み込み: aws-sdk-go-v2
  • 環境変数の考慮不要 or aws-sdk-go-v2だと読めないプロパティの場合のconfig、credentialsの読み込み:ini
  • config、credentialsファイルの更新: ini

でいく

どんぎどんぎ

Cobra使うんだったら、Viper使おうと思ったが、ini形式は明示的に非対応だった...

どんぎどんぎ

CobraをTeastableにする

https://qiita.com/tkit/items/3cdeafcde2bd98612428


途中に出てくる「コマンド出力結果のテスト」はやれるようにしたほうがよさそう
k8sでも同様の手法をとっているらしい

kubernetesのapplyコマンド↓
https://github.com/kubernetes/kubernetes/blob/v1.8.0/pkg/kubectl/cmd/apply.go

出力結果を標準とERROR出力に分けるのは、cobra v1.1.3だとライブラリに取り込まれ済みの模様