簡體   English   中英

將文件從一個文件夾復制到同一存儲桶 NODE JS 的 s3 中的另一個文件夾

[英]Copying files from one folder to another folder in s3 of same bucket NODE JS

我正在嘗試將文件從一個文件夾復制到同一個存儲桶中的另一個文件夾,但我遇到了拒絕訪問的錯誤。 但是如果我嘗試在兩個不同的桶上做這意味着它工作正常。

請在下面找到我迄今為止嘗試過的內容:

var AWS = require('aws-sdk');
AWS.config.update({
     accessKeyId: 'xxx',
     secretAccessKey: 'xxx'
    });
var s3 = new AWS.S3();
var params = {
    Bucket : 'bucketname', /* Another bucket working fine */ 
    CopySource : 'bucketname/externall/1.txt', /* required */
    Key : "1.txt", /* required */
    ACL : 'public-read',
};
s3.copyObject(params, function(err, data) {
    if (err)
        console.log(err, err); // an error occurred
    else {
        console.log(data); // successful response
    }
});

我使用相同的方法copyObject並在源和目標路徑中使用相同的存儲桶名稱,它工作。 下面是我的代碼示例

{
    Bucket: bucketName,
    CopySource: '/'+bucketName+'/local/Country.png',
    Key: 'local/copy-Country.png'
}
var AWS = require('aws-sdk');
AWS.config.update({
    accessKeyId: 'ACCESS_KEY',
    secretAccessKey: 'SECRET_KEY',
    region: 'REGION'
});
var s3 = new AWS.S3();
var bktName = 'BUCKET_NAME';
var options = {
    Bucket: bktName,
    Prefix: 'SOURCE_FOLDER/'
};
s3.listObjectsV2(options, function (err, data) {
    if (err) {
        console.log(err);
    } else {
        data['Contents'].forEach(function (obj) {
            var lockey = obj.Key.replace(/SOURCE/g, 'TARGET');
            // Example if you want to move from /test/123/ to /test/234/ (or 123/ to 234/) then SOURCE = 123 and TARGET = 234
            var params = {
                Bucket: bktName,
                CopySource: '/' + bktName + '/' + obj.Key,
                Key: lockey
            };
            s3.copyObject(params, function (err, data) {
                if (err) {
                    console.log(err);
                } else {
                    console.log('Inserted', lockey);
                }
            });
        });
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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