Доступ запрещен при загрузке изображения на s3 - PullRequest
0 голосов
/ 01 мая 2018

Я использую AWS Lambda для загрузки изображения в S3. Запуск локального теста: serverless invoke local function --function khanh работает.

Однако, когда я развертываю приложение и тестирую его на Amazon Lamda, оно возвращает эту ошибку.

{
  "errorMessage": "Access Denied",
  "errorType": "AccessDenied",
  "stackTrace": [
    "Request.extractError (/var/task/node_modules/aws-sdk/lib/services/s3.js:577:35)",
    "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:105:20)",
    "Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:77:10)",
    "Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:683:14)",
    "Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)",
    "AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)",
    "/var/task/node_modules/aws-sdk/lib/state_machine.js:26:10",
    "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)",
    "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:685:12)",
    "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"
  ]
}

Вот мой handler.js

'use strict';
const phantomjsLambdaPack = require('phantomjs-lambda-pack');
const exec = phantomjsLambdaPack.exec;
const path = require('path');
const fs = require('fs');
var AWS = require('aws-sdk');
AWS.config.accessKeyId='******';
AWS.config.secretAccessKey='****';
module.exports.khanh = (event, context, callback) => {
    const scriptPath = path.join(__dirname, 'phantomjs-script.js');
    exec(scriptPath, (error, stdout, stderr) => {
        if (error) {
            console.error(`exec error: ${error}`);
            return;
        }

        console.log(`Result: ${stdout}`);
        console.log(`Should have no error: ${stderr}`);
        //スクリーンショットをS3にアップロードする
       const tmp_file_path = path.join(__dirname, '2step.png');
       const params = {Bucket: 'twitterfollower-dev-serverlessdeploymentbucket-bnjh23hrxw31', Key: 'screen/2step.png', Body: fs.createReadStream(tmp_file_path),};
       new AWS.S3().upload(params, (error, data) => {
           callback(error, 'fin!!');
       });

    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...