【问题标题】:List objects in an AWS S3 bucket (deployed using Serverless)列出 AWS S3 存储桶中的对象(使用无服务器部署)
【发布时间】:2019-10-03 02:29:19
【问题描述】:

我似乎遇到了权限问题,找不到任何 SO 答案来解决这个问题。

我的 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"

【问题讨论】:

  • 谢谢。您的 iamRoleStatement 帮助了我。

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


【解决方案1】:

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

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

【讨论】:

  • 方法是“异步的”* :-)
猜你喜欢
  • 2015-10-23
  • 2020-12-16
  • 2018-03-16
  • 2020-11-29
  • 2020-03-23
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多