CloudWatch 代理无法识别 IAM 角色的存在
CloudWatch agent doesn't recognize presence of IAM Role
我正在尝试在附加了 IAM 角色的 RedHat 实例上使用 CloudWatch 日志代理。该角色具有对 CloudWatch 的完全访问权限。我使用此处的说明安装并设置了代理:
即使 IAM 角色明确附加到实例,我仍然在 /var/log/awslogs.log 中看到此消息:
NoCredentialsError: Unable to locate credentials
当我 运行 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
这里是/var/awslogs/etc/aws.conf
的内容。
[plugins]
cwlogs = cwlogs
[default]
region = us-east-1
那么,为什么 CloudWatch Logs 代理无法找到并使用 IAM 角色?
所以在我的头撞墙之后,我终于弄清楚了我的问题是什么。我正在使用代理使 CloudWatch 代理能够与 CloudWatch 通信,但我忘记将 NO_PROXY=169.254.169.254
添加到 /var/awslogs/etc/proxy.conf
。因此,当代理尝试查询元数据以获取有关 IAM 角色的信息时,它会尝试通过代理来获取它。一旦我添加了 NO_PROXY,它工作正常。
我正在尝试在附加了 IAM 角色的 RedHat 实例上使用 CloudWatch 日志代理。该角色具有对 CloudWatch 的完全访问权限。我使用此处的说明安装并设置了代理:
即使 IAM 角色明确附加到实例,我仍然在 /var/log/awslogs.log 中看到此消息:
NoCredentialsError: Unable to locate credentials
当我 运行 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
这里是/var/awslogs/etc/aws.conf
的内容。
[plugins]
cwlogs = cwlogs
[default]
region = us-east-1
那么,为什么 CloudWatch Logs 代理无法找到并使用 IAM 角色?
所以在我的头撞墙之后,我终于弄清楚了我的问题是什么。我正在使用代理使 CloudWatch 代理能够与 CloudWatch 通信,但我忘记将 NO_PROXY=169.254.169.254
添加到 /var/awslogs/etc/proxy.conf
。因此,当代理尝试查询元数据以获取有关 IAM 角色的信息时,它会尝试通过代理来获取它。一旦我添加了 NO_PROXY,它工作正常。