列出AWS S3存储桶中的对象(使用无服务器部署)

时间:2019-05-15 21:32:31

标签: amazon-s3 aws-lambda aws-serverless

我似乎遇到了权限问题,找不到任何答案可以解决此问题。

我的Lambda函数很简单(请注意-我正在使用Babel进行转换):

import AWS from "aws-sdk";
import { success, failure} from "./libs/response-lib";

export async function main(event, context, callback) {
    const s3 = new AWS.S3();
    const params = {
        Bucket: "mybucket",
    };

    try {
        const result = await s3.listObjectsV2(params);
        return success(result);
    }
    catch(e) {
        return failure({ status: false, message: e })
    }
}

当我使用Serverless进行部署并击中端点时,我得到了500错误。

我已将此文件包含在我的serverless.yml文件中,并已为S3存储桶本身关闭了 “阻止所有公共访问”功能,但看来我想念更多了吗?

iamRoleStatements:
    - Effect: Allow
      Action:
        - s3:ListBucket
      Resource: "arn:aws:s3:::mybucket"

1 个答案:

答案 0 :(得分:0)

好的,所以AWS的S3方法是同步的,所以我需要让它返回一个promise:

.
.
.
const result = await s3.listObjectsV2(params).promise();
.
.
.