반응형
Amazon S3 (Amazon Simple Storage Service)란
Amazon Web Services (AWS)의 클라우드 기반 스토리지 서비스로, 사진, 영상과 같은 데이터를 저장하고, 해당 데이터에 대해 url로 제공해주어 프론트엔드에서 사용할 수 있도록 해준다.
Amazon S3 (Amazon Simple Storage Service) 구성 요소
- 버킷 (Bucket):
Amazon S3에서 데이터를 저장하는 논리적인 컨테이너로 모든 객체(파일)는 버킷에 저장된다.
전역적으로 고유한 이름을 가져야 하며, 이름은 모든 AWS 고객 간에 고유해야 한다. 그렇게 .env를 통해 보안요소로 관리된다. - 객체 (Object):
Amazon S3에 저장되는 데이터 항목을 객체라고 하며, 객체는 파일, 이미지, 비디오, 문서 등 어떤 종류의 데이터든 포함할 수 있다.
각 객체는 고유한 키(파일 이름)로 식별되며 이를 통해 우린 Url에 대한 정보를 얻을 수 있다. params에 body로 제공한다. - KEY :
파일이 저장될 경로와 파일 이름을 설정할 수 있다.
React S3 연동 및 파일 업로드
아래 코드는 파라미터로 받은 정보에 대해 S3에 저장한 후 파일 url에 대해 다른 useState를 통해 관리하는 내용의 코드이다.
// AWS SDK를 사용하여 selectedFile 파일을 S3에 업로드하는 비동기 함수를 정의합니다.
const uploadToS3 = async (selectedFile) => {
// AWS SDK의 S3 객체를 생성합니다.
const s3 = new AWS.S3();
// 파일이 이미 업로드되었는지 여부를 확인하기 위한 변수입니다.
if (isFiled === false) {
// 선택된 파일을 변수에 할당합니다.
const file = selectedFile;
// S3에 업로드할 파일의 설정 정보를 정의합니다.
const params = {
Bucket: process.env.REACT_APP_S3_BUCKET, // S3 버킷 이름은 환경 변수로부터 가져옵니다.
Key: "upload/" + `${Date.now()}_${file.name}`, // 파일이 저장될 경로와 파일 이름을 설정합니다.
Body: file, // 업로드할 파일의 데이터를 지정합니다.
};
// S3에 파일을 업로드하고, 업로드된 파일의 위치 정보(Location)를 받아옵니다.
const { Location } = await s3.upload(params).promise();
// 업로드가 성공하면, 파일의 위치 정보를 바탕으로 Url 정보를 설정합니다.
setImageView(Location);
// 파일이 성공적으로 업로드되었으므로, isFiled 상태를 true로 설정합니다.
setIsFiled(true);
// 업로드가 성공적으로 완료되었음을 알리는 메시지를 출력합니다.
} else if (isFiled) {
alert("이미 파일을 업로드 하셨습니다.");
} else {
// 파일이 선택되지 않았을 경우 사용자에게 메시지를 표시합니다.
alert("파일을 선택해주세요.");
}
};
반응형
'코딩 > React' 카테고리의 다른 글
React Google Map으로 지역간 거리 및 이동 시간 계산하기 (2) | 2023.10.27 |
---|---|
React AWS S3 업데이트 및 삭제 기능 (CRUD) (0) | 2023.10.26 |
[React] Open api clientId 값 알아내기 (공공 데이터 포털) (0) | 2023.10.16 |
[React] 공공데이터 포털 Open API 사용하기 (0) | 2023.10.16 |
[React] 백엔드와 협업, Axios 에러 메세지 모음 (0) | 2023.10.09 |