附加的附加 IAM 角色与指定的 IAM 凭证和 AWS 区域冲突

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

我在美国东部(弗吉尼亚北部)的 us-east-1 有一个 EC2 实例。 EC2 实例附加了一个 IAM 角色(us-east-1 区域),该角色有权运行 codedeploy。现在您需要运行 CloudWatch 日志代理和 codedeploy 代理。 CloudWatch日志代理将日志上传到us-gov-West-1的cloudwatch。它需要配置 AWS CLI 凭证。修改“/root/.aws/credentials”文件以指定IAM凭证和AWS区域(us-gov-West-1),但 codedeploy 代理需要删除“/root/.aws/credentials”文件才能连接到控制台的codedeploy进行部署。我该如何解决这个冲突?

我删除了“/root/.aws/credentials”文件,codedeploy代理可以连接到codedeploy控制台进行部署,但是cloudwatch日志代理无法将日志上传到cloudwatch日志组,我在“/root/. aws/credentials”文件配置可以将日志上传到cloudwatch的凭证中,但是codedeploy无法连接到控制台进行部署。

我也配置了多个凭证,但是codedeploy代理会出现冲突,无法连接到codedeploy

如何配置才能使codedeploy代理和cloudwatch日志代理正常工作?

amazon-ec2 aws-cli amazon-cloudwatch aws-code-deploy
1个回答
0
投票

要解决 CloudWatch 日志代理和 CodeDeploy 代理使用的 AWS CLI 凭证之间的冲突,您可以使用以下方法:

IAM 角色和政策:

确保您的 EC2 实例具有适当的 IAM 角色,并附加了 CloudWatch Logs 和 CodeDeploy 的权限。此 IAM 角色应与 us-east-1 区域中的 EC2 实例关联。 AWS CLI 配置:

由于 EC2 实例位于 us-east-1 区域,因此 /root/.aws/credentials 中的默认 AWS CLI 配置应具有该区域中 IAM 角色的凭证。不应删除此文件,因为 CodeDeploy 代理依赖于它。 使用 CloudWatch Logs 的 AWS CLI 环境变量:

考虑使用环境变量专门为 CloudWatch 日志代理设置凭证,而不是在 /root/.aws/credentials 文件中配置 AWS CLI 凭证。这样,您就可以仅在需要时为 us-gov-West-1 区域设置临时凭据。

export AWS_ACCESS_KEY_ID=your_cloudwatch_access_key_id
export AWS_SECRET_ACCESS_KEY=your_cloudwatch_secret_access_key
export AWS_DEFAULT_REGION=us-gov-west-1

仅当您运行 CloudWatch 日志代理时才使用这些环境变量。上传日志后,取消设置这些变量以恢复为默认凭据。

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_DEFAULT_REGION

IAM 角色和跨账户角色(可选):

如果 CloudWatch 日志代理在不同 AWS 账户中的 EC2 实例上运行(假设跨账户场景),您可能需要设置具有适当信任关系的跨账户 IAM 角色,以允许 CloudWatch 日志代理承担CloudWatch 日志组所在账户中的角色。

确保与 us-east-1 中的 EC2 实例关联的 IAM 角色具有必要的信任关系,使其能够承担 us-gov-West-1 中的角色。

通过使用 CloudWatch 日志代理的环境变量,您可以将用于 CloudWatch 的凭据与 CodeDeploy 代理使用的默认凭据隔离。这应该有助于避免两个代理之间的冲突。处理凭证时始终确保遵循安全最佳实践。

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