2016-07-19 9 views
0

postイベントに対する応答でs3-get-object青写真を使用してS3バケットからファイルを読み取ろうとするLambdaを取得しようとしています。ラムダS3の許可がs3取得オブジェクトの青写真で拒否されました

{ 
"Version": "2012-10-17", 
"Id": "Policy1468930000031", 
"Statement": [ 
    { 
     "Sid": "Stmt1468929998580", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::xlp-uploads/*" 
    } 
    ] 
} 

ラムダ役割はフルS3とラムダアクセス権を持っているサンプルコードを実行するとき、私はまだAccess Deniedを得る:バケツがいっぱいパブリックアクセスと完全な権限を有していても

'use strict'; 
console.log('Loading function'); 

let aws = require('aws-sdk'); 
let s3 = new aws.S3({ apiVersion: '2006-03-01' }); 

exports.handler = (event, context, callback) => { 
    //console.log('Received event:', JSON.stringify(event, null, 2)); 

    // Get the object from the event and show its content type 
    const bucket = event.Records[0].s3.bucket.name; 
    const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' ')); 
    const params = { 
     Bucket: bucket, 
     Key: key 
    }; 
    s3.getObject(params, (err, data) => { 
     if (err) { 
      console.log(err); 
      const message = `Error getting object ${key} from bucket ${bucket}. Make sure they exist and your bucket is in the same region as this function.`; 
      console.log(message); 
      callback(message); 
     } else { 
      console.log('CONTENT TYPE:', data.ContentType); 
      callback(null, data.ContentType); 
     } 
    }); 
}; 

とエラーは、次のとおりです:

これは青写真でラムダコードです

{ [AccessDenied: Access Denied] 
    message: 'Access Denied', 
    code: 'AccessDenied', 
    region: null, 
    time: Tue Jul 19 2016 12:27:28 GMT+0000 (UTC), 
+0

この答えを試してみて、それがうまくいくかどうかを確認するには、ラムダコードの1行を置き換えてください。 http://stackoverflow.com/questions/35605622/access-denied-on-aws-lambda-function-when-getobject-from-s3-bucket/35608375#35608375 – error2007s

答えて

0

私は問題を考え出しました。

私は最初にREST APIを使用してS3にファイルをPOSTしようとしましたが、ファイルはパーミッションのないバケットで終わり、バケットのパーミッションを継承しません。

私は、ACLパラメータを受け取り、ファイルのアクセス許可を与えるPOST要求に切り替えました。

関連する問題