วิธีอัปโหลดไฟล์โดยตรงไปยัง EFS ด้วย AWS Transfer Family ผ่าน SFTP

เราสามารถอัปโหลดไฟล์ข้อมูลต่างๆ ไปเก็บไว้ที่ EFS ได้โดยไม่ต้องใช้ EC2 เพียงแค่เราทำการเชื่อมต่อ EFS กับ Transfer Family เข้าด้วยกัน และตั้งค่าการเชื่อมต่อผ่าน SFTP ก็จะทำให้เราใช้งาน WinSCP ได้อย่างสะดวกเหมือนกับการใช้งาน EC2 นั่นเอง

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

สวัสดีครับ ผมจะมาอธิบายเกี่ยวกับ วิธีอัปโหลดไฟล์โดยตรงไปยัง EFS ด้วย Transfer Family ผ่าน SFTP
เราสามารถใช้ S3 และ EFS ใน Transfer Family ได้ ครั้งนี้ผมจะมาสาธิตการเชื่อมต่อกับ EFS ครับ

Service ที่จะใช้ในบทความนี้คือ:

  • Amazon Elastic File System (EFS)
    • File systems
  • Amazon EC2
    • Security Groups
    • Elasstic IPs
  • AWS Identity and Access Management (IAM)
    • Roles
  • AWS Transfer Family
    • Servers

โปรแกรมที่จะใช้ในบทความนี้คือ:

  • WinSCP

เป้าหมายในการทำ

กาารสร้าง EFS

ไปที่ช่องค้นหา พิมพ์ ?︎EFS» เลือกEFS

มาที่เมนูด้านซ้าย เลือกFile systems

คลิกCreate file system

Name:tinnakorn-test(ชื่ออะไรก็ได้) » กดปุ่มCreate

ทีนี้เราก็จะได้ EFS ของเรามาแล้วครับ

การสร้าง Elastic IP และ Security Group ใน EC2

การสร้างฟังก์ชัน Elastic IP (EIP) และ Security Group นี้ จะอยู่ใน Service ที่ชื่อว่า EC2

ก่อนที่จะเริ่มสร้างฟังก์ชันที่กล่าวมานี้ ให้ค้นหา ServiceEC2แล้วคลิกที่EC2ตามรูปภาพ แล้วเริ่มขั้นตอนถัดไปได้เลย

การสร้าง Elastic IP (EIP)

มาที่เมนูด้านซ้าย เลือกElastic IPs

คลิกปุ่มAllocate Elastic IP address

เลื่อนลงมาด้านล่างเพื่อตั้งค่า Tags
คลิกAdd new tag
Key:Name
Value - optional:tinnakorn-test-transferfamily
คลิกAllocate

เมื่อเสร็จแล้วจะแสดงหน้าจอแบบนี้

การสร้าง Security Group สำหรับใช้กับ EFS

มาที่หัวข้อ ▼ Network & Security เลือกSecurity Groups

คลิกCreate security group

การตั้งค่า Basic details:
» Security group name:tinnakorn-test-transferfamily(ชื่ออะไรก็ได้)
» Description:tinnakorn-test-transferfamily(ชื่ออะไรก็ได้)

การตั้งค่า Inbound rules:
คลิกปุ่มAdd rule
Type:SSH
Source:My IP

เมื่อตั้งค่าเสร็จแล้ว เลื่อนลงมาด้านล่างสุด คลิกที่ปุ่มCreate security groupได้เลยครับ

สร้าง Key Pair ด้วย PuTTYgen

ขั้นตอนนี้จะทำการสร้าง Key Pair โดยใช้โปรแกรม PuTTYgen เพื่อนำไปใช้ในการสร้าง AWS Transfer Family

ผู้ใช้งานที่มีโปรแกรม PuTTY อยู่แล้ว ข้ามขั้นตอนนี้ไปได้เลยครับ

สำหรับผู้ใช้งานที่ยังไม่เคยใช้โปรแกรม PuTTY สามารถ Download PuTTY ได้ที่นี่เลยครับ

การดาวน์โหลดและติดตั้งโปรแกรมควรเลือกให้ตรงกับระบบ Windows ของเรา เช่น ถ้าระบบ Windows ของเราเป็น 64-bit ก็ให้เลือกดาวน์โหลดเป็น64-bit x86เป็นต้น ซึ่งในปัจจุบันนี้ 32-bit ก็ไม่ค่อยมีแล้ว หรือ อาจจะพบได้ในคอมพิวเตอร์รุ่นเก่าที่มีขนาด RAM ต่ำกว่า 4 GB นั่นเอง ทั้งนี้ทั้งนั้นเพื่อความชัวร์ ! แนะนำให้ตรวจสอบระบบ Windows ของเราก่อนดาวน์โหลดและติดตั้งโปรแกรมจะดีที่สุดครับ

เมื่อทำการติดตั้งเรียบร้อยแล้ว เปิดโปรแกรมขึ้นมาโดยพิมพ์คำว่าPuTTYgenในคอมพิวเตอร์ของเรา แล้วคลิกเข้ามาได้เลย

คลิกที่Generate

รอโปรแกรมทำการสร้าง Key Pair สักครู่ เมื่อเสร็จแล้วจะแสดงหน้าจอแบบนี้
จากนั้นคลิกที่Save private key

คลิกYes

ตั้งชื่อไฟล์ เช่นtinnakorn-testแล้ว Save เป็นไฟล์.ppkลงคอมพิวเตอร์ตาม path หรือที่อยู่ที่เราต้องการ

Copy Key ไว้ที่ใดที่หนึ่ง เช่น Notepad

การเตรียม Key Pair เสร็จเรียบร้อยแล้วครับ

การสร้าง Role ใน IAM

เข้ามาที่ Service IAM โดยค้นหา ?︎IAM» เลือกIAM

มาที่เมนูด้านซ้าย เลือกRoles

คลิกCreate role

การตั้งค่า Step 1 : Select trusted entity:
Trusted entity type
» เลือกAWS service

Use case
» เลือก Use cases for other AWS services:Transfer ▼
» ติ๊ก ◉ Transfer
» คลิกNext

Step 2 : Add permissions:
» ค้นหาAmazonElasticFileSystemClientFullAccess
» ติ๊กAmazonElasticFileSystemClientFullAccess
» คลิกNext

Step 3 : Name, review, and create:
Role details:tinnakorn-test-transferfamily-role(ชื่ออะไรก็ได้)

เลื่อนลงมาด้านล่างสุด กดปุ่มCreate role

การสร้าง AWS Transfer Family

ค้นหาAWS Transfer FamilyคลิกAWS Transfer Family

คลิกCreate server

Step 1 Choose protocols:
เลือกSFTP คลิกNext

Step 2 Choose an identity provider:
เลือกService managedคลิกNext

Step 3 Choose an endpoint:
» เลือกVPC hosted
» เลือกInternet Facingแล้วจะมี Custom hostname แสดงขึ้นมา

» เลือก VPC (Default) แล้วจะมี Availability Zones แสดงขึ้นมา
Availability Zones:
» ติ๊กap-southeast-1a
» เลือก Subnet ID ปัจจุบันที่มีอยู่
» เลือก IPv4 Address หรือ EIP ที่เราสร้างเมื่อสักครู่นี้

ลบ Security Group ของ Default ออกโดยคลิกที่กากบาท

เลือก Security Group ที่เราสร้างเมื่อสักครู่นี้
คลิกNextที่ปุ่มด้านล่างสุด


Step 4 Choose a domain:
เลือกAmazon EFSกดปุ่มNext

Step 5 Configure additional details:
เลื่อนลงมาด้านล่างสุด คลิกที่ปุ่มNext

Step 6 Review and create:
เลื่อนลงมาด้านล่างสุด คลิกที่ปุ่มCreate serverจากนั้นรอการสตาร์ทระบบ Server สักครู่


เมื่อสร้างเสร็จแล้วจะแสดงหน้าจอแบบนี้ ซึ่งในส่วนของ State จะเป็น Starting

ให้รอจนกว่า State เปลี่ยนเป็น Online การสตาร์ท Server จึงจะเสร็จสมบูรณ์
จากนั้นคลิกเข้าไปที่ Server ID ของเรา

การสร้าง User

เราจะทำการสร้าง User นี้เพื่อจะนำไปใช้ Login ในโปรแกรม WinSCP ซึ่งในส่วนนี้จะอธิบายในขั้นตอนถัดไป

เมื่อเข้ามาที่ Server ของเราแล้ว ให้มาที่หัวข้อ Users
แล้วคลิกปุ่มAdd userตรงไหนก็ได้

การตั้งค่า User configuration:
» Username:tinnakorn(ชื่ออะไรก็ได้)
» User ID:0(ไม่บังคับ: โดยปกติการตั้งค่าเป็น 0 จะส่งผลให้มีการเข้าถึงในฐานะผู้ใช้ที่มีสิทธิ์ root)
» Group ID:0(ไม่บังคับ: โดยปกติการตั้งค่าเป็น 0 จะส่งผลให้มีการเข้าถึงในฐานะผู้ใช้ที่มีสิทธิ์ root)
» Role:tinnakorn-test-transferfamily-role(เลือก Role ที่สร้างไว้ตอนแรก)
» Home directory:tinnakorn-test(เลือก EFS ที่สร้างไว้ตอนแรก และถ้ามีการกรอกข้อมูลในช่อง [ Enter optional folder ] อัตโนมัติ ให้ลบออกได้เลย)

วาง Key Pair ลงในช่อง SSH public key ที่สร้างไว้ตอนแรก
มาที่ด้านล่างสุด กดปุ่มAdd


เมื่อสร้างเสร็จแล้วจะแสดงหน้าจอแบบนี้

มาที่หัวข้อ Endpoint details:
Copy Endpoint เตรียมไว้ที่ใดที่หนึ่ง เช่น Nodepad

การอัปโหลดไฟล์ด้วย WinSCP

ขั้นตอนนี้เราจะมาทำการเชื่อมต่อเข้าไปยัง WinSCP และลองทดสอบการอัปโหลดไฟล์เข้าไปยัง EC2 ผ่าน EFS ที่เชื่อมต่อกับ WinSCP โดยผ่าน SFTP

ผู้ใช้งานที่มีโปรแกรม WinSCP แล้ว ข้ามขั้นตอนนี้ไปได้เลยครับ

สำหรับผู้ใช้งานที่ยังไม่มี WinSCP ให้ทำการดาวน์โหลดที่ลิงก์ด้านล่างนี้เลยครับ

เมื่อมีโปรแกรม WinSCP แล้ว เปิดโปรแกรมขึ้นมา

การตั้งค่า Login WinSCP:
» ดูที่ด้านซ้าย เลือกNew Site
» ดูที่ด้านขวา เลือกSFTP
» วาง Host name:s-773f9132c********.server.transfer.ap-southeast-1.amazonaws.com
» User name:tinnakorn(ใส่ User name ที่สร้างใน Server ID ของเรา)
» คลิกAdvanced... |▼

คลิกที่SSHAuthentication
คลิก...ของช่อง Private key file:

เลือกไฟล์ .ppk ที่ Save ไว้ตอนแรก แล้วกดOpen

คลิกOK

คลิกSave |▼

Site name:tinnakorn-test-transferfamily(ชื่ออะไรก็ได้)
คลิกOK

ดูที่ด้านซ้าย ดับเบิ้ลคลิกที่ชื่อของเรา เช่นtinnakorn-test-transferfamily

คลิกYes |▼

เมื่อ Login ได้โดยไม่ขึ้น Error ใดๆ ก็จะแสดงหน้าจอแบบนี้

ด้านซ้าย: จะเป็นที่เก็บข้อมูลในคอมพิวเตอร์ของเรา
ด้านขวา: จะเป็นที่เก็บข้อมูลของ EFS

ลองอัปโหลดไฟล์จากเครื่องคอมพิวเตอร์ของเราไปยังที่เก็บข้อมูลใน EFS โดยการลากแล้ววางลงที่ด้านขวาได้เลย
จะเห็นว่าเราสามารถอัปโหลดข้อมูลไปยัง EFS ได้อย่างง่ายดายเลยครับ

การลบฟังก์ชันใน Service ต่างๆ ที่ได้สร้างขึ้น

การลบฟังก์ชันใน Service ต่างๆ ถ้าเราไม่รู้ลำดับของการลบฟังก์ชันก็จะทำให้เกิด Error เวลาลบ หรือไม่สามารถลบได้นั่นเอง เช่น ถ้าทำการลบ Security Group ที่กำลังเชื่อมต่ออยู่กับ EFS โดยที่ไม่ลบ EFS ก่อน ก็จะไม่สามารถลบ Security Group ได้ เป็นต้น ดังนั้นแนะนำให้ลบตามขั้นตอนที่ผมเรียงไว้ได้เลยครับ

การลบ File systems ใน EFS

เข้ามาที่ Service EFS แล้วทำการลบ

การลบ Server ใน AWS Transfer Family

เข้ามาที่ Service Transfer Family แล้วทำการลบ

หมายเหตุ: เมื่อเราใช้งานเสร็จแล้ว แนะนำให้ทำการ Delete ไปเลย เพราะว่าต่อให้เรา Stop ไว้ ก็ยังต้องเสียค่าบริการที่คิดเป็นชั่วโมงนั่นเอง

การลบ Elastic IP และ Security Group ใน EC2

เข้ามาที่ Service EC2 แล้วทำการลบ

ลบ Elastic IP

ลบ Security Group

การลบ Role ใน IAM

เข้ามาที่ Service IAM แล้วทำการลบ

สรุป

เมื่อทำตามขั้นตอนทั้งหมดนี้แล้ว เราจะสามารถใช้ WinSCP ในการอัปโหลด แก้ไข หรือลบไฟล์ใน EFS ได้ตามต้องการโดยไม่ต้องใช้ Amazon EC2

เมื่อเราใช้งานเสร็จแล้ว แนะนำให้ทำการ Delete ไปเลย เพราะว่าต่อให้เรา Stop ไว้ ก็ยังต้องเสียค่าบริการที่คิดเป็นชั่วโมงนั่นเอง

บทความที่เกี่ยวข้อง