2016-07-19 6 views
0

Я пытаюсь получить Лямбду, чтобы прочитать файл из ведра S3, используя схему s3-get-object в ответ на файл post событий.Разрешение Lambda S3, запрещенное в s3-get-object blueprint

Даже когда ковш имеет полный доступ общественности и полные права доступа:

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

И роль Lambda имеет полный S3 и лямбда-доступ, я все еще получаю Access Denied при запуске примера кода.

Это код Lambda в план:

'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

Попробуйте этот ответ и посмотрите, работает ли он для вас, вам просто нужно заменить одну строку на лямбда-код. http://stackoverflow.com/questions/35605622/access-denied-on-aws-lambda-function-when-getobject-from-s3-bucket/35608375#35608375 – error2007s

ответ

0

я понял вопрос вне.

Первоначально я попытался выполнить POST-файл на S3 с помощью REST API, но файл попадает в ведро без каких-либо разрешений и не наследует разрешения ведра.

Я переключился на запрос POST, который принимает параметры ACL и дает права на доступ к файлам.

Смежные вопросы