Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS Lambda--具有不同名称的复制对象:拒绝访问_Amazon Web Services_Aws Lambda - Fatal编程技术网

Amazon web services AWS Lambda--具有不同名称的复制对象:拒绝访问

Amazon web services AWS Lambda--具有不同名称的复制对象:拒绝访问,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我是aws新手,我每天使用CloudWatch事件复制一个文件,然后调用lambda函数。这个lambda函数运行良好,将文件从一个bucket复制到另一个bucket。但是,它是完全相同的文件名,我试图在文件名的开头添加一个日期,但我被拒绝访问 Lambda函数工作: var AWS = require("aws-sdk"); exports.handler = (event, context, callback) => { var s3 = new AWS.S3();

我是aws新手,我每天使用CloudWatch事件复制一个文件,然后调用lambda函数。这个lambda函数运行良好,将文件从一个bucket复制到另一个bucket。但是,它是完全相同的文件名,我试图在文件名的开头添加一个日期,但我被拒绝访问

Lambda函数工作:

var AWS = require("aws-sdk");

exports.handler = (event, context, callback) => {

    var s3 = new AWS.S3();
    var sourceBucket = "bucket1";
    var destinationBucket = "bucket2";
    var objectKey = "file.csv";
    var copySource = encodeURI(sourceBucket + "/" + objectKey);
    var copyParams = { Bucket: destinationBucket, CopySource: copySource, Key: objectKey };

    s3.copyObject(copyParams, function(err, data) {
        if (err) {
            console.log(err, err.stack);
        } else {
            console.log("S3 object copy successful.");
        }
    });
};
Lambda角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn bucket 1/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn bucket 2/*"
            ]
        }
    ]
}
收到错误:

2017-05-19T08:34:01.059Z    e7962caa-3c6d-11e7-bd30-db47f297ea83    { AccessDenied: Access Denied
    at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/services/s3.js:539:35)
    at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
    at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:673:14)
    at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:675:12)
    at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)
  message: 'Access Denied',
  code: 'AccessDenied',
  region: null,
2017-05-19T08:34:01.059Z e7962caa-3c6d-11e7-bd30-db47f297ea83{AccessDenied:访问被拒绝
at Request.extractError(/var/runtime/node_modules/aws sdk/lib/services/s3.js:539:35)
at Request.callListeners(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:105:20)
at Request.emit(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:77:10)
at Request.emit(/var/runtime/node_modules/aws sdk/lib/Request.js:673:14)
at Request.transition(/var/runtime/node_modules/aws sdk/lib/Request.js:22:10)
在AcceptorStateMachine.runTo(/var/runtime/node_modules/aws sdk/lib/state_machine.js:14:12)
at/var/runtime/node_modules/aws sdk/lib/state_machine.js:26:10
应请求。(/var/runtime/node_modules/aws sdk/lib/Request.js:38:9)
应请求。(/var/runtime/node_modules/aws sdk/lib/Request.js:675:12)
at Request.callListeners(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:115:18)
消息:“访问被拒绝”,
代码:“访问被拒绝”,
区域:空,
我想更改复制文件的名称。此外,我看到,使用cloudwatch事件,每次调用事件时都会替换该文件。是否有方法每次创建一个新文件并保留所有版本


谢谢。

查看在存储桶上启用版本历史记录是否适合您的用例。对于您面临的错误,能否将错误响应添加到问题中


错误响应中是否显示区域为空?您是否正确配置了s3客户端?权限似乎很好,看起来不像是权限问题。

查看在存储桶上启用版本历史记录是否适合您的用例。对于您面临的错误,您是否可以将错误响应添加到问题中?当然,谢谢,更新了有什么原因在错误响应中显示region null吗?您是否正确配置了s3客户端?权限似乎很好,看起来不像是权限问题。我不知道该区域的情况。但是,我刚刚成功!我只是在对象密钥字符串中出错。^^启用版本历史正在工作!非常感谢。很酷。我添加了我的注释作为答案。如果可以,请标记为已回答。