Ubuntu 16.04 LTSでAWS CLIを使用しています。すべてのバケットを一覧表示しようとしています。 aws configureで、IAMユーザーアクセスキーとIAMユーザーシークレットキーを入力しました。このIAMユーザーはバケットを一覧表示する権限があり、コンソールでバケットを一覧表示できますが、これらのキーでAWS cliを使用してコマンドを実行すると、aws s3 lsこのエラーが発生します。
ListBucketsオペレーションの呼び出し時にクライアントエラー(SignatureDoesNotMatch)が発生しました:計算したリクエストの署名が指定した署名と一致しません。キーと署名方法を確認してください。
この特定のIAMユーザーのバケットもリストするポリシーを作成しました。
このIAMユーザー認証情報を使用して、シェルスクリプトを介してさらに同期操作を実行し、すべてのファイルを公開操作したいのですが、ルート認証情報を使用したくありません。
私の問題が見つかりました。環境変数に古いAWSキーがありました。という名前の環境変数がある場合
AWS_SECRET_ACCESS_KEY
AWS_ACCESS_KEY_ID
awscliは、~/.aws/credentials
で提供される値の代わりにこれらの値を使用します。
printenv | grep AWS
を実行してみて、これらの値が設定されていないことを確認してください。もしそうなら、単に実行します
unset AWS_SECRET_ACCESS_KEY
unset AWS_ACCESS_KEY_ID
そして、あなたは行ってもいいはずです。
マシンの時刻がNTサーバーと同期していない場合でも発生する可能性があります。
Sudo ntpdate ntp.ubuntu.com
この問題を解決するのに役立ちました。
問題はAWS認証情報にありました。シークレットをExcelファイルからtxtファイルにコピーし、いくつかの特殊文字が削除されました。正しくコピーしてください。
また、マシンを再起動して、AWSが環境変数に設定されていないことを確認してください。printenv | grep 'AWS'
で確認できます
AWSセキュリティ認証情報が期限切れになったことを意味します。新しい資格情報を作成するだけで機能します。
Create New Access Key
をクリックします。アクセスキーIDとシークレットアクセスキーを書き留めますaws configure
を実行して、新しい認証情報を入力します実行しているシステムの時刻を確認してください。それが更新されていることを確認してください
私の場合、私は暗号化していましたが、暗号化される前のファイルサイズを送信していました。このエラーが発生し、シークレットとキーが正しい場合は、md5、mimetype、サイズ、およびその他の属性を再確認する価値があります
Rootユーザーに切り替えてください。
私の場合、標準ユーザーからこのコマンドaws s3 ls
にアクセスしていて、以下のエラーが発生しました:
「AWS CLIがS3バケットを一覧表示すると、IAMユーザー認証情報を使用してSignatureDoesNotMatchエラーが発生する」
次に、Sudo su
コマンドを使用してrootユーザーに切り替え、aws s3 ls
コマンドにアクセスして、s3バケット名をリストしました。
私にとっての問題は、秘密鍵の/が丸められ、秘密鍵がPCの.datファイルに貼り付けられ、サーバーにコピーされたpgサーバー上の.datファイルで、aws configureを使用するときに秘密鍵がコピーされた
このエラーは、aws s3アクセスキー/秘密キーが正しくないことが原因です。