aws s3 cp コマンドが実行されない原因を教えてください

2023.06.01

困っていること

AWS CLI を使用して S3 バケット内のオブジェクトをオンプレミス環境にある NAS へコピーしたいと思っています。 実施したところ、"aws s3 cp" コマンドが実行されず、エラーメッセージも表示されません。(レスポンスがない)
AWS CLI コマンド構文が間違えている可能性もあるため "--dryrun" オプションを指定すると download が dryrun で実行されていることを確認できたが、こちらも一向に終了しません。 原因について教えてください。

※AWS CLI コマンド例  
aws s3 cp s3://www.example.com/ D:/s3ToNAS/test_log/test_sample --recursive --exclude "*" --include "sample_20230404*" --profile s3toNAS_test --region ap-northeast-1 --dryrun

どう対応すればいいの?

"--exclude" "--include" オプションはクライアント側でのフィルタリング処理を行うものであり、AWS CLI が行う処理量が増加します。
また、指定されたパス内のすべてのオブジェクトを再帰的に取得する "--recursive" オプションを使用しているため、ドキュメント 記載の通り多くのオブジェクトが存在している対象の S3 バケットの場合、処理が長くなる可能性がございます。 対象 S3 バケットのオブジェクト数が (999+) など、多くのオブジェクトが存在していないかをご確認ください。

recursive
このオプションを使用すると、指定のディレクトリ内またはプレフィックス内のすべてのファイルやオブジェクトに対してコマンドが実行されます。

原因の切り分け

AWS CLI コマンドの構文に問題がなく、コピー先ディレクトリが存在していることは前提ですが、少量のオブジェクトを保有している S3 テストバケットを新たに作成して、オンプレミス環境に設置した NAS へコピー可能であるかご確認ください。
可能である場合は、前途のオプション利用により処理が長くなっていると考えられます。

また、実行コマンドへ "--debug" オプションを付与いただくことでデバッグログを出力することが可能です。事象が解消されない場合、原因を特定できる可能性もあるのでお試しください。

AWS CLI が、すぐに理解できないエラーを報告する場合や、予期しない結果を生成した場合は、--debug オプションを指定してコマンドを再度実行すると、エラーの詳細を取得できます。このオプションを使用すると、AWS CLI は、コマンドを処理するために必要な各ステップの詳細を出力します。出力される詳細は、いつエラーが発生し、そのエラーがどこで開始されたかを特定するために役立つヒントを提供します。

参考資料