Ruby로 서버리스 웹 애플리케이션 만들기

안녕하세요.
일상 업무에서는 인프라를 하고 있습니다 @ 하야오사토 입니다.

약 1개월 전이 됩니다만, AWS re:Invent2018에서 AWS Lambda(이하 Lambda라고 표기합니다)의 많은 업데이트가 있었습니다.
런타임의 추가와 Lambda Layers가 추가되었다고 하는 것으로, 이것들을 근거로 이번은 서버리스의 웹 어플리케이션을 작성해 보고 싶습니다.

만드는 것



서버리스 웹 응용 프로그램으로 구성은 다음과 같습니다.


AWS Lambda



이번에 만드는 Lambda 함수는 API Gateway의 요청에 대해 다음 hash를 반환해야합니다.

hash.rb
{ 
  statusCode: 200,
  headers: {
    Content-Type: 'text/html'
  },
  body: 'コンテンツ'
}

또, 함수의 갱신은 aws lambda 커멘드에 의해 행했습니다. 꽤 편리하네요.
$ zip -r main.zip lambda_function.rb vendor
$ aws lambda update-function-code --function-name $FUNCTION_NAME --zip-file fileb://./lambda_function.zip
$ aws lambda update-function-configuration --function-name $FUNCTION_NAME --handler lambda_function.lambda_handler

Lambda Layers



Lambda Layers라는 기능을 추가하여 Lambda의 함수를 분할하여 재사용하기 쉬워졌습니다.
우선 사용하고 싶었기 때문에 이번은 자주 있는 Slack 통지를 Layer에 추가해 보겠습니다.

Lambda Layer 추가도 aws lambda 명령으로 가능합니다.
(※ 나처럼 awscli의 버전을 올리고 잊어 빠지지 않도록합시다)
$ aws lambda publish-layer-version --layer-name $LAYER_NAME --zip-file fileb://./layer.zip --compatible-runtimes ruby2.5
$ aws lambda update-function-configuration --function-name $FUNCTION_NAME --layers $LAYER_ARN

이제 추가한 Lambda Layer는 require 할 수 있게 되었기 때문에

require.rb
require '/opt/layer'

와 같이 읽고 사용할 수 있습니다.
(절대 패스로 읽지 않으면 움직이지 않았습니다만, 뭔가 설정 빠져 있거나 하는 것입니까...)

API 게이트웨이



그런 다음 API Gateway를 사용하여 배포하기 만하면됩니다.
GET 요청시 Lambda를 실행하도록 설정하여 스테이지 작성에 배포 완성입니다.

마지막으로



Lambda는 향후의 전개가 기대되고, 인프라를 해 두면서 서버리스에는 꽤 기대하고 있습니다.
여러분도 꼭 시험해 보세요.

참고


  • htps : // 아 ws. 아마존. 이 m/jp/갓찐 g-s r d/세 r
  • htps : // / cs. 아 ws. 아마존. 이 m/cぃ/ぁ해서 st/레후오렌세/ぁmb다/그리고 x. HTML # c ぃ - 아 ws - ぁ MB
  • h tps:// 퀵했다. 작은 m/공대_응/있어 MS/15 뒤 90 그림 c93625C4445 아
  • htps : // 코 m / 당근 5th / ms / 엣후 아 65f5488495d86
  • h tps:// 퀵했다. 작은 m / 모치즈키 코타로 / MS / b980d28 예 492C40 아 145
  • 좋은 웹페이지 즐겨찾기