【问题标题】:Make S3 Object public when uploaded by client-s3 Typescript library由 client-s3 Typescript 库上传时使 S3 对象公开
【发布时间】:2021-04-21 09:15:53
【问题描述】:

我正在使用 Typescript 代码将文件上传到 S3,如下所示:

    import {PutObjectCommand, PutObjectCommandInput, S3Client} from "@aws-sdk/client-s3";
    const s3 = new S3Client(config);
    const uploadParams: PutObjectCommandInput = {
        Bucket: bucketName,
        Key: filename,
        Body: fileData
    };
 
    await s3.send(new PutObjectCommand(uploadParams));

但是,我需要在上传后将对象设为公开,以便将其作为静态网站的一部分进行访问,并将其作为私有上传。我如何告诉 s3 客户端也将其公开?

【问题讨论】:

    标签: typescript amazon-s3 aws-sdk aws-sdk-js aws-sdk-nodejs


    【解决方案1】:

    uploadParams中,您可以提供PutObjectRequest中描述的参数,包括ACL

    或者,上传后,您可以使用PutObjectAclCommandpublic-read 预设ACL。

    另一种方法是通过 S3 存储桶策略简单地将 S3 存储桶中的所有对象公开,因此您不必单独公开每个对象。这假设存储桶中的所有对象都设计为可公开阅读,当然,静态站点通常就是这种情况。

    【讨论】:

    • 谢谢!其实更简单:我的文字中的uploadParams可以修改为{... Body: fileData, ACL:'public-read'}。
    • 很好的发现。新的 SDK 文档浏览起来有点棘手。我已将该信息添加到我的答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2021-07-27
    • 2010-12-04
    • 1970-01-01
    相关资源
    最近更新 更多