Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sambaってなんですか?〜令和でもLinuxとWindowsでファイル共有はするよ〜

 Sambaってなんですか?〜令和でもLinuxとWindowsでファイル共有はするよ〜

IT系の濃ゆい話をする会#7のLT資料です。

Sambaは古くからある技術で存在は知っていましたが、
最近になってファイルサーバーの案件を担当するようになりその重要性を認識しました。
本資料はSambaの超概要をお話しする資料です。

Satoshi Kaneyasu

July 17, 2023
Tweet

More Decks by Satoshi Kaneyasu

Other Decks in Programming

Transcript

  1. ⾃⼰紹介 • 兼安 聡 • 株式会社サーバーワークス(2023.05〜) • WEB系エンジニアからAWSを学んで なんでもエンジニアへ。 •

    CSゲーム、サックス、筋トレが趣味。 • 始めてPCに触れたのは中学で機種はFM-7。 (中学の理科の先⽣のお下がり) FM-7は当時でも相当古い機種ですよ。 1年はFM-7で3年はX68でした。格差︕
  2. Sambaでできること • ファイル共有︓Linux/UNIXとWindows間でファイルを共有します。 • プリンタ共有︓WindowsクライアントからLinux/UNIXサーバーに接続されたプリ ンタを使⽤します。 • ネットワーク認証︓Windowsドメインコントローラとして動作し、ネットワーク 認証を提供します。 Sambaは、Linux/UNIXとWindows間でファイル共有やプリンタ共有を実現する

    ソフトウェアです。 Sambaは、MicrosoftのWindowsネットワーキングプロトコルである Server Message Block (SMB) / Common Internet File System (CIFS) を実装しています。 重要! 開発⽤の仮想マシンでWindowsホストとゲストOSでファイル 共有する時もSambaを使うことがあります。
  3. AWSにおけるSambaの利⽤例 1. AWSのファイルサーバーサービスであるAmazon EFSをLinuxにマ ウントしてSambaでWindowsPCとファイル共有することができま す。 2. 同じくファイルサーバーサービスであるAmazon FSx for

    Windowsは、SMBプロトコルをネイティブサポートしています。 3. LambdaからSMBプロトコルを⽤いてWindowsの共有フォルダに あるファイルを取得、S3にアップすることができます。 こちら、コードを次頁より載せてます。
  4. LAMBDAでSMBプロトコルを使⽤してみる ①WINDOWSサーバーの準備 • EC2でWindowsサーバーを起動する。 • Administratorのパスワードを控える。 • PowerShellで共有フォルダの設定を⾏う。 • 適当なファイルを作る。

    • TCPの445(SMB)の通信を許可。 SMBプロトコルのポート番号が445であること。 それを通信許可するところがポイントです。 New-Item -Path "C:¥" -Name "SharedFolder" -ItemType "directory" New-SmbShare -Name "SharedFolder" -Path "C:¥SharedFolder" -FullAccess "Everyone" PowerShell
  5. LAMBDAでSMBプロトコルを使⽤してみる ②LAMBDAの⽤意 import smbclient import boto3 def lambda_handler(event, context): (略)

    # 共有フォルダからファイルを取得 file_content = None with smbclient.open_file(f"//{smb_server}/{smb_share}/{smb_file_path}", username=smb_username, password=smb_password, mode='rb') as smb_file: # バイナリモードで読み込む file_content = smb_file.read() # S3にファイルをアップロード s3_client = boto3.client('s3') s3_client.put_object(Body=file_content, Bucket=s3_bucket, Key=s3_key) Python