我有一个混合环境,已安装同时使用 AWS Systems Manager Agent(SSM Agent)和统一 Amazon CloudWatch Agent 的本地服务器。如何将我的本地服务器配置为仅使用临时凭证?
解决方法
**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
可将统一 CloudWatch Agent 安装到本地主机,以改善性能监控。您可以指定写入配置文件的 AWS Identity and Access Management(AWS IAM)凭证来实现此操作。
但是,对于某些应用场景,可能需要轮换使用未保存到本地文件的凭证,以提高安全性。
在这种更安全的部署场景中,SSM Agent 允许本地主机担任 IAM 角色。然后,可以将统一 CloudWatch Agent 配置为使用此 IAM 角色,向 CloudWatch 发布指标和日志。
要将您的本地服务器配置为仅使用临时凭证,请执行以下操作:
1. 将本地主机与 AWS System Manager 集成。
2. 将 AWS 托管式 IAM CloudWatchAgentServerPolicy 附加到混合环境的 IAM 服务角色。现在,统一 CloudWatch Agent 将有权向 CloudWatch 发布指标和日志。
3. 安装或更新 AWS CLI。
4. 确认 IAM 角色已附加到本地主机:
$ aws sts get-caller-identity
{
"UserId": "AROAJXQ3RVCBOTUDZ2AWM:mi-070c8d5758243078f",
"Account": "123456789012",
"Arn": "arn:aws:sts::123456789012:assumed-role/SSMServiceRole/mi-070c8d5758243078f"
}
5. 安装统一 CloudWatch Agent。
6. 将 common-config.toml 文件更新为:
- 指向 SSM Agent 生成的凭证
- 设置代理配置(如果适用)
**注意:**SSM Agent 每 30 分钟刷新一次这些凭证。
Linux:
/opt/aws/amazon-cloudwatch-agent/etc/common-config.toml
/etc/amazon/amazon-cloudwatch-agent/common-config.toml
[credentials]
shared_credential_profile = "default"
shared_credential_file = "/root/.aws/credentials"
Windows:
$Env:ProgramData\Amazon\AmazonCloudWatchAgent\common-config.toml
[credentials]
shared_credential_profile = "default"
shared_credential_file = "C:\\Windows\\System32\\config\\systemprofile\\.aws\\credentials"
7. 选择统一 CloudWatch Agent 指标将发布到的 AWS 区域。
8. 在第 5 步中 SSM Agent 引用的凭证文件中添加该区域。这对应于与 shared_credential_file 关联的文件。
$ cat /root/.aws/config
[default]
region = "eu-west-1"
**注意:**请务必将 eu-west-1 替换为您的目标区域。
9. 根据您的主机操作系统,您可能需要更新权限,才能允许统一 CloudWatch Agent 读取 SSM Agent 凭证文件。Windows 主机以系统用户身份运行这两种代理,无需进一步操作。
对于 Linux 主机,统一 CloudWatch Agent 默认以根用户身份运行。使用 run_as_user 选项,可以将统一 CloudWatch Agent 配置为以非特权用户身份运行。使用此选项时,您必须授予统一 CloudWatch Agent 对凭证文件的访问权限。
10. (仅限 Windows)将统一 CloudWatch Agent 服务的启动类型更改为 Automatic (Delayed)(自动 [延迟])。在启动期间,这将在 SSM Agent 服务之后启动统一 CloudWatch Agent 服务。
相关信息
为混合环境设置 AWS Systems Manager
在本地服务器上下载 CloudWatch Agent
安装与配置统一 CloudWatch Agent,以便从 EC2 实例将指标和日志推送到 CloudWatch