AWS를 이용한 Serverless 환경 구축 1 - Lambda 서비스 하기& S3를 이용한 자동배포
S3에 코드 파일(.zip)이 업로드 되면 자동으로 AWS Lambda에 배포되는 환경을 만들어 보자.
필요한 AWS 서비스
S3 - 코드 업로드를 위한 bucket
Lambda 2개 - code upload 과 실행하기 위한 함수
IAM - S3 Access와 lambda 코드 갱신 Role 설정
S3버켓생성
제일 먼저 S3를 만들어 준다.
1. S3 버켓 만들기 적당한 이름의 S3를 만들어 준다. S3 만드는 화면은 생략하겠다. 진짜로 어렵지 않다. 다만 지금 만드는 서비스를 위해 Lambda와 같은 지역에서 만들어야 작동 한다.
2. 그리고 "hellow_world"를 찍는 .js파일을 만든 후 해당파일 .zip파일로 만들고 그 파일을 S3에 업로드 한다.
예) bucket명: codetest
zip파일명: code.zip
===> s3://codetest/code.zip
Lambda 생성
먼저 실행 Lambda를 생성한다. (hellow_world를 찍는 lambda로 하자)
1. lambda 서버를 생성한다.
2. 과감하게 넘어간다.
3. 이름에 Hello_World를 넣고 "Code entry type" 은 S3에서 Upload를 선택한 후 "S3 link URL"은 위에서 만든 S3의 .zip 파일의 URL을 넣으면 된다. 그리고 아래 Handler에는 .zip 파일 안의 실행할 .js 파일의 이름을 넣는다.(예 code.js이면 code.handler)
상단 그림에서 Role 부분에 pull down 메뉴 중 Basic execution role을 선택하면 아래 하면으로 새탭이 열린다. 과감하게 Allow를 누르면 된다. 그리고 상단 그림의 "Next"버튼을 누르면 된다.
이제 upload lambda를 구현해 보자.
1. lambda 서버를 생성한다. 첫번째와 동일하다.
2. 과감하게 넘어간다.
3. 적당한 이름을 정하고 아래 링크를 따라 가서 "Bonus Section: Lambda Auto-Deployer" 부분을 참고 하여 해당 소스를 중간에 횡 한 부분에 붙여넣는다.(YOUR_BUCKET_NAME, YOUR_CODE, and YOUR_FUNCTION_NAME은 위에 생성한 S3의 내용에 맞게 기입하면 된다. 또한 version은 사용하지 않은 것이니 소스에서 버전 부분은 주석처리 하면 된다. 하고 싶으면 S3에서 버전 설정을 하고 하면 된다.) https://aws.amazon.com/ko/blogs/compute/new-deployment-options-for-aws-lambda/ Role 부분은 첫번째 람다에서 생성하였던 lambda basic execution을 선택하면 된다.
5. 하단의 "create function"을 누르면 두번째 Lambda 생성은 끝났다.
6. 마지막으로 S3에 .zip 파일이 갱신 되었을 때 upload lambda가 작동하도록 S3이벤트를 등록 해 줘야 한다. 두번째 생성한 upload용 lambda 함수의 "Event source" 탭을 선택하고 "Add event source"를 클릭한다.
"Event source type"는 S3로 "Bucket"은 위에서 생성한 S3 bucket을 Event type은 "Object Created(ALL)"을 선택한 후 "Submit"을 클릭한다.
Lambda 생성은 모두 완료 되었다.
IAM Role 설정
이제 마지막으로 IAM Role 설정이다.
1. IAM 페이지로 이동 Role을 선택한다. 그리고 위에서 만든 lambda_basic_execution을 선택한 후 하단 의 Edit Policy를 선택한다.
2. 아래 코드를 "Statement": [ ] 사이에 넣고 "Validate Policy" 후 "Apply Policy" 하면 마무리 된다.
이제 S3로 .zip파일을 업데이트 해보자. 그러면 액션 lambda로 코드가 업데이트 되는 것을 알 수 있다. 참고로 해당 람다가 수행하는 것은 lambda의 모니터 탭에서 CloudWatch로 이동하여 Log 항목에서 확인 할 수 있다.
필요한 AWS 서비스
S3 - 코드 업로드를 위한 bucket
Lambda 2개 - code upload 과 실행하기 위한 함수
IAM - S3 Access와 lambda 코드 갱신 Role 설정
S3버켓생성
제일 먼저 S3를 만들어 준다.
1. S3 버켓 만들기 적당한 이름의 S3를 만들어 준다. S3 만드는 화면은 생략하겠다. 진짜로 어렵지 않다. 다만 지금 만드는 서비스를 위해 Lambda와 같은 지역에서 만들어야 작동 한다.
2. 그리고 "hellow_world"를 찍는 .js파일을 만든 후 해당파일 .zip파일로 만들고 그 파일을 S3에 업로드 한다.
예) bucket명: codetest
zip파일명: code.zip
===> s3://codetest/code.zip
Lambda 생성
먼저 실행 Lambda를 생성한다. (hellow_world를 찍는 lambda로 하자)
1. lambda 서버를 생성한다.
2. 과감하게 넘어간다.
3. 이름에 Hello_World를 넣고 "Code entry type" 은 S3에서 Upload를 선택한 후 "S3 link URL"은 위에서 만든 S3의 .zip 파일의 URL을 넣으면 된다. 그리고 아래 Handler에는 .zip 파일 안의 실행할 .js 파일의 이름을 넣는다.(예 code.js이면 code.handler)
상단 그림에서 Role 부분에 pull down 메뉴 중 Basic execution role을 선택하면 아래 하면으로 새탭이 열린다. 과감하게 Allow를 누르면 된다. 그리고 상단 그림의 "Next"버튼을 누르면 된다.
이제 upload lambda를 구현해 보자.
1. lambda 서버를 생성한다. 첫번째와 동일하다.
2. 과감하게 넘어간다.
3. 적당한 이름을 정하고 아래 링크를 따라 가서 "Bonus Section: Lambda Auto-Deployer" 부분을 참고 하여 해당 소스를 중간에 횡 한 부분에 붙여넣는다.(YOUR_BUCKET_NAME, YOUR_CODE, and YOUR_FUNCTION_NAME은 위에 생성한 S3의 내용에 맞게 기입하면 된다. 또한 version은 사용하지 않은 것이니 소스에서 버전 부분은 주석처리 하면 된다. 하고 싶으면 S3에서 버전 설정을 하고 하면 된다.) https://aws.amazon.com/ko/blogs/compute/new-deployment-options-for-aws-lambda/ Role 부분은 첫번째 람다에서 생성하였던 lambda basic execution을 선택하면 된다.
5. 하단의 "create function"을 누르면 두번째 Lambda 생성은 끝났다.
6. 마지막으로 S3에 .zip 파일이 갱신 되었을 때 upload lambda가 작동하도록 S3이벤트를 등록 해 줘야 한다. 두번째 생성한 upload용 lambda 함수의 "Event source" 탭을 선택하고 "Add event source"를 클릭한다.
"Event source type"는 S3로 "Bucket"은 위에서 생성한 S3 bucket을 Event type은 "Object Created(ALL)"을 선택한 후 "Submit"을 클릭한다.
Lambda 생성은 모두 완료 되었다.
IAM Role 설정
이제 마지막으로 IAM Role 설정이다.
1. IAM 페이지로 이동 Role을 선택한다. 그리고 위에서 만든 lambda_basic_execution을 선택한 후 하단 의 Edit Policy를 선택한다.
2. 아래 코드를 "Statement": [ ] 사이에 넣고 "Validate Policy" 후 "Apply Policy" 하면 마무리 된다.
이제 S3로 .zip파일을 업데이트 해보자. 그러면 액션 lambda로 코드가 업데이트 되는 것을 알 수 있다. 참고로 해당 람다가 수행하는 것은 lambda의 모니터 탭에서 CloudWatch로 이동하여 Log 항목에서 확인 할 수 있다.
댓글
댓글 쓰기