AWS Lambda Layers – PHP on Lambda Example (자막제공)

AWS Lambda Layer 기능을 활용해 PHP 런타임을 업로드해서 PHP 서비스를 구동하는 방법을 소개합니다 이번에 발표된 Lambda 레이어 지원으로 공통으로 사용하는 라이브러리에 대한 공유 뿐만 아니라 바이너리 파일이나 특정 런타임 패키지를 직접 업로드해서 실행할 수 있습니다

공식적인 지원은 아니지만 C++은 물론이고 PHP 런타임도 오픈 소스 기반으로 공개 되어 있습니다 이를 이용해 PHP 컨텐트를 Lambda에서 구동시켜 보도록 하겠습니다 먼저 AWS 콘솔에서 작업을 진행합니다 Lambda 레이어는 여러분 계정에 직접 업로드하거나 공개된 ARN 리소스 주소를 이용해 사용할 수 있습니다 여기에서는 가장 간단한 방법인 ARN을 이용해 공개된 PHP 런타임 레이어를 불러와 사용하겠습니다

물론 직접 빌드해서 이용할 수도 있습니다 자 그럼 콘솔에서 작업을 시작하겠습니다 Lambda 함수를 생성하고 런타임을 Custom으로 선택합니다 역할은 직접 생성하거나 이미 등록된 역할을 이용합니다 기본적인 Lambda 함수를 생성 했으나 아직 레이어는 지정하지 않았습니다

레이어를 클릭해서 지정합니다 이때 제공된 ARN 값을 등록해서 사용합니다 참고로 버전 확인을 위해 터미널에서 직접 확인해 보겠습니다 버전 5가 최신이군요 제공하는 ARN 값에는 사용할 리전과 버전을 수정 입력해야합니다

만일 복사해서 사용할 경우 다른 리전을 선택하지 않도록 주의하고 대문자 입력에 유의하세요 정상적으로 등록되었습니다 레이어는 병합 순서 가 있어 중복될 경우 마지막 레이어가 적용됩니다 다음은 실제 실행할 함수가 있는 파일을 생성하고 zip 파일 형태로 업로드합니다 업로드한 파일명을 입력하고 업로드

API Gateway 이벤트와 연동을 위해 설정을 추가 합니다 공개 API로 설정하고 기본 정보로 설정합니다 저장하고 설정을 마칩니다

API Gateway 설정이 연결이 완료되면 API 엔드포인트 주소를 호출해 정상 작동되는지 확인합니다 브라우저를 통해 확인해 보겠습니다 아주 간단하게 PHP 런타임 적용 방법을 알아 봤습니다 다음에는 Lambda 레이어 기능을 지원하는 serverless 오픈소스를 활용해서 Lambda에 PHP를 올려 보겠습니다 별도의 PHP 템플릿이 없으므로 Python 템플릿을 지정해 생성하겠습니다

생성된 기본 파일을 indexphp 변경해 간단한 PHP 페이지를 생성합니다 이제 레이어 설정을 위해 severless 파일을 수정하겠습니다 런타임을 provided로 설정하고 레이어의 ARN 정보를 추가합니다 버전과 배포 리전을 수정합니다

모든 설정을 끝냈으면 배포합니다 참고로 로컬개발 환경에는 이미 AWS 계정에 대한 credential이 설정되어 있습니다 배포가 완료되면 접근 주소를 가지고 확인합니다 Lambda 레이어를 이용하면 공통 코드 뿐만 아니라 사용자 런타임을 직접 올려서 제공할 수 있고 더 이상 매번 패키징할 필요가 없습니다 그리고 아주 다양한 활용이 가능해 본격적인 서버리스 주도의 개발이 가능하리라 생각됩니다