由 client-s3 Typescript 库上传时公开 S3 对象

Ask*_*mov 5 amazon-s3 typescript aws-sdk aws-sdk-nodejs aws-sdk-js

我使用 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));
Run Code Online (Sandbox Code Playgroud)

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

jar*_*mod 8

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

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

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

  • 谢谢你!其实更简单:我的文本中的 uploadParams 可以修改为 `{... Body: fileData, ACL:'public-read'`}。 (5认同)