CloudWatch Logs代理不能承担将日志发送到其他帐户的角色

时间:2017-04-15 09:50:52

标签: amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs

我有2个AWS账户。

  • 帐户A:来自亚马逊的awslogs客户端的EC2实例
  • 帐户B :集中记录帐户

我想将来自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中对凭据进行硬编码?

1 个答案:

答案 0 :(得分:1)

这种方法存在两个问题。

首先,没有任何内容在帐户B中的角色上调用AssumeRole .CloudWatch Logs代理需要凭据,而不是角色。

其次,帐户A中的实例配置文件无法为帐户B分配权限。

我也找不到任何文档来说明如何在您提到的awscli.conf文件中插入凭据(可以展示样本)吗?

有两种选择:

  • 在帐户B中创建用户并将生成的访问/密钥提供给CloudWatch Logs代理(如您似乎已经完成但不喜欢)或
  • 在针对帐户B中的角色调用AssumeRole的实例上运行流程,然后将这些凭据提供给CloudWatch Logs代理

如果您订阅了AWS Support,请打开支持案例以请求指导。