2015-12-31 90 views
2

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

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。

有人能告诉我我做错了什么吗?

+0

有几件事要检查:凭证是否正确?您是否尝试设置环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY并尝试再次运行CLI?它会在尝试从凭证文件读取之前从环境中读取数据。 – birryree

+0

@birryree感谢您的建议。我刚刚尝试过。同样的问题。 – Yonkee

+0

@Yonkee您可以检查您的访问密钥是否在IAM中处于活动状态? –

回答

1

我设法让它与-I和-S选项一起工作。内联凭证并非真正理想,但现在可以使用。

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

显然周一把数据命令使用具有不同的格式由AWS CLI.创建的凭证文件,不幸的是有没有在文档中定义它,我无法找到的代码进行调试。

1

我最初误解你的问题,还以为你在使用actual AWS CLI tool,它使用INI格式就像你贴:

[default] 
aws_access_key_id = KJHJKHJKHJKHJKHJKHJK 
aws_secret_access_key = KHKJJKHJKHJKHJH123123kjhjkhjk12312 

但是,当您使用mon-put-data,它不遵循任何的配置或CLI中的选项。

对于特定于服务的CLI(例如Cloudwatch工具),必须将该工具设置为详细的on this page

你产生这种格式的文件:

AWSAccessKeyId=<Write your AWS access ID> 
AWSSecretKey=<Write your AWS secret key> 

然后,你必须通过--aws-credential-file为你的论点,或设置环境变量AWS_CREDENTIAL_FILE

如果您使用标准的一体化AWS CLI,则可以使用aws.cloudwatch.put-metric-datamon-put-data完全相同。