[英]Delete files from folder in S3 bucket
我有一個帶有data
文件夾的 AWS S3 存儲桶test-bucket
。 數據文件夾將有多個文件。
我能夠刪除 S3 存儲桶中的文件。 但是我想要的是在不刪除文件夾的情況下刪除data
文件夾中的文件。
我嘗試了以下內容:
aws s3 rm s3://test-bucket/data/*
還使用--recursive
選項進行了檢查,但這不起作用。
有沒有一種方法可以使用 AWS CLI 刪除文件夾中的文件?
以下 aws cli 命令有效:
aws s3 rm s3://test-bucket --recursive --exclude="*" --include="data/*.*"
您可以使用 aws cli 來完成: https ://aws.amazon.com/cli/ 和一些 unix 命令。
這個 aws cli 命令應該可以工作:
aws s3 rm s3://<your_bucket_name> --exclude "*" --include "<your_regex>"
如果要包含子文件夾,則應添加標志--recursive
或使用 unix 命令:
aws s3 ls s3://<your_bucket_name>/ | awk '{print $4}' | xargs -I% <your_os_shell> -c 'aws s3 rm s3:// <your_bucket_name>/% $1'
解釋:列出存儲桶上的所有文件--pipe-->獲取第 4 個參數(它的文件名) --pipe-->使用 aws cli 運行刪除腳本
aws s3 rm s3://bucket/folder1/folder2/ --recursive --dryrun
從我嘗試時看到的情況來看,在末尾添加斜杠意味着在文件夾 2 下方刪除,不包括文件夾 2。
我們可以使用以下 function 從 Node.js 中的 AWS-S3-BUCKET 中刪除包括子文件夾在內的所有文件。
通過在命令行中配置 AWS,可以在 AWS-CLI 中使用相同的命令。
function removeAllFilesFromBucket(){
const S3_REGION = "eu-west-1";
const S3_BUCKET_NAME = "sample-staging";
let filePathBucket = S3_BUCKET_NAME+'/assets/videos';
let awsS3ShellCommand = 'aws s3 rm s3://'+filePathBucket+' --region '+S3_REGION+' --recursive';
var { exec } = require('child_process');
exec(awsS3ShellCommand, (err, stdout, stderr) => {
if (err) {
console.log('err',err);
return;
}else{
console.log('Bucket files and sub-folders Deleted successfully !!!');
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.