我有2个AWS账户。
我想将来自EC2实例的日志与awslogs客户端(帐户A 中的)从一个帐户发送到另一个帐户中的CloudWatch Logs(帐户B )。
通过在帐户B中创建IAM用户并在awscli.conf
中设置AWS凭证密钥,它可以正常工作,但我不希望密钥被硬编码,因此我尝试按以下方式承担角色:< / p>
帐户B中的IAM角色(CloudWatch帐户),我创建了一个角色名CloudWatchCrossRole
:
内联策略(允许此角色将日志写入CloudWatch Logs):
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
信托政策:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_A:role/CLoudWatchInstanceProfile"
},
"Action": "sts:AssumeRole"
}
]
}
在帐户A中,我启动了一个配置文件CLoudWatchInstanceProfile
的EC2实例,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::ACCOUNT_B:role/CloudWatchCrossRole"
}
]
}
没有快乐,日志被推送到ACCOUNT_A而不是ACCOUNT_B。任何人都可以提示我是否可以在CloudWatch Logs上使用AssumeRole,或者是否必须创建IAM用户并在awscli.conf
中对凭据进行硬编码?
答案 0 :(得分:1)
这种方法存在两个问题。
首先,没有任何内容在帐户B中的角色上调用AssumeRole
.CloudWatch Logs代理需要凭据,而不是角色。
其次,帐户A中的实例配置文件无法为帐户B分配权限。
我也找不到任何文档来说明如何在您提到的awscli.conf
文件中插入凭据(可以展示样本)吗?
有两种选择:
AssumeRole
的实例上运行流程,然后将这些凭据提供给CloudWatch Logs代理如果您订阅了AWS Support,请打开支持案例以请求指导。