AWS CloudWatch 代理不使用附加到 EC2 实例的 IAM 角色

问题描述 投票:0回答:1

我目前正在 EC2 内运行的 Docker 容器上设置 CloudWatch 代理。但是,当我开始运行它时,我收到此错误:在

/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
文件中

E!无法从会话获取凭证:SharedCredsLoad:无法加载共享凭证文件

原因:FailedRead:无法打开文件

原因:打开/root/.aws/credentials:没有这样的文件或目录

当我手动创建此文件并向其添加访问密钥时,日志工作正常,但问题是它应该使用附加到实例的 IAM 角色,而不是查找凭证文件(因为 EC2 是通过管道自动部署的堆栈,我不想在任何地方发布访问密钥)。

通过谷歌搜索,我发现当相关 IAM 角色没有必要的权限时经常会出现此问题,因此我尝试将它们添加到任务执行角色(当我这样做时出现的角色

curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
) 。也就是说,我尝试添加
AmazonSSMManagedInstanceCore
CloudWatchAgentAdminPolicy
CloudWatchAgentServerPolicy
无济于事。我还尝试添加包含
ec2:DescribeTags
权限的策略。

有谁知道可能会发生什么/我可以尝试其他什么方法吗?

amazon-web-services amazon-ec2 amazon-cloudwatch
1个回答
0
投票

EC2实例上运行的容器没有自动访问IAM角色的权限。您必须在容器中创建

/root/.aws/credentials
(或与主机共享)。

© www.soinside.com 2019 - 2024. All rights reserved.