ブロックを含むS3 CPコマンドに変数を含める

ブロックを含むS3 CPコマンドに変数を含める

S3 cpコマンドにいくつかのファイル名を含めたいが失敗し続けるシナリオがあります。これは私のコマンドです: -

DATE=$(date '+%Y%m%d')
/usr/local/bin/aws s3 cp "/test/copy" "s3://test-bucket/test/copy/" --include "TEST_$DATE.REQHE" --include "TEST_$DATE.ERRMSG_REQHE" 

コマンドの実行中に次のエラーが発生します。 -

upload failed: ./ to s3://test-bucket/test/copy/ [Errno 21] Is a directory: '/test/copy'

コマンドが機能するように修正するのに役立つ人はいますか?

手動コマンドの出力:-

[root@server:/home/linux]$ /usr/local/bin/aws s3 cp /test/copy/ s3://test-bucket/test/copy/ --include "TEST_20211220.REQHE" --profile aws-s3 --sse aws:kms --sse-kms-key-id ab457654f-6562-43df-124l-4et75653bq12
upload failed: ../../test/copy to s3://test-bucket/test/copy/ [Errno 21] Is a directory: '/test/copy/'
[root@server:/home/linux]$ /usr/local/bin/aws s3 cp "/test/copy/" "s3://test-bucket/test/copy/" --include "TEST_20211220.REQHE" --profile aws-s3 --sse aws:kms --sse-kms-key-id ab457654f-6562-43df-124l-4et75653bq12
upload failed: ./../test/copy to s3://test-bucket/test/copy/ [Errno 21] Is a directory: '/test/copy/'
[root@server:/home/linux]$ /usr/local/bin/aws s3 cp "/test/copy" "s3://test-bucket/test/copy/" --include "TEST_20211220.REQHE" --profile aws-s3 --sse aws:kms --sse-kms-key-id ab457654f-6562-43df-124l-4et75653bq12
upload failed: ./../test/copy to s3://test-bucket/test/copy/ [Errno 21] Is a directory: '/test/copy/'

事前にありがとう

ベストアンサー1

変数を追加するのが問題だと思うようです。コマンドを繰り返しますが、変数を削除して今日の日付(2021年12月20日)に変更します。

/usr/local/bin/aws s3 cp "/test/copy" "s3://test-bucket/test/copy/" --include "TEST_20211220.REQHE" --include "TEST_20211220.ERRMSG_REQHE"

コマンドはほぼ確実に同じ方法で失敗します(実際にこれを確認するあなたのコメントから)。したがって、我々は変数の補間が不適切であると結論付けることができます。

エラーメッセージを確認してください。

upload failed: […] [Errno 21] Is a directory: '/test/copy'

これは、パスがディレクトリ/test/copyであり、Amazonaws s3 cpコマンドがディレクトリをコピーしないことを知らせます。 (エラーメッセージがソースを指しているかターゲットを指しているかは完全にはわかりません。名前を変更するとあいまいさが解決されます)。これはまだディレクトリなので、コマンドはディレクトリをコピーしません。

解決策は、ディレクトリをコピーしないことです。おそらくこのaws s3 cpコマンドはファイルをコピーしますが、テストするコマンドにアクセスできません。

おすすめ記事