วิธีการเข้าถึง Bucket จาก Instance ใน Amazon Lightsail

เราสามารถเข้าถึง Bucket จาก Instance ใน Amazon Lightsail ได้โดยการแนบ(Attach) Instance กับ Bucket เข้าด้วยกัน แล้วใช้คำสั่ง AWS CLI S3 ในการ Upload และ Download ข้อมูลระหว่าง S3 และ Lightsail Instance ได้ ในบทความนี้จะมาแนะนำวิธีการรันคำสั่ง AWS CLI S3 เพื่อถ่ายโอนข้อมูลรหว่าง S3 และ Lightsail Instance

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

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

ครั้งนี้จะมาแนะนำวิธีการเข้าถึง Bucket จาก Instance ใน Amazon Lightsail

สิ่งที่ต้องมี

※1. เปิดใช้งาน WordPress ด้วย Amazon Lightsail แล้ว
ครั้งนี้เราจะดำเนินการโดยใช้สภาพแวดล้อม WordPress (สามารถใช้ในสภาพแวดล้อมอื่นๆ ได้ด้วย)

ดูตัวอย่างการเปิดใช้งาน Application ได้ที่ลิงก์ด้านล่างนี้


※2. สร้าง Bucket และอัปโหลดไฟล์ HTML ลงใน Object list และเผยแพร่เว็บไซต์แบบ Static ด้วย Lightsail Bucket แล้ว

ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้

การตั้งค่า Resource access

เราจะทำการแนบ(Attach) Instance กับ Bucket นี้เพื่อให้สามารถเข้าถึงกันได้โดยไม่ต้องจัดการ credentials

กลับไปที่หน้าแรกของ Amazon Lightsail โดยคลิกแท็บ Home ด้านบนซ้าย แล้วเลือกแท็บ Storage คลิกเข้าไปที่ Buckets ของเรา
แล้วเลือกแท็บ Permissions เลื่อนลงมาด้านล่างที่หัวข้อ Resource access แล้วคลิก Attach instance

แล้วเลือก Instance ที่ต้องการแนบ ครั้งนี้คือ tinnakorn-wordpress แล้วคลิก Attach ✅

เพียงเท่านี้การตั้งค่าการเข้าถึง Bucket จาก Lightsail Instance ก็เสร็จเรียบร้อยแล้ว
ต่อไปจะเป็นการใช้คำสั่ง AWS CLI S3 เพื่อทดสอบการเข้าถึง Bucket จาก Lightsail Instance

การใช้คำสั่ง AWS CLI S3 ใน Linux

ก่อนเริ่มใช้คำสั่ง AWS CLI S3 ให้เราเชื่อมต่อเข้าไปใน Linux ของ Instance โดยเข้าไปหน้า Instance ของเรา
แล้วคลิก Connect using SSH ในหัวข้อ Connect to your instance ในแท็บ Connect (หากเชื่อมต่อกับ Instance อยู่แล้ว ให้ข้ามขั้นตอนนี้ไปได้เลย)

รันคำสั่งของ AWS CLI S3 เพื่อตรวจสอบข้อมูลใน Bucket ตามด้านล่างนี้
aws s3 ls คือคำสั่งของ AWS CLI S3
s3://bucket-name คือชื่อ Bucket ที่เราสร้างไว้ก่อนหน้านี้ (ต้องใส่ s3:// ข้างหน้าชื่อ Bucket) ครั้งนี้คือ s3://tinnakorn-bucket

aws s3 ls s3://bucket-name

ผลลัพธ์: จะเห็นว่ามีไฟล์ test.html ที่เราอัปโหลดลงไปยัง Object list

tinnakorn-wordpress - Terminal | Lightsail - Google Chrome

bitnami@ip-xxx-xx-xx-xxx:~$ aws s3 ls s3://tinnakorn-bucket
2023-02-08 09:42:22         30 test.html
bitnami@ip-xxx-xx-xx-xxx:~$


ต่อไปเราจะทำการคัดลอกไฟล์ test.html จาก Bucket ไปยัง Instance โดยรันคำสั่งตามนี้

aws s3 cp s3://bucket-name/test.html ./

ผลลัพธ์: ถ้าแสดงแบบนี้ถือว่า download ไฟล์ test.html มายัง Instance สำเร็จ

tinnakorn-wordpress - Terminal | Lightsail - Google Chrome

bitnami@ip-xxx-xx-xx-xxx:~$ aws s3 cp s3://tinnakorn-bucket/test.html ./
download: s3://tinnakorn-bucket/test.html to ./test.html
bitnami@ip-xxx-xx-xx-xxx:~$


แล้วรันคำสั่ง ls เพื่อตรวจสอบไฟล์ test.html ที่คัดลอกจาก Bucket มายัง Instance
จะเห็นว่าไฟล์ test.html แสดงอยู่ที่นี่

tinnakorn-wordpress - Terminal | Lightsail - Google Chrome

bitnami@ip-xxx-xx-xx-xxx:~$ ls
bitnami_application_password  bitnami_credentials  htdocs  stack  test.html
bitnami@ip-xxx-xx-xx-xxx:~$


ต่อไปจะทำการอัปโหลดไฟล์จาก Instance ไปยัง Bucket
ก่อนอื่นเราต้องสร้างไฟล์ใน Instance ก่อน ครั้งนี้จะสร้างไฟล์ test2.html โดยรันคำสั่งตามนี้

nano test2.html

เมื่อเข้ามาแล้วให้ป้อนเนื้อหาลงในไฟล์ test2.html ครั้งนี้จะป้อนโค้ด HTML ตามด้านล่างนี้
แล้วให้ Save โดยกดปุ่ม Ctrl+X ตามด้วยกดปุ่ม Y เพื่อ Save แล้วกดปุ่ม Enter

<html><body>test2</body></html>


ต่อไปเราจะทำการคัดลอกไฟล์ test2.html จาก Instance ไปยัง Bucket โดยรันคำสั่งตามนี้

aws s3 cp ./test2.html s3://tinnakorn-bucket/

ผลลัพธ์: ถ้าแสดงแบบนี้ถือว่า upload ไฟล์ test2.html ไปยัง Bucket สำเร็จ

tinnakorn-wordpress - Terminal | Lightsail - Google Chrome

bitnami@ip-xxx-xx-xx-xxx:~$ aws s3 cp ./test2.html s3://tinnakorn-bucket/
upload: ./test2.html to s3://tinnakorn-bucket/test2.html
bitnami@ip-xxx-xx-xx-xxx:~$ 


แล้วกลับมาที่หน้าจอ Bucket ของเราโดยคลิก Home ที่แท็บด้านบนซ้าย แล้วเลือกแท็บ Storage คลิกเข้าไปที่ Buckets ของเรา
แล้วเลือกแท็บ Objects แล้วคลิก Refresh ก็จะเห็นไฟล์ test2.html แสดงอยู่ที่นี่

สรุป

หากต้องการเข้าถึง Bucket จาก Lightsail Instance เราต้องแนบ(Attach) Instance กับ Bucket เข้าด้วยกันก่อน แล้ว Instance กับ Bucket จึงจะสามารถเข้าถึงกันได้ นอกจากนี้เรายังสามารถใช้คำสั่ง AWS CLI S3 ในการถ่ายโอนข้อมูลต่างๆโดย Upload และ Download ข้อมูลระหว่าง S3 กับ Lightsail Instance ได้อีกด้วย

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP จากบริษัท Classmethod (Thailand) ครับ !

Link อ้างอิง