CloudWatch 代理无法识别 IAM 角色的存在

jcg*_*ley 5 amazon-web-services amazon-iam amazon-cloudwatch amazon-cloudwatchlogs

我正在尝试在附加了 IAM 角色的 RedHat 实例上使用 CloudWatch 日志代理。该角色具有对 CloudWatch 的完全访问权限。我使用此处的说明安装并设置了代理:

http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html#running-ec2-step-2

即使 IAM 角色肯定附加到实例,我仍然在 /var/log/awslogs.log 中看到此消息:

NoCredentialsError:无法找到凭据

当我运行时aws configure list,我可以看到 IAM 角色的详细信息。

  Name                    Value             Type           Location
  ----                    -----             ----           --------
 profile                <not set>           None           None
 access_key     ********************        iam-role
 secret_key     ********************        iam-role
 region                us-east-1            config-file    ~/.aws/config
Run Code Online (Sandbox Code Playgroud)

这里是内容/var/awslogs/etc/aws.conf

 [plugins]
 cwlogs = cwlogs
 [default]
 region = us-east-1
Run Code Online (Sandbox Code Playgroud)

那么为什么 CloudWatch 日志代理无法找到并使用 IAM 角色呢?

jcg*_*ley 4

因此,经过多次用头撞墙后,我终于弄清楚了我的问题所在。我正在使用代理来使 CloudWatch 代理能够与 CloudWatch 进行通信,但我忘记添加NO_PROXY=169.254.169.254/var/awslogs/etc/proxy.conf. 因此,当代理尝试查询元数据以获取有关 IAM 角色的信息时,它会尝试通过代理来获取它。一旦我添加了 NO_PROXY,它就工作得很好。