【问题标题】:AWS: Authentication issues trying to push metrics to CloudWatch from EC2AWS:尝试将指标从 EC2 推送到 CloudWatch 的身份验证问题
【发布时间】:2017-12-03 06:05:39
【问题描述】:

我正在尝试设置一个 EC2 (RHEL7) 实例,以使用http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html 中所述的 perl 脚本将指标推送到 cloudwatch

我收到一条 HTTP 状态 400 消息“请求中包含的安全令牌无效”

实例配置文件与附加了以下策略的实例相关联:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeTags"
            ],
            "Resource": "*"
        }
    ]
}

我正在从实例元数据中提取 AWSAccessKeyIdAWSSecretKey,如下所示:

ROLE=$(curl http://169.254.169.254/latest/meta-data/iam/security-credentials/)
CRED=$(curl http://169.254.169.254/latest/meta-data/iam/security-credentials/$ROLE)

AWSAccessKeyId=$(sed '/AccessKeyId/!d; s/.*:\ \+"\(.\+\)",/\1/g' <<< "$CRED")
AWSSecretKey=$(sed '/SecretAccessKey/!d; s/.*:\ \+"\(.\+\)",/\1/g' <<< "$CRED")

...当我检查它们时,上述变量中​​设置的值是正确的...

我正在运行脚本以按如下方式推送到 cloudwatch(使用存储在上面的变量中的凭据):

./mon-put-instance-data.pl --mem-util --verbose --aws-access-key-id  $AWSAccessKeyId --aws-secret-key $AWSSecretKey

任何想法为什么拒绝我的凭据?

提前致谢

【问题讨论】:

  • 您使用的是 IAM 角色吗?如果是这样,您不需要凭据,它会为您处理

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


【解决方案1】:

如果您使用 IAM 配置文件,则无需输入脚本调用的凭证。从您的通话中删除访问密钥和密钥。

./mon-put-instance-data.pl --mem-util --verbose

【讨论】:

    【解决方案2】:

    是的。您说的都对 - 如果您不指定并且似乎有效,它会自动获取角色凭据。

    不知道为什么它不能通过手动设置凭据来工作,但我可以查看 perl 脚本来相当容易地解决这个问题。

    感谢您的帮助。

    【讨论】:

      【解决方案3】:

      来自documentation

      以下示例假定您提供了 IAM 角色或 awscreds.conf 文件。否则,您必须为这些命令使用 --aws-access-key-id 和 --aws-secret-key 参数提供凭据。

      出现错误时的一个选项:

      错误:调用 CloudWatch 失败:HTTP 400。消息:请求中包含的安全令牌无效。

      脚本使用配置文件(例如使用错误的凭据):

      aws-scripts-mon/awscreds.conf
      

      因此,必须提供 IAM 角色或 awscreds.conf--aws* 参数。 并且 IAM 角色有正确的permissions:

      cloudwatch:PutMetricData
      cloudwatch:GetMetricStatistics
      cloudwatch:ListMetrics
      ec2:DescribeTags
      

      【讨论】:

        猜你喜欢
        • 2021-11-22
        • 2011-01-22
        • 2011-06-04
        • 2022-01-25
        • 1970-01-01
        • 2020-11-09
        • 2019-11-20
        • 2012-11-05
        • 2021-04-16
        相关资源
        最近更新 更多