⛳
Goで書かれたAWS Lambdaの容量上限を突破する方法
症状
serverless-frameworkでLambdaを作成していたとき、ある時点から以下のような表示が出てdeployが通らなくなった。
Unzipped size must be smaller than 262144000 bytes (Service: Lambda, Status Code: 400...
原因
AWS Lambdaには搭載できるソース容量制限250MBの壁があるため。開発量が漸増し、この壁にぶち当たったのが原因。
対応策
Lambda functionごとにバイナリを分けてデプロイする設定をほどこす。
- packageの部分で
individually
を true にし、(個別デプロイon) - 全てのファイルをzipファイルに含まない設定(patterns '!./**')をし、
- 各functionに搭載したいバイナリを個別に指定していく。
書き方の具体例
※なお、この場合はserverless.ymlファイルが存在する同階層に bin
ディレクトリを作成し、その下に各種lambdaのバイナリファイルを配置する前提である。
package:
individually: true # <= 1.個別デプロイOn
patterns:
- '!./**' # <= 2.全てのファイルを含めない設定
functions:
Hello:
handler: bin/hello
events:
- httpApi:
path: /api/hello
method: get
package:
patterns:
- ./bin/hello # <= 3.個別に指定
Discussion