0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux(Samba)経由でWindows Server 2016からAWS S3 Filesを利用する構成の検証

0
Last updated at Posted at 2026-09-04

1.はじめに

既存のWindows Server 2016上で稼働する業務アプリケーションのファイル保存先として、AWS S3 Filesを利用できるか検証しました。

当初はWindows Server 2016からAWS S3 Filesを直接利用する構成を検討しましたが、検証環境の制約を踏まえ、LinuxサーバにAWS S3 Filesをマウントし、Samba経由でWindows Serverへ共有する構成を採用しました。

本記事では、Linux(Samba)経由でWindows Server 2016からAWS S3 Filesを利用する構成の構築手順および動作検証結果について紹介します。

2.構成検討

当初想定していた構成

AWS S3 Filesを既存システムのファイル保存先として利用するにあたり、当初はWindows Server 2016からAWS S3 Filesを直接利用する構成を想定していました。

image.png

Windows Server 2016から直接利用しなかった理由

Windows Server 2016にはNFSクライアント機能が用意されていますが、AWS S3 FilesはNFS v4.1以降を利用するサービスであり、Windows Server 2016環境から直接利用する構成は採用しませんでした。
そこで、Amazon LinuxへAWS S3 Filesをマウントし、Sambaを介してWindows Server 2016へ共有する構成を採用しました。

採用した構成

Windows Server 2016からAWS S3 Filesを直接利用する構成は採用せず、Amazon Linuxを経由して利用する構成としました。

Amazon Linux上でAWS S3 Filesをマウントし、Sambaを利用してSMB共有を提供することで、Windows Server 2016からは通常のファイルサーバと同様にアクセスできるようにしています。

image.png

冗長化構成の検討

高可用性を考慮し、複数のAmazon LinuxサーバでSamba共有を提供し、NLB(Network Load Balancer)を経由してアクセスする構成についても検証を実施しました。

今回の検証では、AWS S3 FilesをマウントしたAmazon Linuxサーバを2台構築し、各サーバでSamba共有を提供しました。

Windows Server 2016からはNLBのDNS名を利用して共有フォルダへ接続する構成とし、Linuxサーバ障害時の継続利用を考慮した冗長化構成の動作を確認しました。

image.png

3.AWS S3 Filesの構築

前提

  • VPC、EC2、Directory Bucket等のAWSリソースは作成済みであること
  • AWS S3 Filesを利用するために必要な権限設定が実施可能であること
  • Windows Server 2016およびAmazon Linuxへ管理者権限でアクセス可能であること
  • Amazon Linuxサーバの構築は完了していること

S3 Filesの作成

対象のDirectory Bucketを選択し、「ファイルシステム-新規」タブをクリックします。
「ファイルシステムを作成」ボタンをクリックします。
image.png

対象のWindows Server 2016があるVPCを選択し、ファイルシステムを作成します。
image.png

数分で作成されます。
image.png

4.Amazon Linuxからの接続設定

EC2 IAMロールの設定

Amazon LinuxからAWS S3 Filesへアクセスするため、EC2インスタンスに必要なIAM権限を付与します。

  1. 対象EC2インスタンスを選択
  2. 「セキュリティ」タブからIAMロールをクリック
  3. IAMコンソールで「許可」タブを開く
  4. 「許可を追加」→「ポリシーをアタッチ」を選択
  5. AmazonS3FilesFullAccess を検索して追加
    image.png

設定後、EC2インスタンスからAWS S3 Filesへアクセスできるようになります。

マウントポイントの作成

Amazon Linux上で、S3 Filesをマウントするためのディレクトリを作成します。

sudo mkdir -p /mnt/s3/fs1

S3 Filesのマウント

作成したマウントポイントにS3 Filesをマウントします。
S3 FilesのIDは、S3 Filesの「プロパティ」タブから確認できます。
image.png

以下のコマンドを実行してS3 Filesをマウントします。

sudo mount -t s3files <S3 Files ID>:/ /mnt/s3/fs1 -v

S3 Filesのマウント確認

Directory Bucketに事前にテストファイルを配置しておきます。
image.png

S3 Filesのマウント後、マウントポイントへアクセスし、Directory Bucket内のデータが参照できることを確認します。

ls -la /mnt/s3/fs1

実行結果として、Directory Bucketへ配置した test.txt が表示されていることを確認できました。

image.png

Sambaのインストール

Amazon LinuxへSambaをインストールします。

sudo dnf install samba -y

Sambaの設定

S3 Filesをマウントしたディレクトリを共有するため、Samba設定ファイルを編集します。

sudo vi /etc/samba/smb.conf
[S3Files]
    path = /mnt/s3/fs1
    browseable = yes
    writable = yes
    read only = no
    guest ok = no

image.png

Sambaユーザーの設定

Windows Server 2016から共有フォルダへアクセスするため、Sambaユーザーを設定します。
本検証では、Amazon Linuxのデフォルトユーザーである ec2-user を利用しました。
以下のコマンドを実行し、ec2-user をSambaユーザーとして登録します。

sudo smbpasswd -a ec2-user

Sambaサービスの起動

Sambaサービスを起動し、自動起動を有効化します。

sudo systemctl enable --now smb

設定後、サービスが正常に起動していることを確認します。

sudo systemctl status smb

実行結果として Active: active (running) が表示され、正常に起動していることを確認できました。
image.png

ec2-userの権限設定

S3 Filesをマウントしたディレクトリへアクセスできるよう、所有者を ec2-user に変更します。
※ 必要に応じて、マウントポイントの所有者を変更します。

sudo chown ec2-user:ec2-user /mnt/s3/fs1

Windows Server 2016からの接続確認

Windows Server 2016から共有フォルダへ接続します。
接続時には、Sambaユーザーとして設定した ec2-user とパスワードを利用します。
共有フォルダへ接続後、S3 Files上のファイルおよびディレクトリが参照できることを確認します。

\\<Amazon LinuxのIPアドレス>\S3Files

image.png

事前にDirectory Bucketへ配置した test.txt が表示されていることを確認できました。
これにより、Windows Server 2016 → Samba → S3 Files の経路でアクセスできることを確認できました。

5. NLBによる冗長化構成

冗長化構成の概要

Amazon Linuxサーバ1台でSamba共有を提供する構成でもAWS S3 Filesを利用できますが、サーバ障害が発生した場合はWindows Server 2016から共有フォルダへアクセスできなくなります。
そのため、高可用性を考慮し、複数のAmazon LinuxサーバでSamba共有を提供し、NLB(Network Load Balancer)を経由してアクセスする構成についても検証を実施しました。
今回の検証では、2台のAmazon LinuxサーバにAWS S3 Filesをマウントし、それぞれでSamba共有を提供する構成を構築しました。

image.png

Windows Server 2016からはNLBのDNS名を利用して共有フォルダへ接続できます。これにより、利用者は接続先サーバを意識することなく共有フォルダを利用できます。

Amazon Linuxサーバの追加

1台目と同様の設定を実施したAmazon Linuxサーバを追加で構築します。
以下の設定を実施し、2台のAmazon Linuxサーバで同一の共有を提供できる状態としました。

  • AWS S3 Filesのマウント
  • Sambaのインストール
  • Samba設定
  • Sambaユーザー設定
  • セキュリティグループ設定

ターゲットグループの設定

ターゲットグループの作成

NLBの接続先として利用するターゲットグループを作成します。
EC2コンソールから「ターゲットグループ」を選択し、「ターゲットグループの作成」をクリックします。

image.png

本検証では、以下の設定でターゲットグループを作成しました。

  • ターゲットの種類:インスタンス
  • ターゲットグループ名:任意
  • プロトコル:TCP
  • ポート:445
  • IPアドレスタイプ:IPv4
  • VPC:Amazon Linuxインスタンスが配置されているVPC
  • ヘルスチェックプロトコル:TCP

設定後、「次へ」をクリックします。

image.png

ターゲットの登録

作成したターゲットグループへAmazon Linuxサーバを登録します。
本検証では、Sambaを構成した2台のAmazon Linuxサーバをターゲットとして登録しました。
登録するインスタンスを選択し、「保留中として以下を含める」をクリックします。
登録内容を確認後、「次へ」をクリックします。
image.png

確認と作成

設定内容および登録するターゲットを確認します。
本検証では、2台のAmazon Linuxサーバが登録されていることを確認しました。
内容に問題がないことを確認し、「ターゲットグループの作成」をクリックします。
image.png

NLBの作成

Windows Server 2016から共有フォルダへアクセスする際の接続先を統一するため、Network Load Balancer(NLB)を作成します。

EC2コンソールから「ロードバランサー」を選択し、「ロードバランサーの作成」をクリックします。

基本的な設定

本検証では以下の設定でNLBを作成しました。

  • タイプ:Network Load Balancer
  • スキーム:内部
  • IPアドレスタイプ:IPv4

image.png

ネットワークマッピング

NLBを配置するVPCおよびサブネットを選択します。
本検証では、Amazon Linuxインスタンスが配置されているVPCおよびサブネットを選択しました。

image.png

セキュリティグループとリスナーとルーティング

Windows Server 2016からのSMB通信を受け付けるため、セキュリティグループおよびリスナーを設定します。
本検証では、SMBで使用するTCP 445を許可し、受信した通信を前項で作成したターゲットグループへ転送するよう設定しました。

  • セキュリティグループ:TCP 445 を許可
  • プロトコル:TCP
  • ポート:445
  • ターゲットグループ:前項で作成したターゲットグループ

image.png

確認

ここまでの設定内容を確認します。
本検証では、以下の設定でNLBを構成しました。

  • スキーム:内部
  • IPアドレスタイプ:IPv4
  • VPC:Amazon Linuxインスタンスが配置されているVPC
  • リスナー:TCP 445
  • 転送先:作成したターゲットグループ

image.png
設定内容に問題がないことを確認し、「ロードバランサーの作成」をクリックします。

NLBの作成完了

NLB作成後、ロードバランサーの詳細画面を確認します。

image.png
リスナーに TCP 445 が設定されていること、および先ほど作成したターゲットグループへ転送される設定になっていることを確認できます。

以降の接続確認では、NLBのDNS名を利用して共有フォルダへアクセスします。

ターゲットの状態確認

ターゲットグループ作成後、登録したAmazon Linuxサーバの状態を確認します。

image.png
ヘルスチェック完了後、登録した2台のAmazon Linuxサーバが正常(Healthy)状態となることを確認しました。

NLBは正常状態のターゲットへトラフィックを転送するため、この状態になっていることを確認してから接続確認を実施します。

Windows Server 2016からの接続確認

Windows Server 2016からNLBのDNS名を指定して共有フォルダへ接続します。

\\<NLBのDNS名>\S3Files

接続後、共有フォルダ内のファイルおよびディレクトリが参照できることを確認しました。
これにより、Windows Server 2016 → NLB → Amazon Linux(Samba) → AWS S3 Files の経路で正常にアクセスできることを確認できました。

image.png

フェイルオーバー確認

NLBによる冗長化構成が正常に機能するか確認するため、Amazon Linuxサーバを1台停止した状態で動作確認を実施しました。
ターゲットグループの状態を確認すると、2台のAmazon Linuxサーバのうち1台が Unhealthy となり、もう1台が Healthy 状態を維持していることを確認できました。

image.png

この状態でWindows Server 2016から共有フォルダへアクセスを実施したところ、引き続き共有フォルダを利用できることを確認しました。
image.png

また、共有フォルダ内のファイル参照および更新についても問題なく実施できることを確認しました。

これにより、片系障害発生時でも正常なAmazon Linuxサーバを経由して共有フォルダへのアクセスを継続できることを確認できました。

6. 検証結果

今回の検証で確認できた内容を以下に示します。

  • Amazon LinuxへAWS S3 Filesをマウントできること
  • Samba経由でWindows Server 2016から共有フォルダとして利用できること
  • ファイルおよびフォルダの作成、更新、削除が実施できること
  • NLBを利用した冗長化構成を構築できること
  • Amazon Linuxサーバ1台停止時でも共有フォルダへのアクセスを継続できること

7. まとめ

本記事では、Windows Server 2016からAWS S3 Filesを利用する構成について検証しました。

当初はWindows Server 2016からAWS S3 Filesを直接利用する構成を検討しましたが、Amazon LinuxおよびSambaを経由する構成を採用することで、既存環境への影響を抑えながらAWS S3 Filesを利用できることを確認しました。

また、NLBによる冗長化構成を組み合わせることで、Amazon Linuxサーバ障害時でも共有フォルダへのアクセスを継続できることを確認できました。

一方で、AWS S3 Filesではファイルシステム上の変更が即座にS3バケットへ反映されるのではなく、一定時間(60秒)の非アクティブ期間経過後にS3バケットへエクスポートされる仕様となっています。今回の検証でも、S3 FilesへアップロードしたファイルがDirectory Bucketへ反映されるまで約1分程度かかることを確認できました。

参考:
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/s3-files-synchronization.html

今後は、Webアプリケーション利用時のキャッシュ挙動やファイル更新の反映タイミング、複数クライアントからアクセスした場合の挙動について、さらに検証を進めたいと考えています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?