Hello World API 만들기
Hello World API 만들기
새로 생성한 SST 앱으로 간단한 Hello World API를 배포할 준비가 되었습니다. 템플릿에서 제공된 파일 중 일부의 이름을 변경해 보겠습니다.
템플릿 이름 변경
infra/api.ts
를 다음 코드로 교체하세요.
import { bucket } from "./storage";
export const api = new sst.aws.ApiGatewayV2("Api");
api.route("GET /", {
link: [bucket],
handler: "packages/functions/src/api.handler",
});
여기서는 GET /
라우트를 가진 간단한 API를 생성합니다. 이 API가 호출되면 packages/functions/src/api.ts
에 있는 handler
함수가 실행됩니다.
또한 API에 S3 버킷을 _연결_합니다. 이를 통해 API 내 함수들이 버킷에 접근할 수 있습니다. 나중에 파일 업로드를 처리할 때 이 버킷을 사용할 예정입니다. 지금은 간단히 이름을 변경해 보겠습니다.
infra/storage.ts
를 다음 코드로 교체하세요.
// S3 버킷 생성
export const bucket = new sst.aws.Bucket("Uploads");
앱 코드에서 이 버킷에 접근하는 방식도 변경해 보겠습니다. 이에 대한 자세한 내용은 다음 장에서 다룰 예정입니다.
packages/functions/src/api.ts
에서 Resource.MyBucket.name
줄을 변경하세요.
body: `${Example.hello()} Linked to ${Resource.Uploads.name}.`,
몇 가지 컴포넌트의 이름을 변경했으니, 설정 파일도 수정해 보겠습니다.
sst.config.ts
에서 run
함수를 다음 코드로 교체하세요.
async run() {
await import("./infra/storage");
await import("./infra/api");
},
이제 이 변경 사항을 배포해 보겠습니다.
개발 환경 시작하기
로컬 개발 환경을 시작해 보겠습니다. SST의 개발 환경은 여러분의 함수를 실시간으로 실행합니다. 이를 통해 서버리스 앱을 실시간으로 작업할 수 있습니다.
개발 환경을 시작하세요.
$ npx sst dev
sst dev
를 실행하면 앱을 배포하고 SST를 위해 계정을 부트스트랩하는 데 1~2분 정도 걸립니다.
SST 0.1.17 ready!
➜ App: notes
Stage: jayair
Console: https://console.sst.dev/local/notes/jayair
...
+ Complete
Api: https://5bv7x0iuga.execute-api.us-east-1.amazonaws.com
Api
는 방금 생성한 API입니다. 엔드포인트를 테스트해 보겠습니다. 브라우저에서 엔드포인트 URL을 열면 _Hello World!_가 출력되는 것을 확인할 수 있습니다.
연결된 버킷 이름도 출력되는 것을 확인할 수 있습니다.
프로덕션 배포
API를 프로덕션 환경에 배포하려면 로컬 개발 환경을 중지하고 다음 명령어를 실행해야 합니다.
$ npx sst deploy --stage production
지금 바로 실행할 필요는 없습니다. 앱 작업을 마친 후 나중에 진행할 예정입니다.
여기서 중요한 점은 별도의 환경에서 작업할 수 있다는 것입니다. 따라서 개인 스테이지(jayair
)에서 작업 중일 때도 production
환경의 사용자에게 API가 영향을 받지 않습니다. 이 경우 환경(또는 스테이지) 이름은 단순한 문자열이며 특별한 의미는 없습니다. development
와 prod
로 이름을 지을 수도 있었습니다.
하지만 다른 환경에 배포할 때 완전히 새로운 앱을 생성합니다. 이는 SST 워크플로의 또 다른 장점입니다. 코드형 인프라(Infrastructure as Code) 개념 덕분에 새로운 환경을 쉽게 복제할 수 있습니다. 또한 서버리스의 사용량 기반 요금제 모델 덕분에 실제로 사용하지 않는 한 새로운 환경에 대한 비용이 발생하지 않습니다.
변경 사항 커밋하기
가이드를 따라가면서 변경 사항을 저장할 것입니다.
지금까지 작업한 내용을 커밋하고 GitHub에 푸시합니다.
$ git add .
$ git commit -m "Initial commit"
$ git push
이제 노트 앱의 백엔드를 만들 준비가 되었습니다.
For help and discussion
Comments on this chapter