Amazon EC2 インスタンスでの Amazon S3 の使用
Amazon Simple Storage Service (Amazon S3) は業界をリードするスケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです。Amazon S3 を使用して、データレイク、ウェブサイト、バックアップ、ビッグデータ分析など、さまざまなユースケースの任意の量のデータを Amazon EC2 インスタンスから、またはインターネット経由でどこからでも保存および取得できます。詳細については「Amazon S3 とは」を参照してください。
Amazon EC2 インスタンスから Amazon S3 データにアクセスする方法は 2 つあります:
-
ファイルアクセス — Amazon S3 ファイルを使用して、インスタンスでの S3 バケットを高性能ファイルシステムとしてマウントします。
-
オブジェクトアクセス – Amazon S3 API、AWS CLI、AWS SDK、または wget などのツールを使用して、S3 との間でオブジェクトをコピーします。
Amazon S3 ファイルによるファイルアクセス
Amazon S3 Files は、S3 汎用バケットをコンピューティングインスタンスでの高性能ファイルシステムとしてマウントできるサーバーレスファイルシステムです。S3 ファイルでは、ローカルマウントパスでの読み取りと書き込みなどの標準ファイルシステムオペレーションを使用して、S3 オブジェクトにファイルとしてアクセスできます。
S3 ファイルシステムは、起動時、または実行中のインスタンスに対して後から、EC2 インスタンスにマウントできます。
前提条件
EC2 インスタンスで S3 ファイルをセットアップする前に、以下があることを確認してください:
-
使用可能な状態の S3 ファイルシステムと少なくとも 1 つのマウントターゲット。S3 ファイルシステムの作成の詳細については、「Amazon S3 ユーザーガイド」の「Amazon S3 ファイルの使用」を参照してください。
-
アタッチされたインスタンスプロファイルがある Amazon EC2 インスタンス。ファイルシステムをマウントするために必要なアクセス許可の詳細については、「Amazon S3 ユーザーガイド」の「IAM ロールとポリシー」を参照してください。
-
インスタンスとファイルシステムのマウントターゲット間の NFS トラフィック (ポート 2049) を許可するセキュリティグループ。必要なセキュリティグループ設定の詳細については、「Amazon S3 ユーザーガイド」の「セキュリティグループ」を参照してください。
EC2 コンソールを使用して起動時に EC2 インスタンスにファイルシステムをマウントするには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
[インスタンスを起動] を選択してください。
-
[Network settings] (ネットワーク設定) で、次の操作を行います:
-
[編集] を選択します。
-
[Subnet (サブネット)] で、サブネットを選択してください。
-
デフォルトのセキュリティグループを選択して、EC2 インスタンスが S3 ファイルシステムにアクセスできることを確認します。このセキュリティグループを使用して、Secure Shell (SSH) で EC2 インスタンスにアクセスすることはできません。SSH によるアクセスについては、後でデフォルトのセキュリティグループを編集し、SSH を許可するルールを追加するか、SSH を許可する新しいセキュリティグループを追加できます。以下の設定を使用できます。
-
タイプ: SSH
-
[Protocol]: TCP
-
ポート範囲: 22
-
出典: Anywhere 0.0.0.0/0
-
-
-
[ストレージの設定] で、次の作業を行います:
-
[ファイルシステム] で、[S3 Files] を選択します。
-
[Add shared file system] (共有ファイルシステムの追加) を選択します。
-
[S3 ファイルシステム] では、ファイルシステムは、ネットワーク設定で選択したサブネットに基づいて、アベイラビリティーゾーンに表示されます。マウントする S3 ファイルシステムを選択します。ファイルシステムがない場合は、[新しいファイルシステムを作成する] を選択して新しいファイルシステムを作成します。
-
ファイルシステムをマウントする EC2 インスタンスのローカルマウントパスを入力します (例:
/mnt/s3files)。 -
ファイルシステムをマウントし、fstab に追加するコマンドが生成されます。このコマンドは、[高度な詳細] の [ユーザーデータ] フィールドに追加できます。その後、EC2 インスタンスは、起動時および再起動されるたびに S3 ファイルシステムをマウントするよう設定されます。これらのコマンドは、起動後に EC2 インスタンスで実行することもできます。
-
-
[高度な詳細] で、インスタンスプロファイルをインスタンスにアタッチします。IAM ロールには、ファイルシステムをマウントし、S3 バケットにアクセスするためのアクセス許可がある必要があります。必要なアクセス許可の詳細については、「Amazon S3 ユーザーガイド」の「IAM ロールとポリシー」を参照してください。
-
[インスタンスを起動] を選択してください。
インスタンスの起動後、必要なソフトウェアユーティリティがインストールされ、ファイルシステムがマウントされます。ローカルマウントパスに移動することで、ファイルシステムを表示できます。
起動後に EC2 インスタンスにファイルシステムをマウントするには
-
Secure Shell (SSH) を介して、または EC2 コンソールで EC2 Instance Connect を使用して EC2 インスタンスに接続します。
-
S3 ファイルシステムをマウントするには、マウントヘルパーユーティリティ
amazon-efs-utilsを使用します。Linux ディストリビューションに応じて、次のいずれかのコマンドを使用してamazon-efs-utilsパッケージをインストールします:-
Amazon Linux を使用している場合は、次のコマンドを実行して Amazon のリポジトリから efs-utils をインストールします:
sudo yum -y install amazon-efs-utils -
その他のサポートされている Linux ディストリビューション
を使用している場合は、次のコマンドを実行します: curl https://amazon-efs-utils.aws.com/efs-utils-installer.sh | sudo sh -s -- --install -
その他の Linux ディストリビューションについては、GitHub の efs-utils
リポジトリを参照してください。
-
-
次のコマンドを使用して、ファイルシステムのマウントポイントのディレクトリを作成します:
sudo mkdir {path/to/mount} -
S3 ファイルシステムをマウントします:
FS="{YOUR_FILE_SYSTEM_ID}" sudo mount -t s3files $FS:/ {path/to/mount} -
ファイルシステムがマウントされていることを確認します:
df -h {path/to/mount}
S3 バケット内のオブジェクトをファイルとして表示するには
前述の手順を完了したので、標準のファイルシステムオペレーションを使用して、S3 オブジェクトをローカルマウントパス上のファイルとして読み書きできるようになりました。S3 バケットにオブジェクトがある場合は、次のコマンドを使用して、オブジェクトをファイルとして表示できます:
ls {path/to/mount}
オブジェクトベースのアクセス
S3 API、AWS CLI、AWS SDK、または標準 HTTP ツールを使用して、Amazon S3 との間でファイルをコピーできます。必要なアクセス許可がある場合は以下の方法を使用して、Amazon S3 とインスタンスとの間でファイルをコピーできます。