2015-12-31 109 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完全相同。