簡體   English   中英

從 S3 存儲桶中的文件夾中刪除文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM