API 배포하기

지금까지는 로컬 환경에서 Lambda 함수를 작업했습니다. 이번 장에서는 이를 배포해 보겠습니다.

Change indicator 작업 디렉토리에서 다음 명령어를 실행하세요.

$ serverless deploy

AWS SDK 자격 증명에 여러 프로필이 있는 경우, 명시적으로 하나를 선택해야 합니다. 대신 다음 명령어를 사용하세요.

$ serverless deploy --aws-profile myProfile

여기서 myProfile은 사용하려는 AWS 프로필 이름입니다. Serverless에서 AWS 프로필을 다루는 방법에 대한 더 많은 정보가 필요하다면, 여러 AWS 프로필 구성하기 장을 참고하세요.

이 명령어의 출력 하단에는 서비스 정보가 표시됩니다.

Service Information
service: notes-api
stage: prod
region: us-east-1
stack: notes-api-prod
resources: 32
api keys:
  None
endpoints:
  POST - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes
  GET - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes/{id}
  GET - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes
  PUT - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes/{id}
  DELETE - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes/{id}
functions:
  create: notes-api-prod-create
  get: notes-api-prod-get
  list: notes-api-prod-list
  update: notes-api-prod-update
  delete: notes-api-prod-delete
layers:
  None

여기에는 생성된 API 엔드포인트 목록이 포함되어 있습니다. 이 엔드포인트를 기록해 두세요. 나중에 프론트엔드를 만들 때 사용할 예정입니다. 또한 이 엔드포인트의 리전과 ID도 기록해 두세요. 다음 장에서 사용할 것입니다. 이 예제에서는 us-east-1이 API Gateway 리전이고, 0f7jby961h가 API Gateway ID입니다.

앱 배포 중 문제가 발생한다면, Seed에서 가장 일반적인 Serverless 오류 모음을 참고하세요.

단일 함수 배포하기

모든 API 엔드포인트를 배포하는 대신 단일 엔드포인트만 배포하고 싶은 경우가 있을 수 있습니다. serverless deploy function 커맨드를 사용하면 전체 배포 과정을 거치지 않고 개별 함수만 배포할 수 있습니다. 이 방법은 변경 사항을 더 빠르게 배포할 때 유용합니다.

예를 들어, list 함수를 다시 배포하려면 다음 명령어를 실행합니다.

$ serverless deploy function -f list

API 테스트하기

지금까지는 serverless invoke local 명령어를 사용해 Lambda 함수를 로컬에서 테스트했습니다. 이제 API를 배포했으니 엔드포인트를 통해 테스트할 수 있습니다.

노트 목록 API 엔드포인트로 이동해 보세요. 우리의 경우 엔드포인트는 다음과 같습니다.

https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes

이 엔드포인트에 접속하면 다음과 같은 결과를 볼 수 있습니다.

[{"attachment":"hello.jpg","content":"hello world","createdAt":1487800950620,"noteId":"578eb840-f70f-11e6-9d1a-1359b3b22944","userId":"123"}]

이것은 DynamoDB에 저장된 노트 객체들의 JSON 인코딩된 배열입니다.

우리의 API는 공개적으로 사용 가능하므로 누구나 접근하여 노트를 생성할 수 있습니다. 또한 항상 123 사용자 ID에 연결됩니다. 다음으로 사용자와 인증을 처리하여 이 문제를 해결해 보겠습니다.