【问题标题】:How does one specify directory, permissions, and create sub-directory for S3 in AWS lambda code?如何在 AWS lambda 代码中为 S3 指定目录、权限和创建子目录?
【发布时间】:2019-10-10 12:59:41
【问题描述】:

我正在实现一个 AWS lambda 函数
(JavaScript、node.js 环境)
它使用如下调用:

const aws = require('aws-sdk');

const s3  = new aws.S3();

function work1(obj, cb_Work1) {
    console.log(">>> Calling work");

    s3.putObject({
        Bucket: bucketName,
        Key: 'test.txt',
        Body: JSON.stringify(obj)
    })
    .promise()
    .then(() => {
        console.log('S3 -> UPLOAD SUCCESS');
        work2(obj, (resp) => {
            cb_Work1(resp);
        });
    })

    .catch(e => {
        console.log('S3 -> UPLOAD ERROR');
        console.log(e);
        cb_Work1({
            error: e
        });
    });

}

所以这里Key 似乎是文件名。
但问题是我还没有找到s3.putObject 的详细文档,所以我不知道

1)如何指定目录名(不只是bucket名),
2) 如何定义我正在创建的文件的权限
3)在放文件等之前如何创建子目录等。

如何通过aws-sdk(来自 JavaScript,node.js 代码)来完成这些事情?

提前非常感谢。

【问题讨论】:

  • 首先文档是here。其次,您误解了 S3 的工作原理。 S3 中没有文件夹/目录(尽管它提供了它们的错觉);见docs.aws.amazon.com/AmazonS3/latest/user-guide/…
  • @404 这个页面说:API Version: 2006-03-01你确定这是最近的吗?
  • 是的,它是最新版本。见here:“Amazon S3 API 的当前版本是 2006-03-01”
  • @404 好的,那么它似乎是一个非常有用的书签 URL。谢谢。

标签: javascript node.js aws-lambda


【解决方案1】:

如 S3 文档 here 中所述:

Amazon S3 控制台将所有具有正斜杠“/”字符作为键名中最后一个(尾随)字符的对象视为文件夹,例如 examplekeyname/。您无法使用 Amazon S3 控制台上传键名带有尾随“/”字符的对象。 但是,可以使用 AWS CLI、AWS 开发工具包或 REST API 使用 Amazon S3 API 上传以结尾“/”命名的对象。

关于权限,API 提供了 putObjectAcl 函数,允许定义放置对象时使用的 ACL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2010-10-09
    • 2018-11-20
    • 2019-04-15
    相关资源
    最近更新 更多