AWS Lambda
개발자 가이드

AWS Lambda 배포 패키지(Ruby)

배포 패키지는 함수 코드 및 종속성이 포함되어 있는 ZIP 아카이브 파일입니다. Lambda API를 사용하여 함수를 관리하거나 AWS SDK 이외의 라이브러리와 종속성을 포함해야 하는 경우 배포 패키지를 생성해야 합니다. 패키지를 Lambda에 직접 업로드하거나 Amazon S3 버킷을 사용하여 Lambda에 업로드할 수 있습니다. 배포 패키지가 50MB보다 큰 경우 Amazon S3을 사용해야 합니다.

Lambda 콘솔 편집기를 사용하여 함수를 작성하는 경우 콘솔에서 배포 패키지를 관리합니다. 라이브러리를 추가할 필요가 없는 한 이 방법을 사용할 수 있습니다. 또한 총 크기가 3 MB를 초과하지 않는 한, 이 방법을 사용하여 이미 배포 패키지에 라이브러리가 있는 함수를 업데이트할 수 있습니다.

참고

배포 패키지 크기를 작게 유지하려면 함수의 계층별 종속성을 패키지화하십시오. 계층을 사용하면 독립적으로 종속성을 관리하고, 여러 함수에서 사용할 수 있으며 다른 계정과 공유할 수 있습니다. 자세한 내용은 AWS Lambda 계층 단원을 참조하십시오.

종속 프로그램이 없는 함수를 업데이트

Lambda API를 사용하여 함수를 생성하거나 업데이트하려면 함수 코드를 포함하는 아카이브를 생성한 후 AWS CLI를 사용하여 이 아카이브를 업로드합니다.

종속 프로그램이 없는 Ruby 함수를 업데이트하려면

  1. ZIP 아카이브를 생성합니다.

    ~/my-function$ zip function.zip function.rb
  2. update-function-code 명령을 사용하여 패키지를 업로드합니다.

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "ruby2.5", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "CodeSize": 300, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2018-11-23T21:00:10.248+0000", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d" }

추가 종속 프로그램이 있는 함수를 업데이트

함수가 Ruby용 AWS SDK 외의 다른 라이브러리를 사용할 경우, Bundler를 사용하여 로컬 디렉터리에 해당 라이브러리를 설치한 후 배포 패키지에 포함시키십시오.

종속 프로그램이 있는 Ruby 함수를 업데이트하려면

  1. bundle 명령을 사용하여 벤더 디렉터리에 라이브러리를 설치합니다.

    ~/my-function$ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/.............. Resolving dependencies... Fetching aws-eventstream 1.0.1 Installing aws-eventstream 1.0.1 ...

    --path는 시스템 위치가 아닌 프로젝트 디렉터리에 Gem을 설치하며, 이 디렉터리를 차후 설치를 위한 기본 경로로 설정합니다. 차후에 Gem을 전역으로 설치하려면 --system 옵션을 사용하십시오.

  2. ZIP 아카이브를 생성합니다.

    package$ zip -r function.zip function.rb vendor adding: function.rb (deflated 37%) adding: vendor/ (stored 0%) adding: vendor/bundle/ (stored 0%) adding: vendor/bundle/ruby/ (stored 0%) adding: vendor/bundle/ruby/2.5.0/ (stored 0%) adding: vendor/bundle/ruby/2.5.0/build_info/ (stored 0%) adding: vendor/bundle/ruby/2.5.0/cache/ (stored 0%) adding: vendor/bundle/ruby/2.5.0/cache/aws-eventstream-1.0.1.gem (deflated 36%) ...
  3. 함수 코드를 업데이트합니다.

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "ruby2.5", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "CodeSize": 300, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2018-11-23T21:00:10.248+0000", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d" }