繁体   English   中英

用于将文件从 s3 复制到 s3 存储桶的节点 js 代码

[英]node js code for copying file from s3 to s3 bucket

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

您可以在 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/*"
        }
    ]
 }

我收到此错误-

回应:“全部完成!”

要求编号:“ e9c3d385-a92f-42a1-a1e6-ee5797169ed3”

功能日志:START RequestId:e9c3d385-a92f-42a1-a1e6-ee5797169ed3版本:$ LATEST 2019-12-01T16:49:21.413Z e9c3d385-a92f-42a1-a1e6-ee5797169ed3 INFO错误:AccessDenied:访问被拒绝END RequestId:e9c3d385-a -42a1-a1e6-ee5797169ed3报告RequestId:e9c3d385-a92f-42a1-a1e6-ee5797169ed3持续时间:76.06 ms计费持续时间:100 ms内存大小:128 MB使用的最大内存:92 MB

我的政策JSON-{“版本”:“ 2012-10-17”,“声明”:[{“ Sid”:“ VisualEditor0”,“效果”:“允许”,“动作”:“ s3:GetObject”,“资源”:“ arn:aws:s3 ::: rjsourcebucket / ”,{“ Sid”:“ VisualEditor1”,“效果”:“允许”,“操作”:“ s3:PutObject”,“资源”:“ arn :aws:s3 ::: rjdestinationbucket / “}]}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM