前提
EC2からDynamoDBへIAMロール情報を使って認証しようと試みる(AWS SDK for PHP)
IAM認証が働かない
ソースコード内でアクセスキー/シークレットキーを明記しなかったので、IAMロール情報を使ってくれる、と思いきやその前にcredentialsファイルを勝手に読みに行く。credentialsファイルに書かれたアクセスキー/シークレットキーを使って認証を試みるので認証に失敗する。
解決策
環境変数AWS_PROFILEでアクセスキー/シークレットキーの記載のないプロファイルを指定する。
(credentialsファイルを読めないようにしてもいいけど)
※最初はdefaultを勝手に読んでる??
まとめ
関係のないアクセスキー/シークレットキーが、IAMロール認証を邪魔している事がある
参考
より詳細な認証順番は公式のドキュメント見てください。credentialsより早く探される認証情報もあります。(ちなみにIAMロール情報は最後に検索される)
https://docs.aws.amazon.com/ja_jp/sdk-for-java/v1/developer-guide/credentials.html