S3 폴더 삭제
계속 데이터 생성 삭제 테스트를 하면서 멤버를 생성하면서 이미지를 업로드 하다 보니
s3에 쌓이기만 해서 지우는 함수를 만들기로 했다.
폴더 내의 모든 객체 정보 가져오기
폴더 경로를 Prefix로 전달
ex. 경로가 버킷/폴더/image.png 일경우 Prefix는 '폴더/'이다
while문 내부에서 ListObjectV2Command를 send()하여 객체의 리스트를 가져오고 전부 합쳐 반환한다.
async function getObjectList(bucketName, folderPrefix) {
try {
const command = new ListObjectsV2Command({
Bucket: bucketName,
Prefix: folderPrefix
});
let isTruncated = true;
console.log("Your bucket contains the following objects:\n")
let contentList = [];
while (isTruncated) {
const { Contents, IsTruncated, NextContinuationToken } = await client.send(command);
contentList = [...contentList,...Contents];
isTruncated = IsTruncated;
command.input.ContinuationToken = NextContinuationToken;
}
// console.log(contentList);
return contentList
} catch (err) {
console.error(err);
}
}
반환되는 결과:
[
{
Key: 'b510db3a-57ac-49af-9535-c100073291b6/24103c6b-c361-48b1-93ab-337d2e03d098.png',
LastModified: 2023-05-18T03:54:34.000Z,
ETag: '"c2aa2d34961feb11db8bdc8f9d6d373e"',
ChecksumAlgorithm: undefined,
Size: 263,
StorageClass: 'STANDARD',
Owner: undefined
},
{
Key: 'b510db3a-57ac-49af-9535-c100073291b6/ff54ae8f-f330-432a-8df4-a9f508081a91.png',
LastModified: 2023-05-18T03:55:11.000Z,
ETag: '"0ec336c8e43d0db6dd6f16de1f38a70d"',
ChecksumAlgorithm: undefined,
Size: 4581,
StorageClass: 'STANDARD',
Owner: undefined
}
]
가져온 모든 객체 삭제하기
deleteObjects는 객체 배열을 받아서 한 번에 여러 객체를 삭제할 수 있다.
async function deleteObjects(bucketName,objectList) {
try {
const deleteObjectsCommand = {
Bucket: bucketName,
Delete: {
Objects: objectList,
Quiet: true
}
};
const response = await client.send(new DeleteObjectsCommand(deleteObjectsCommand));
return response
} catch (err) {
console.error(err)
}
}
반환되는 결과:
2023-05-18T10:53:35.377Z 8131cdc1-f237-405d-9d1f-295f68cdd6bd INFO {
'$metadata': {
httpStatusCode: 200,
requestId: '7G4E4ZP89F976BWT',
extendedRequestId: 'vasVeQhM24P/64CaNfLibOkwr9goDoCXGr8p78YDKDYJnWCbceUCWYTvG4Ps/H8sCCdHth2UxLM=',
cfId: undefined,
attempts: 1,
totalRetryDelay: 0
}
}
ListObjectsV2Command
DeleteObjectsCommand
한글로 된 문서가 잘 없지만, 아마존이 sdk를 잘 만들어둬서 사용하기 쉬웠다.
에러났을 때는 어떻게 해야 할지 모르겠다. 어디서 다시 재시도를 요청하는 것이 좋은지 모르겠다.
'내일배움캠프' 카테고리의 다른 글
230521 내일배움캠프 1주차 WIL (0) | 2023.05.21 |
---|---|
230519 내일배움캠프 1주차 미니프로젝트 끝 (0) | 2023.05.19 |
230517 aws lambda 함수를 호출하여 이미지 업로드 (0) | 2023.05.17 |
230516 python 해싱 세션으로 비밀번호 인증 (0) | 2023.05.16 |
230515 TIL Git 사용하기 (0) | 2023.05.15 |