2

我正在尝试在连接有IAM角色的RedHat实例上使用CloudWatch日志代理。该角色可以完全访问CloudWatch。CloudWatch代理无法识别IAM角色的存在

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

即使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日志代理无法找到并使用IAM角色呢?

+0

安装代理时,您是否在提示输入凭据时按ENTER? '如果使用IAM角色,请按Enter键。否则,输入您的AWS访问密钥ID。' – helloV

+0

检查'/ var/awslogs/etc/aws.conf'。如果它包含'aws_access_key_id'和'aws_secret_access_key'的条目,请删除它们,然后重新启动代理。 – helloV

+0

当它询问访问和密钥时,我按下Enter键。 '/ var/awslogs/etc/aws.conf'不包含'aws_access_key_id'或'aws_secret_access_key'。为了清晰起见,编辑了OP。 – jcgrowley

回答

1

因此,在我的头撞墙后,我终于弄清楚我的问题是什么。我正在使用代理来启用CloudWatch代理与CloudWatch进行通信,并且我忘记将NO_PROXY=169.254.169.254添加到/var/awslogs/etc/proxy.conf。所以当代理试图查询元数据以获取关于IAM角色的信息时,它试图通过代理来获取它。一旦我添加了NO_PROXY,它工作得很好。

+0

这也解决了我的问题。谢谢 ! – bluemalkin