เชื่อมต่อ Amazon S3 ด้วย WinSCP
ครั้งนี้จะมาทำการเชื่อมต่อ S3 จาก WinSCP โดยใช้IAM access key รวมไปถึงเปิดการเข้าถึง S3 server access logs และตั้งค่าจัดเก็บ access logs กันครับ
ขั้นตอนการตั้งค่า
การตั้งค่าหลักๆจะแยกเป็น2ส่วน ส่วนแรกจะเป็นการตั้งค่าฝั่งAWS และ อีกส่วนจะเป็นการตั้งค่าในฝั่งของClient
1-1. การสร้าง S3 BUCKET
1-2. การตั้งค่า S3 Server access logs
1-3. การออก Access key และสร้าง IAM User
2-1. การติดตั้ง WinSCP
2-2. ตรวจสอบการเชื่อมต่อ
1.การตั้งค่าฝั่งAWS
1-1.การสร้าง S3 BUCKET
สร้างS3 Bucket ที่จะเชื่อมต่อกับWinSCP จากหน้า management console
ตั้งชื่อS3 bucket, AWS Regionได้ตามสะดวก และเลือกปิดACL เพราะACLเป็นวิธีการจัดการการเข้าถึงS3แบบเก่าจึงไม่แนะนำให้เปิดใช้งาน และในบทความนี้ไม่มีความจำเป็นต้องตั้งค่าpublic access ให้เลือกblock public access
ได้เลยจากนั้นและไปที่ขั้นตอนต่อไป
ตั้งค่าตามด้านล่างนี้ โดยในหัวข้อ Default encryption ให้เลือก Amazon S3-managed keys (SSE-S3)
เลื่อนลงไปทางด้านล่าง และเลือก Create bucket
ในขั้นตอนเดียวกันนี้ เราจะสร้างs3 bucketสำหรับการจัดเก็บ server access logs หากเราไม่ต้องการตั้งค่าในส่วนนี้ก็สามารถข้ามไปได้ ในการตั้งค่าการสร้างs3 bucketสำหรับการจัดการserver access logs มีข้อควรระวังดังนี้
ข้อควรระวัง
Why aren't my Amazon S3 server access logs getting delivered?
1-2. การตั้งค่า S3 Server access logs
การตั้งค่าS3 Server access logsทำตามขั้นตอนดังนี้
จากหน้าconsoleของS3ไปที่ ”bucket” แล้วเลือกs3 bucketที่จะเชื่อมต่อ → properties
→ Server access logs
และเลือก edit
เลือก Enable
Server access logging จากนั้นเลือกTarget bucketสำหรับเก็บlogs จริงๆแล้วสามารถเก็บlogs ลงในbucketของตนเองก็ได้แต่แนะนำให้เก็บในbucketอื่นจะดีกว่าครับ
เสร็จสิ้นการตั้งค่าaccess logs
สาเหตุที่แนะนำให้เก็บในbucketอื่น
เพื่อการควบคุมlogsที่ง่ายขึ้น จึงแนะนำให้เก็บ access logs ในbucketแยก ในกรณีที่มี sort bucket และ target bucket เดียวกัน ก็จะมีสร้างlogsเพิ่มสำหรับเขียนข้อมูลลง bucket ซึ่งค่าใช้จ่ายของ storage ก็มีโอกาสที่จะสูงขึ้นตาม ยิ่งไปกว่านั้นเนื่องจากมีlogsเพิ่มขึ้นจะทำให้การค้นหา logs ที่จำเป็นยากขึ้นไปอีก
Logging requests using server access logging
1-3.การออก Access key และสร้าง IAM User
จากนั้น เราจะมาออก Access key และสร้าง IAM User โดยเข้าไปที่หน้าบริการ IAM เลือก user
จากนั้นเลือก add user
ตั้งชื่อตามสะดวก และเลือก credential type เป็นAccess key - Programmatic access
เนื่องจากเป็นผู้ใช้งานที่ไม่ใช้ผ่าน console จึงไม่เลือกตรงหัวข้อmanagement console
การตั้งค่าสิทธ์ต่างๆจะทำในภายหลังจึงยังไม่ต้องตั้งค่าในส่วนนี้
ไม่ต้องตั้งค่าtagไปการตั้งค่าต่อไปได้เลย
หลังจากตรวจสอบเนื้อหาแล้ว ให้เลือกที่ Create user
หลังจากสร้างuserสำเร็จแล้ว ระบบจะออก secret access keyออกมาจะบันทึกโดยการจดโน้ตหรือจะโหลดเป็น CSV ไฟล์ก็ได้แล้วแต่ความสะดวก หากลืมsecret keyจะต้องออก access key ใหม่เท่านั้น และหากข้อมูลนี้อยู่ในมือบุคคลที่3จะสามารถตั้งค่าการเข้าถึงสิทธ์ต่างๆของเราได้ เพราะฉะนั้นการเก็บข้อมูลเป็นโน้ต หรือ โหลด CSV ไฟล์จึงเป็นสิ่งสำคัญมาก
หลังจากนั้นเลือก "User" ที่สร้างจาก IAM แล้วเลือก Permission
และAdd inline policy
ที่จริงแล้วมีวิธีที่จะสร้างpolicyแยกทีล่ะรายการแต่ในครั้งนี้จะเลือกเป็น inline policy โดยข้อแตกต่างระหว่าง inline policy และ control policy สามารถตรวจสอบได้ทางด้านล่างนี้ครับ
เปรียบเทียบ inline policy และ control policy
จากหน้าการตั้งค่า inline policy ให้นำข้อมูล policy ทางด้านล่างที่ระบุเป็น json ไปลง โดย 「bucket-name」 ให้เปลี่ยนเป็นชื่อs3bucketที่จะเชื่อมต่อ หรือจะเพิ่มสิทธิ์เช่น PutObject หรือ DeleteObject เข้าไปก็ได้ตามการใช้งาน
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::bucket-name"]
},
{
"Sid": "GetObjectAction",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": ["arn:aws:s3:::bucket-name/*"]
}
]
}
ข้อมูลอ้างอิงสำหรับสิทธิ์ในการตั้งค่า
ตั้งชื่อpolicyตามสะดวก
ก็จะเป็นเสร็จสิ้นการตั้งค่าฝั่งAWS
2.การตั้งค่าฝั่ง client
ติดตั้งWinscpเพื่อเชื่อมต่อกับs3 รายละเอียดตามด้านล่างนี้ครับ
2-1.ติดตั้งWinSCP
interface styleแล้วแต่ความชอบ แต่ในครั้งนี้จะเลือกเป็น commander
ถ้าเลือกเป็น Open Getting started page
จะเป็นการเปิดหน้าเว็บไซต์ ไม่ต้องเลือกก็ได้
เสร็จสิ้นการติดตั้ง WinSCP
2-2.ทดสอบการเชื่อมต่อ
เมื่อเปิดการใช้งาน winscpจะแสดงหน้าตั้งค่าใส่ข้อมูลการเชื่อมต่อขึ้นมาให้เลือกprotocol
เป็นS3
ใส่access key
และ secret key
ที่ออกมาจากขั้นตอนที่1-3เข้าไปแล้วเลือกหัวข้อAdvanced
ที่อยู่ทางด้านล่าง
ในหัวข้อ Enviroment ให้ใส่bucket nameที่จะเชื่อมต่อไปที่ Remote directory
ตามตัวอย่างด้านล่างจะใส่คำว่า 「/target-backet-name」เข้าไป
จากนั้นก็เลือกที่OK
แล้วกลับไปที่หน้าก่อนหน้า แล้วเลือกที่login
ก็จะสามารถเชื่อมต่อได้ครับ
ตอนนี้สามารถเชื่อมต่อได้แล้ว
ข้อมูลเพิ่มเติม
ในส่วนของการตั้งค่านั้นจบแล้วแต่จะแนะนำข้อมูลเพิ่มเติมตามด้านล่างนี้ครับ
สิทธ์ในการเข้าถึง
หากไม่ทำการRemote directoryจะเชื่อมต่อไม่ได้แล้วขึ้นแจ้งเตือนตามด้านล่าง
ในกรณีที่ตั้งค่าสิทธิ์จาก IAM User เช่น S3FullAccess แล้วเชื่อมต่อโดยไม่ Remote directory ก็สามารถเชื่อมต่อได้แต่จะแสดงข้อมูล S3 bucket อื่นๆที่ไม่จำเป็นขึ้นมาด้วยซึ่งในครั้งนี้เราต้องการระบุbucketที่จะแสดงจึงต้องตั้งค่านี้
access logs
เมื่อเปิด bucket สำหรับเก็บ access logs จะพบ logs file จัดเก็บไว้ตามภาพนี้ครับ
ตรวจสอบ user guide ที่เกี่ยวกับ log format ได้ทางด้านล่างนี้ครับ
Amazon S3 server access log format
เนื่องจากlogs fileจะมีจำนวนมาก การตรวจสอบทีละตัวค่อนข้างใช้เวลาและไม่สะดวกเท่าไหร่นัก โดยผู้ใช้งานสามารถนำathenaมาปรับใช้เพื่อรวบรวมข้อมูลได้โดยรายละเอียดเพิ่มเติมจะอยู่ทางด้านล่างนี้ครับ
How do I analyze my Amazon S3 server access logs using Athena?
สรุป
การเชื่อมต่อ S3 ผ่าน WinSCP นั้นสะดวกมาก ทั้งๆที่เป็นโปรแกรมเก่าแก่มาตั้งแต่สมัยยุคปี 2000 โดยในปัจจุบันยังคงมีอัพเดทอย่างต่อเนื่อง โดยในปัจจุบันสามารถซัพพอร์ท OpenSSL ได้อีกด้วย โดยอยากให้มีอัพเดทฟังก์ชั่นต่างๆเพิ่มขึ้นต่อไปอีกเรื่อยๆ และหวังว่า