【问题标题】:node js code for copying file from s3 to s3 bucket用于将文件从 s3 复制到 s3 存储桶的节点 js 代码
【发布时间】:2019-05-14 13:14:13
【问题描述】:

我想将文件从一个 s3 存储桶备份到另一个 s3 存储桶。我正在使用带有 nodejs 的 lambda 函数来备份 dynamo DB。所以我想将文件从 s3 复制到另一个 s3 存储桶。谁能告诉我将文件从 s3 复制到 s3 的 nodejs 代码?

【问题讨论】:

  • 到目前为止你有什么尝试?

标签: node.js amazon-web-services amazon-s3


【解决方案1】:

您可以在 lambda 中尝试以下代码:

// Load the AWS SDK
const aws = require('aws-sdk');
const s3 = new aws.S3();
        
// Define 2 new variables for the source and destination buckets
var srcBucket = "YOUR-SOURCE-BUCKET";
var destBucket = "YOUR-DESTINATION-BUCKET";
var sourceObject = "YOUR-SOURCE-OBJECT";

//Main function
exports.handler = (event, context, callback) => {
        
//Copy the current object to the destination bucket
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#copyObject-property
s3.copyObject({ 
    CopySource: srcBucket + '/' + sourceObject,
    Bucket: destBucket,
    Key: sourceObject
    }, function(copyErr, copyData){
       if (copyErr) {
            console.log("Error: " + copyErr);
         } else {
            console.log('Copied OK');
         } 
    });
  callback(null, 'All done!');
};

并将以下策略附加到您在 Lambda 中附加的 IAM 角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListSourceAndDestinationBuckets",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:ListBucketVersions"
            ],
            "Resource": [
                "arn:aws:s3:::YOUR-SOURCE-BUCKET",
                "arn:aws:s3:::YOUR-DESTINATION-BUCKET"
            ]
        },
        {
            "Sid": "SourceBucketGetObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::YOUR-SOURCE-BUCKET/*"
        },
        {
            "Sid": "DestinationBucketPutObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::YOUR-DESTINATION-BUCKET/*"
        }
    ]
 }

【讨论】:

    【解决方案2】:

    我觉得将文件从 S3 复制到 S3 没有意义。通常,它应该将 S3 复制到 Glacier,而不是使用 S3 中的 LifeCyclePolicies。该功能已经存在。

    【讨论】:

    • 否。我们希望从另一个区域的 s3 存储桶备份数据。请告诉我要编写 nodejs 来将文件从 s3 复制到 s3
    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 2019-04-02
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2017-11-29
    • 1970-01-01
    相关资源
    最近更新 更多