Amazon EFS のスループットモード Bursting から Elastic へ AWS CLI で手軽にモードを切り替えてみた

2022.12.24

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

Amazon EFS の新しいスループットモードElastic Throughput モードが re:Invent 2022 で発表されました。

Bursting Throughput モードと Elastic Throughput モード間の変更には制限がないため、AWS CLI で気軽に切り替えできるか確認してみました。

想定しているユースケース

今回の検証で想定しているユースケースは Bursting Throughput モードで利用可能なバーストスループット性能がボトルネックになる様な処理を走らせるときに従量課金で一時的にスループットを稼ぎたいときを想定しています。

Provisioned Throughput モードも同様のことが可能です。ですが、モード変更後24時間の間はモードの切り替えが制限されます。短時間の処理のために24時間も Provisioned Throughput に課金しないといけないのが悩みどころでした。

より柔軟でスループットを確保できる Elastic Throughput を一時的に利用するときに手軽にモードの切り替えができるよう AWS CLI での操作を確認します。

Elastic Throughput モードはデータ転送量に基づく従量課金体系です。要はファイルの読み書きサイズに応じて課金されるため、Provisioned Throughput モードの上位互換ではなく利用用途次第です。

やってみる

実行環境

$ aws --version
aws-cli/2.9.9 Python/3.11.0 Darwin/21.6.0 source/arm64 prompt/off

EFS ID の確認

モード切り替え対象の EFS の ID を確認します。EFS が複数ある場合はマネージメントコンソールから確認した方が確認しやすいかもしれません。変更対象の EFS を誤らないように注意して確認しましょう。

aws efs describe-file-systems

実行結果

{
    "FileSystems": [
        {
            "OwnerId": "123456789012",
            "CreationToken": "31578e27-6128-4103-b233-73a46da54b99",
            "FileSystemId": "fs-0dd2818764775f745",
            "FileSystemArn": "arn:aws:elasticfilesystem:ap-northeast-1:123456789012:file-system/fs-0dd2818764775f745",
            "CreationTime": "2022-12-24T08:18:15+09:00",
            "LifeCycleState": "available",
            "Name": "test-efs",
            "NumberOfMountTargets": 2,
            "SizeInBytes": {
                "Value": 6144,
                "ValueInIA": 0,
                "ValueInStandard": 6144
            },
            "PerformanceMode": "generalPurpose",
            "Encrypted": true,
            "KmsKeyId": "arn:aws:kms:ap-northeast-1:123456789012:key/203cecb1-cf1a-47e5-a70b-0c00778c5d20",
            "ThroughputMode": "bursting",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "test-efs"
                },
                {
                    "Key": "aws:elasticfilesystem:default-backup",
                    "Value": "enabled"
                }
            ]
        }
    ]
}

マネージメントコンソールから確認すると以下の EFS のモードを AWS CLI で切り替えてみます。

準備

確認した EFS の ID を変数に入れておきます。

EFSID=fs-0dd2818764775f745

モードを変更してみる

Elastic Throughput モードへ

aws efs update-file-systemコマンドに引数でelasticを指定して実行します。

aws efs update-file-system \
--file-system-id ${EFSID} \
--throughput-mode elastic

コマンド実行後結果が JSON で返ってきますが説明の都合、改めて確認します。

aws efs describe-file-systems --file-system-id ${EFSID}

"ThroughputMode""elastic"になっていることが確認できました。

確認結果

{
    "FileSystems": [
        {
            "OwnerId": "060238338506",
            "CreationToken": "31578e27-6128-4103-b233-73a46da54b99",
            "FileSystemId": "fs-0dd2818764775f745",
            "FileSystemArn": "arn:aws:elasticfilesystem:ap-northeast-1:060238338506:file-system/fs-0dd2818764775f745",
            "CreationTime": "2022-12-24T08:18:15+09:00",
            "LifeCycleState": "available",
            "Name": "test-efs",
            "NumberOfMountTargets": 2,
            "SizeInBytes": {
                "Value": 6144,
                "ValueInIA": 0,
                "ValueInStandard": 6144
            },
            "PerformanceMode": "generalPurpose",
            "Encrypted": true,
            "KmsKeyId": "arn:aws:kms:ap-northeast-1:060238338506:key/203cecb1-cf1a-47e5-a70b-0c00778c5d20",
            "ThroughputMode": "elastic",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "test-efs"
                },
                {
                    "Key": "aws:elasticfilesystem:default-backup",
                    "Value": "enabled"
                }
            ]
        }
    ]
}

マネージメントコンソールから確認しても同様に伸縮自在(Elastic)になっています。

24時間制限がないため Bursting Throughput モードへすぐに戻してみます。

Bursting Throughput モードへ

aws efs update-file-systemコマンドの引数をbursting指定に変更して実行します。

aws efs update-file-system \
--file-system-id ${EFSID} \
--throughput-mode bursting

同様に確認します。

aws efs describe-file-systems --file-system-id ${EFSID}

"ThroughputMode""bursting"に戻っているが確認できました。

{
    "FileSystems": [
        {
            "OwnerId": "060238338506",
            "CreationToken": "31578e27-6128-4103-b233-73a46da54b99",
            "FileSystemId": "fs-0dd2818764775f745",
            "FileSystemArn": "arn:aws:elasticfilesystem:ap-northeast-1:060238338506:file-system/fs-0dd2818764775f745",
            "CreationTime": "2022-12-24T08:18:15+09:00",
            "LifeCycleState": "available",
            "Name": "test-efs",
            "NumberOfMountTargets": 2,
            "SizeInBytes": {
                "Value": 6144,
                "ValueInIA": 0,
                "ValueInStandard": 6144
            },
            "PerformanceMode": "generalPurpose",
            "Encrypted": true,
            "KmsKeyId": "arn:aws:kms:ap-northeast-1:060238338506:key/203cecb1-cf1a-47e5-a70b-0c00778c5d20",
            "ThroughputMode": "bursting",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "test-efs"
                },
                {
                    "Key": "aws:elasticfilesystem:default-backup",
                    "Value": "enabled"
                }
            ]
        }
    ]
}

注意事項(2022/12/24日現在)

Elastic Throughput モードのスループットはライト1GiB/s、リード3GiB/sです。一方で Bursiting Throughput モードのスループット上限はリージョンによって異なります。リージョン毎の性能上限は以下のリンクを参照ください。

Amazon EFS quotas and limits - Amazon Elastic File System

仮に us-east-2 で Bursting Throughput モードの EFSに 10TiB 以上のデータ容量がスタンダードストレージクラスもしくは、One Zone ストレージクラスにある状態だと、Elastic Throughput モードの上限スループット値より高いバーストスループット(最大でライト3GiB/s、リード5GiB/s)が提供されています。モードを切り替えることでスループット性能の上限が低下しないか事前に確認オススメします。

ap-northeast-1 の場合は、Elastic Throughput スループットと Bursiting Throughput のバーストスループットの上限値が同じです。なので、Bursting Throughput から Elastic Throughput モードへ切り替えによる性能劣化はありません。

おわりに

Bursiting Throughput と Elastic Throughput モードは気軽に行き来できることが確認できました。エッジケースになるかもしれませんが有効に活用できる場面があるのではないでしょうか。

参考