...
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
개발환경 구성
개발통합환경은 AWS Cloud9을 이용합니다. 개발을 위해서 별도의 개발 서버를 할당 받거나 서버에 런타임 설정을 할 필요가 없습니다.
해당 실습은 Node.js 언어를 이용해서 Lambda 함수를 개발하며, 인프라는 SAM Template을 활용합니다.
리전 선택
- 이 애플리케이션은 Seoul 리전에서 개발합니다. AWS 관리 콘솔 우측 하단에 Seoul 를 선택합니다. 화면에 표시되는 언어는 English 를 기본으로 진행합니다.
AWS Cloud9 시작하기
- 서비스에서 AWS Cloud9으로 이동하여 새로운 AWS Cloud9 환경을 생성합니다. Create
...
- Environment 버튼을 클릭합니다.
- AWS Cloud9의 Name 은 cdkenv
...
- 를 입력하고, 우측 하단의 Next step버튼을 클릭합니다.
- 기본
...
- 설정에서 Instance Type을 t3.small 로 변경하고, 우측 하단의 Next step버튼을 클릭합니다.
...
- Review에서 설정된 상태(EC2의
...
- t3.
...
- small타입)를 확인하고 하단의 Create environment버튼을 클릭합니다.
...
- Cloud9 환경이 준비되는 것을 볼 수 있습니다. Cloud9이 가용해질 때까지 잠시 기다립니다. (약 1분 내외면 웹 상에서 개발을 할 수 있는 환경을 구축할 수 있습니다.)
...
리소스 생성
...
...
- AWS 관리 콘솔에서 S3 서비스로 이동하고 Create bucket 버튼을 클릭합니다.
...
아래와 같은 이름을 가지는 버킷을 생성합니다. 숫자가 들어가는 부분은
...
본인
...
전화 번호로
...
대체 해서 입력합니다. 해당 버킷은
...
Seoul (ap-northeast-2) Region에 만들어져야 합니다. 설정이 완료되면 우측 하단의 Create Bucket 버튼을 클릭합니다.
정보 aws301-devops-
...
01012345678
...
소스 리포지토리 생성
- AWS 관리 콘솔에서 CodeCommit 서비스로 이동하고, Create repository 버튼을 클릭합니다.
- Repository name에 AWS301Repo 를 입력하고 Create 버튼을 클릭합니다.
- 생성된 Repository를 Clone 하기 위해서 주소를 복사합니다. Clone URL 콤보상자를 클릭하여 Clone HTTPS 를 선택합니다. 복사된 주소를 메모장에 기록해 둡니다.
...
복사된 URL의 예) https://git-codecommit.ap-northeast-
...
- 2.amazonaws.com/v1/repos/AWS301Repo
Cloud9에서 CodeCommit
...
설정
Cloud9에서 CodeCommit 접근을 하기 위해서 Cloud9 하단의 Terminal에서 다음과 같은 설정을
...
수행하고 체크인 한 후 해당 디렉토리로 이동합니다.
코드 블럭 language bash theme DJango title CodeCommit 접근 설정 git config --global credential.helper '!aws codecommit credential-helper $@' git config --global credential.UseHttpPath true
...
소스 코드 체크인
Cloud9 하단의 Terminal에서 아래의 명령을 실행하여 소스 코드를 체크인 합니다.
...
language | bash |
---|---|
theme | DJango |
title | 소스 코드 체크인 |
git clone https://git-codecommit.ap-northeast-
...
2.amazonaws.com/v1/repos/AWS301Repo cd ./AWS301Repo/
Lambda 소스 코드 생성
해당 폴더로 이동한 다음 vim 에디터를 이용해서 index.js Lambda 소스 코드를 만들겠습니다.
코드 블럭 language bash theme DJango title 폴더 이동 및 파일 생성
...
vim index.js
vim 에디터를 이용해서 소스코드를 붙이고 저장합니다. (vim 에디터 대신 Cloud9 화면에서 직접 파일을 생성해서 작업할 수도 있습니다.)
코드 블럭 language js theme RDark title index.js Lambda 코드 linenumbers true
...
"use strict
...
";
...
exports.handler =
...
async (event) => { // TODO implement console.log("request: " + JSON.stringify(event));
...
let
...
message = {
...
message:
...
"Hello, AWS!" };
...
let response = {
...
statusCode:
...
200,
...
...
body: JSON.stringify(message) };
...
...
return response
...
; };
...
정보 title VIM 사용시 명령어 1. vim이 실행되고, 최초 키보드에서 i 키를 클릭하면, 커서 위치에서 "Insert" 가능한 모드가 됩니다.
2. 위 복사한 코드를 붙여 넣기 한 다음, esc 키를 누르고 편집 모드를 빠져 나옵니다.
3. :wq를 입력하고 Enter 키를 누르면 편집된 내용을 저장하고 종료 합니다.만약 실수를 했을 경우, esc 키를 누르고 편집 모드를 빠져나와서 :q! 명령을 통해서 빠져 나온 다음 위 과정을 다시 실행하세요.
...
SAM 템플릿 작성
Lambda 함수와 매핑될 API Gateway를 포함한 template.yml SAM 템플릿을 생성합니다. vim 에디터 또는 Cloud9 IDE에서 작업합니다.
코드 블럭 language bash theme DJango title template.yml 파일 생성 vim template.yml
코드 블럭 language yml theme RDark title template.yml 파일 linenumbers true AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: AWS DevOps 301 Demo Application Resources: ApiAppFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime:
...
nodejs14.
...
x Timeout: 5 Events: RootHandler: Type: Api Properties: Path: / Method: GET
Lambda 함수 로컬 테스트
Lambda 함수가 정상 동작하는지 테스트를 해 보겠습니다. Cloud9에서 index.js 파일을 열고, Run 버튼을 클릭합니다.
...