amazon s3 - Gjør S3-objekt offentlig når det lastes opp av klient-s3 Typescript-biblioteket
Jeg laster opp filer til S3 ved hjelp av Typescript-kode som følger:
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));
Jeg må imidlertid gjøre objektet offentlig etter opplasting for å få tilgang til det som en del av et statisk nettsted, og det lastes opp som privat. Hvordan kan jeg fortelle s3-klienten å også gjøre det offentlig?
Svar #1
I uploadParams kan du oppgi parametere beskrevet i PutObjectRequest, inkludert ACL.
Eller, etter opplasting, kan du bruke PutObjectAclCommand og den public-read ferdige ACL-en.
Et alternativ er å rett og slett gjøre alle objektene i S3-bøtten offentlige via S3-bøttepolicy, slik at du ikke trenger å gjøre hvert enkelt objekt offentlig individuelt. Dette forutsetter selvfølgelig at alle objektene i bøtten er laget for å være offentlig lesbare, som ofte er tilfellet med statiske nettsteder.