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.

Relaterte artikler