由客户端-s3 Typescript 库上传时制作 S3 对象 public

Make S3 Object public when uploaded by client-s3 Typescript library

我正在使用 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));

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

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

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

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