AWS cliをEC2インスタンスにインストールし、aws configure
を実行してAWSAccessKeyIdおよびAWSSecretKeyキーを指定することで構成したので、コマンドaws s3 ls
を実行すると、S3バケットの名前が返されます( 「mybucket」と呼びます)。
しかし、aws s3 cp localfolder/ s3://mybucket/ --recursive
を試してみると、次のようなエラーが表示されます
A client error (AccessDenied) occurred when calling the CreateMultipartUpload operation: Anonymous users cannot initiate multipart uploads. Please authenticate.
Aws configureを実行し、ルートキーを与えることで、認証に必要なすべてをaws cliに効果的に提供していると思いましたか?それらをリストするのではなく、S3バケットへのコピーに関して欠けているものはありますか?
ルートアクセスキーとシークレットキーには、AWSと対話するための完全な制御と完全な権限があります。もう一度[aws configure
]を実行して設定を再確認し、再試行してください。
PS:ルートアクセスキーを使用することは強くお勧めしません-IAM(rootのような管理者権限を取得する)を作成することを考えて、それらを使用してください。
バケットを一覧表示できるが、エラーを返す特定のバケットに書き込むことができないという非常に類似した問題を追加すると思いました
An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Access Denied
バケットがサーバー側の暗号化を使用している場合は、このバケットに書き込むことができるように--sse
フラグを追加する必要があります。
環境変数AWS_SECRET_ACCESS_KEY
、AWS_ACCESS_KEY_ID
およびAWS_REGION
が設定されている場合、AWS CLIはaws configure
で指定した認証情報ではなく、それらに高い優先順位を与えます。
したがって、私の場合、bashコマンドunset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
で問題が解決しました。