2017-05-19 4 views
0

私はawsを初めて使用しています。私はCloudWatch Eventを使用してファイルをコピーし、ラムダ関数を呼び出しています。このラムダ関数はうまくいき、あるバケットから別のバケットにファイルをコピーします。しかし、まったく同じファイル名ですが、名前ファイルの先頭に日付を追加しようとしましたが、アクセスが拒否されました。AWS 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."); 
     } 
    }); 
}; 

ラムダ役割:

{ 
    "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, 

私はコピーしたファイルの名前を変更したいと思います。さらに、クラウドウォッチイベントでは、イベントが呼び出されるたびにファイルが置き換えられることがわかりました。毎回新しいファイルを作成してすべてのバージョンを保持する方法はありますか?

ありがとうございます。

+1

バケットのバージョン履歴を有効にすると、ユースケースに合っているかどうかを確認してください。あなたが直面しているエラーについては、質問にエラー応答を追加できますか? –

+0

ありがとう、もちろん、更新されました – DionysoSong

+0

エラーレスポンスの中でリージョンヌーと言われる理由は何ですか? s3クライアントを正しく設定しましたか?権限は良いと思われ、権限の問題のようには見えません。 –

答えて

0

バケットのバージョン履歴を有効にすると、ユースケースに合っているかどうかを確認してください。あなたが直面しているエラーについては、質問にエラー応答を追加できますか?

エラーレスポンスで領域がnullと表示される理由は何ですか? s3クライアントを正しく設定しましたか?権限は良いと思われ、権限の問題のようには見えません。

関連する問題