amazon linuxでamazon-ssm-agentのNoCredentialProvidersエラーが出ている。

ssmを使おうと思って来た方はなんの役にも立たないので注意

amazon linuxで立てたサーバーのログを見ていたら。

[root@admin ~]# ll -h /var/log/amazon/ssm/
合計 96M
-rw------- 1 root root  26M  6月  4 14:50 amazon-ssm-agent.log
-rw------- 1 root root  29M  5月  2 19:10 amazon-ssm-agent.log.1
-rw------- 1 root root 3.4M  6月  4 14:50 errors.log
-rw------- 1 root root 9.6M  4月 11 13:25 errors.log.1
-rw------- 1 root root 9.6M  4月 27 16:15 errors.log.2
-rw------- 1 root root 9.6M  5月 13 18:59 errors.log.3
-rw------- 1 root root 9.6M  5月 29 21:45 errors.log.4

なんかエラーがわらわら出ていた。 中身を見るとこんな感じ

[HealthCheck] error when calling AWS APIs. error details - NoCredentialProviders: no valid providers in chain. Deprecated.
    For verbose messaging see aws.Config.CredentialsChainVerboseErrors

Credentialsが無いぞと怒っているのかと思い確認してみるも存在はしている。

[ec2-user@ ~]$ ll .aws/
合計 4
-rw-rw-r-- 1 ec2-user ec2-user 116  6月  4 14:34 credentials

中身も問題なさそう。(というかこれ必須ならデフォルト自動起動としておくなよと思うのだけれど) 調べると、インスタンスにEC2 Systems Manager APIとの通信ができるようにロールを関連付けろと。

とりあえず、フルアクセス権限のロールを上げたらエラーは消えた。

が、そもそもこのサーバーssmの機能を使ってない

ので、OFFった。

systemctl stop amazon-ssm-agent.service 
systemctl disable amazon-ssm-agent.service 

まぁ、なんの解決にもなっていない

でも、デフォルトONになっているのに設定しないとエラーを吐き続けるというのはどうなのだろうか。

使う場合にはちゃんと適切なIAMに適切なロールを与えてあげれば動くはず。