| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- Vue.js
- erc4337 contract
- ethers type
- 계정추상화
- cloud hsm
- git rebase
- 러스트 기초 학습
- ambiguous function description
- Vue
- 체인의정석
- redux 기초
- cloud hsm 서명
- 티스토리챌린지
- cloud hsm 사용하기
- 스마트 컨트렉트 함수이름 중복
- 컨트렉트 동일한 함수이름 호출
- 머신러닝기초
- vue기초
- 러스트 기초
- SBT표준
- 스마트컨트렉트 예약어 함수이름 중복
- ethers v6
- 스마트컨트렉트 함수이름 중복 호출
- redux toolkit 설명
- 러스트기초
- 오블완
- ethers typescript
- erc4337
- rust 기초
- ethers websocket
Archives
- Today
- Total
체인의정석
S3를 써서 NFT 메타데이터 업로드 하기 본문
728x90
프로그램에서 S3에 접근하기 위해서는 AWS credentials가 먼저 필요하다.
aws credentials 확인의 경우 다음과 같은 경로에 세팅 한다.
cat ~/.aws/credentials
[default]
aws_access_key_id =
aws_secret_access_key =
ts에서 사용하는 패키지
import S3Helper from '@lib/AWS/S3Helper';
먼저 프로필을 사용해서 객체를 만들어 줘야 한다.
const testS3Helper = new S3Helper('us-west-2', 'default');
그리고 정책에 들어가서 해당 IAM계정이 S3에 어떠한 권한이 있는지 체크해야 한다.

보아하니 권한 끝에 /*가 붙어 있지 않으면 s3Object를 다룰 수 없다고 하여 붙여 주었다.
await Promise.all([
...tokenIds.map((tokenId) =>
s3Helper.s3
.copyObject({
Bucket: PUBLIC_S3_BUCKETNAME,
CopySource: `/${PRIVATE_S3_BUCKETNAME}/nft1/${tokenId}.png`,
Key: `testNFT/${tokenId}.png`,
})
.promise(),
),
]);
만약 이런식으로 해두면 private에 미리 올려둔 S3에 접근해서 파일을 옮긴다면
만약 CopySource인 S3에 해당 데이터가 없다면 "Copy failed The specified key does not exist."
이렇게 뜨게 된다.
이제 이벤트를 구독하면서 nft민팅이 확인된 순간 프라이빗 S3에서 퍼블릭 S3로 옮기게 되면 NFT 민팅이 완성된다.
이렇게 하는 이유는 위의 명령어는 S3 내부적으로 파일이 이동하는 것임으로 시간이 얼마 걸리지 않으며, nft가 민팅이 확정된 시점에 프라이빗 S3에서 퍼블릭 S3로 옮기면 짧은 시간 내에 nft민팅을 완료활 수 있기 때문이다.
728x90
반응형
'개발 > backend(js,ts)' 카테고리의 다른 글
| 비디오 스트리밍 - HLS 모듈 사용하기 (0) | 2025.11.19 |
|---|---|
| node.js에서 VRF 만들기 (node-ecvrf, drand-client 사용) (0) | 2024.11.29 |
| node.js) UTC 시간 기준으로 날짜를 저장하는 방법, blocktimestamp로 부터 UTC시간 도출하는 방법 (0) | 2024.11.21 |
| node.js) mysql2를 사용하여 db query, insert 하는 코드 (1) | 2024.11.21 |
| node.js) dotenv를 이용한 환경변수 분리 및 winston을 이용한 logger 만들기 (0) | 2024.11.21 |
Comments
