Amazon S3 Express One Zone ディレクトリバケットを Mountpoint for Amazon S3 でマウントしてみた #AWSreInvent

2023.12.01

Amazon S3 Express One Zone ストレージクラスの登場と同時に Mountpoint for Amazon S3 へ対応しました。さっそく EC2 にマウント可能か試してみました。

Mountpoint for Amazon S3 now supports the Amazon S3 Express One Zone storage class

Amazon S3 Express One Zone とは

re:Invent 2023 で発表された新しいストレージクラスです。S3 Standard と比べると耐久性を多少犠牲にして高パフォーマンスを実現したストレージクラスです。大量のデータを処理する AL/ML トレーニングや、ゲノム解析などのワークロードでは EC2 にマウントして使いたい場面があるのではないでしょうか。

やってみた

EC2(Amazon Linux 2023)に Moutpoint for Amazon S3(v1.3.1)を使い S3 Express One Zone をマウントしてみます。

EC2 に必要な IAM ポリシー

公式ドキュメントを参考にしました。

IAM identity-based policies for S3 Express One Zone - Amazon Simple Storage Service

私が確認したタイミングではドキュメント記載のポリシーだとエラーになりました。修正した結果が以下になります。

  • Resourceの S3 Express One Zone の ARN を差し替えてご利用ください

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAccessRegionalEndpointAPIs",
            "Effect": "Allow",
            "Action": [
                "s3express:DeleteBucket",
                "s3express:DeleteBucketPolicy",
                "s3express:CreateBucket",
                "s3express:PutBucketPolicy",
                "s3express:GetBucketPolicy",
                "s3express:ListAllMyDirectoryBuckets"
            ],
            "Resource": "arn:aws:s3express:us-east-1:123456789012:bucket/mountpoint-for-s3--use1-az4--x-s3/*"
        },
        {
            "Sid": "AllowCreateSession",
            "Effect": "Allow",
            "Action": "s3express:CreateSession",
            "Resource": "*"
        }
    ]
}

補足

AmazonS3FullAccessのポリシーでも S3 Express One Zone(s3express)は非対応でした。なお、AmazonS3ExpressFullAccess的な管理ポリシーは確認できませんでした。

参考: AmazonS3FullAccessのポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*",
                "s3-object-lambda:*"
            ],
            "Resource": "*"
        }
    ]
}

マウントコマンド

OS は Amazon Linux 2023 を利用しています。

wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
sudo yum install ./mount-s3.rpm -y

Mountpoint for Amazon S3 はバージョン1.3.0から S3 Express One Zone をサポートしています。

$ mount-s3 --version
mount-s3 1.3.1

/mnt/s3ディレクトリに S3 Express One Zone ディレクトリバケットをマウントしてみました。

$ sudo /mnt/s3
$ sudo mount-s3 --allow-delete --allow-other mountpoint-for-s3--use1-az4--x-s3 /mnt/s3
bucket mountpoint-for-s3--use1-az4--x-s3 is mounted at /mnt/s3

読み書きテスト

# ディレクトリ確認
$ ll /mnt/s3
total 0

# ファイル書き込み
$ touch test.txt
$ sudo mv test.txt /mnt/s3
$ ll /mnt/s3
total 0
-rw-r--r--. 1 root root 0 Nov 30 20:03 test.txt

S3 Express One Zone のディレクトリバケット内にオブジェクト(ファイル)が書き込まれていることを確認できました。

# ファイル取り出し ※ --alow-delete 指定により可能です
$ sudo mv /mnt/s3/test.txt .
$ ll /mnt/s3
total 0

オブジェクトを削除できたことを確認できました。

おわりに

S3 Express One Zone を EC2 に必要な手順を紹介しました。Mountpoint for Amazon S3 経由でどの程度のパフォーマンスがでるかは別途検証しご紹介したいと思います。

参考