AWS Lambdaのストレージ容量が最大10GBまで拡張可能になりました

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

目次

はじめに

AWS Lambdaのアップデートにより、エフェメラル(一時的)ストレージが10GBまで利用可能になりました。
公式ページはこちら↓になります。
AWS Lambda で Lambda 関数用に最大 10 GB のエフェメラルストレージの設定が可能に

これまでは512MBまで利用可能でしたが、今回のアップデートにより、大量のキャッシュデータや中間ファイルを処理できるようになります。
大量データの処理にS3やEFSを中継することなく、必要以上にLambdaのメモリを増やすことがなくなるため、コストの削減につながりそうです。
ここではエフェメラルストレージの設定と確認、および、料金やモニタリングについて紹介します。

実際にやってみた

エフェメラルストレージはAWS Lambda コンソール、AWS CLI、CloudFormationなどから設定が可能です。
それぞれの方法で実際にストレージを10GBに変更して確認を行います。

手順

  1. Lambda関数の作成
  2. エフェメラルストレージの設定
  3. ストレージ変更の確認

AWS Lambda コンソール

Lambda関数の作成

適当なLambda関数を作成します。

エフェメラルストレージの設定

[設定]タブの[一般設定] - [編集]を押下します。

エフェメラルストレージを10GB(10240MB)に変更して、[保存]を押下します。

ストレージ変更の確認

下記のソースコードをLambdaにDeployして空JSONイベントで実行してみます。

import subprocess
from subprocess import PIPE

def lambda_handler(event, context):
    result = subprocess.run(‘df -h‘, shell=True, stdout=PIPE, stderr=PIPE, text=True)
    print(result.stdout)

実行結果は下記の通りです。
表記上、11GBとなっていますが、「/tmp」にマウントされているエフェメラルストレージの拡張に成功しています。

AWS CLI

下記コマンドにてエフェメラルストレージの変更ができます。
例) 10GBにエフェメラルストレージを変更する場合

aws lambda update-function-configuration\
    --function-name functionName\
    --ephemeral-storage ‘{“Size“: 10240}‘

Lambda関数の作成

適当なLambda関数を作成します。

エフェメラルストレージはデフォルト値(512MB)です。

エフェメラルストレージの設定

コマンドを実行します。

ストレージ変更の確認

コンソール上で確認すると10240MB(10GB)に変更されています。

CloudFormation

Lambda関数の作成と、エフェメラルストレージの設定

下記のCloudFormationテンプレートを展開します。
ストレージサイズは「EphemeralStorage」のSize値にて設定が可能です。(デフォルトは512)
参考:AWS CloudFormation - ユーザーガイド (LambdaFunction)

AWSTemplateFormatVersion: 2010-09-09
Description: Lambda function with cfn-response.
Resources:
    ephemeralStorageLambdaCfn:
        Type: AWS::Lambda::Function
        Properties:
            Handler: “lambda_function.lambda_handler“
            Code: 
                S3Bucket: “xxxxxxxxxxxx-bucket“
                S3Key: “xxxxxxxxxxxx.zip“
            EphemeralStorage: 
                Size: 10240
            FunctionName: “ephemeral_storage_lambda_cfn“
            Role: “arn:aws:iam::xxxxxxxxxxxx:role/service-role/ephemeral_storage_lambda-cfn-role-xxxxxxxx“
            Runtime: “python3.9“

ストレージ設定の確認

コンソール上で確認すると10240MB(10GB)に設定されています。

料金について

従来通り、512MBのストレージ量にコストはかかりませんが、512MBを超える追加ストレージについて料金が発生します。
Lambda エフェメラルストレージの料金

リージョン 1GB x 1秒 単価
東京 0.000000037USD
大阪 0.000000037USD
バージニア北部 0.0000000309USD

また、AWSが提供している料金計算ツールを使用することで料金の目安が分かります。
AWS Pricing Calculator

モニタリングについて

エフェメラルストレージの使用容量をモニタリングできます。
Lambda関数の拡張モニタリング(Lambda Insights)を有効にすることでモニタリングが可能になります。
[編集]を押下して…

[拡張モニタリング]をONに変更して[保存]を押下

tmp_usedで使用容量がメトリクスにて取得可能、モニタリングできるようになります。
参考:Lambda Insights によって収集されたメトリクス

また、CloudWatchアラームと連携して、使用容量の閾値を超えたらアラームを発報することもできます。

まとめ

  • AWS Lambdaのエフェメラル(一時的)ストレージが上限10GBにアップデートされました。
  • 512MBを超える追加ストレージに対して料金が発生します。
  • ストレージの使用容量をモニタリングできます。

投稿者プロフィール

nagura
2021年4月からスカイアーチに中途入社しました。
AWSともっと仲良くなるべく日々勉強中です。