miive プロダクトブログ

miiveのプロダクトチームのブログです。

aws login が miive の開発で使えるかどうか検証する

miiveでエンジニアのsato-shinです。 組織の人数が一気に増え、入社ワークフローの自動化を本格的に取り組まねばと思う今日この頃です。

aws login について

2025年11月19日にawscliにloginコマンドが爆誕しました🚀
https://aws.amazon.com/jp/blogs/security/simplified-developer-access-to-aws-with-aws-login/

これによりAWS CLIAWS SDKsを利用する際の認証情報の取得が簡単かつ安全になりました。

利用方法はとても簡単で $ aws login をすると、ブラウザが開くのでぽちぽちするだけです。
なお、 awscli v2.32.0 以降 が必要ですので、あらかじめawscliのアップデートはかけておきます。

aws loginが成功すると AWS CLIの各種コマンドで権限の範囲内で情報を取得できるようになります。

miiveでの課題

miiveではAWSの一時的な認証情報をsaml2awsを利用して取得しています。IDPにはgoogle workspaceを利用しています。
チーム内でsaml2awsでの認証時にMFAが不安定だったり、手数が多く面倒という声がありました。
saml2awsの脱却は前々から考えて調査はしていたのですが、良い代替方法が見つからず放置していたところに
aws login がやってきてテンションが上がったため実験してみました。

AWS SDK からAWSのリソースにアクセスしてみる

miiveではgoを使っているのでAWS SDK for Go v2を使ってS3の情報を取得してみます。
AIにプログラムを作らせて $ go run main.go をしてみます。

failed to list buckets: not found, ResolveEndpointV2

なるほど、なるほど。AWS SDK for Go v2のバージョンが古かったようです。
https://github.com/aws/aws-sdk-go-v2/releases/tag/release-2025-11-19.2
このリリース以降でaws loginで発行された認証情報の形式をサポートしているようなので、AWS SDKを最新版にアップデートします。

AWS SDKのアップデート後、再度 $ go run main.go を実行すると無事にS3の情報を取得できるようになりました🎉

docker上で実行してみる

docker上で実行すると問題が発生するかどうか確認していきます。
実行してみると以下のエラーに遭遇しました。

failed to list buckets: operation error S3: ListBuckets, get identity: get credentials: failed to refresh cached credentials, save token: open /root/.aws/login/cache/xxx.json: read-only file system

AWS CLIAWS SDKではrefreshTokenを利用して自動的に認証情報を更新しています。
なので、~/.aws/login へdockerから更新ができるようにパーミッションを与える必要があります。
aws login で取得した認証情報の中身を確認すると、expiresAtが発行から15分で、refreshTokenの項目が確認できます)

Dockerへマウントしている .aws ディレクトリへ書き込み権限を与えて再度実行したところ、認証情報が更新されS3の情報を取得することができました。

まとめ

最小サンプルを作ってみることで、aws loginによりsaml2awsから脱却できそうな未来は見えてきました。
実際にmiive開発環境で利用開始できたら、また筆をとろうと思います。
今回利用したコードはGitHubにおいてありますので、よかったら参考にしてみてください。
https://github.com/sato-shin/aws-login-test

we are hiring!

miiveはWe Work 新宿を拠点にしており、気軽に仕事や働き方を語れる「miive bar」を定期的に開催中です。
miiveについて気になった方はぜひご連絡ください!

miive.notion.site