使用AWS CLI - 错误的凭据错误

时间:2015-12-31 02:14:15

标签: amazon-web-services amazon-ec2 aws-sdk aws-cli

我正在尝试使用我的AWS EC2实例中的mon-put-data设置一些自定义CloudWatch指标。根据我正确使用它的文档。

mon-put-data --namespace Layer --metric-name ResponseTime --dimensions "app=AppName" --value 2

然而,当我运行它时,我收到以下错误:

mon-put-data: Malformed input-Bad credentials in file: /user/.aws/credentials [keyId: null | secretKey null]

凭据文件的格式如下,并使用aws configure

自动生成
[default]
aws_access_key_id = KJHJKHJKHJKHJKHJKHJK
aws_secret_access_key = KHKJJKHJKHJKHJH123123kjhjkhjk12312

我还确认AWS_CREDENTIAL_FILE路径存在并且是正确的。此外,我已确认IAM用户可以完全访问CloudWatch和EC2。

有人可以告诉我我做错了吗?

2 个答案:

答案 0 :(得分:1)

我成功地使用了-I和-S选项。不太理想的是内联凭证,但现在可以使用。

mon-put-data -I <Key ID> -S <Secret Key> --namespace Layer --metric-name ResponseTime --dimensions "app=AppName" --value 2

显然,mon-put-data命令使用的凭证文件格式与AWS CLI.创建的格式不同。遗憾的是,文档中没有任何内容可以定义它,我找不到调试它的代码

答案 1 :(得分:1)

我最初误读了您的问题并认为您使用的是actual AWS CLI tool,它使用了您发布的INI风格格式:

Pattern.quote

但是,当您使用[default] aws_access_key_id = KJHJKHJKHJKHJKHJKHJK aws_secret_access_key = KHKJJKHJKHJKHJH123123kjhjkhjk12312 时,它不会遵循CLI中的任何配置或选项。

对于特定于服务的CLI(如Cloudwatch工具),您必须按详细on this page设置工具。

您必须生成以下格式的文件:

mon-put-data

然后你必须传递AWSAccessKeyId=<Write your AWS access ID> AWSSecretKey=<Write your AWS secret key> 作为你的论点,或者设置环境变量--aws-credential-file

如果您使用的是标准的一体化AWS CLI,则可以使用aws.cloudwatch.put-metric-data执行与AWS_CREDENTIAL_FILE完全相同的操作。