AWS Lambda
開発者ガイド

Ruby の AWS Lambda デプロイパッケージ

デプロイパッケージは、関数のコードと依存関係を含む ZIP アーカイブです。Lambda API を使用して関数を管理する場合や、AWS SDK 以外のライブラリや依存関係を含める必要がある場合は、デプロイパッケージを作成する必要があります。パッケージを Lambda に直接アップロードするか、Amazon S3 バケットを使用して Lambda にアップロードすることができます。デプロイパッケージが 50 MB 以上の場合は、Amazon S3 を使用する必要があります。

Lambda コンソールエディタを使用して関数を作成する場合は、コンソールでデプロイパッケージを管理します。他にライブラリを追加する必要がない限り、この方法を使用します。また、この方法でデプロイパッケージにライブラリがすでに含まれている関数をアップロードすることもできます。ただし、合計サイズが 3 MB 以内の場合に限ります。

注記

デプロイパッケージのサイズを低く保つため、関数の依存関係をレイヤーにパッケージ化します。レイヤーにより、依存関係を独立して管理し、複数の関数で使用できます。また、他のアカウントと共有できます。詳細については、「AWS Lambda レイヤー」を参照してください。

デプロイパッケージのファイルには、Lambda で実行する適切なファイルモードが必要です。詳細については、「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" }

追加の依存関係を使用して関数を更新する

関数が AWS SDK for Ruby 以外のライブラリに依存している場合は、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" }