เริ่มต้นใช้งาน AWS CLI แบบพื้นฐาน

Pao Payungsak Klinchampa
Next-Hop Co., Ltd.
Published in
3 min readJul 5, 2020
Ref : https://voicefoundry.com/best-solution-for-the-best-customer-experience/feature-aws/

ทุกๆท่านที่ใช้ AWS กันคงทราบกันดีว่าการที่เราจะเข้าไปจัดการสร้าง Resource ต่างๆใน AWS จะใช้ AWS Management Console ผ่านทาง WebGUI กัน แต่อันที่จริงเเล้ว ยังมีวิธีการเข้าถึงอีก 2 วิธี คือ

  1. AWS CLI ซึ่งเป็น Command line interface การสั่งการเราจะใช้การพิมพ์คำสั่งกัน รองรับทั้ง OS ตระกูล Linux , macOS หรือ Windows ก็ใช้ได้
  2. และข้อสองคือ AWS SDK เจ้านี่จะเป็น SDK ที่ Dev เอามาใช้ในการพัฒนา App ขึ้นมาใหม่เพื่อใช้ในการ Manage Resource ต่างๆได้

ขอเเถมข้อพิเศษให้เพิ่มเเล้วกัน ข้อนี้คือการเขียน Code ในเเบบที่เราเรียกว่า Infrastructure as a Code ครับ ยกตัวอย่างเช่น Terraform หรือ บน AWS เองเค้าก็มี tool เเนวๆนี้ เรียกว่า CloudFormation ครับ

สำหรับใน Blog นี้เราจะมาพูดถึงข้อเเรกกันนะครับ นั่นก็คือการใช้ AWS CLI นั่นเอง และก็เป็นพื้นฐานในการจะทำอะไรที่สลับซับซ้อนมากขึ้นในอนาคตด้วย ผู้ที่จะเป็น Cloud Engineer อย่างเเท้ทรู ไม่ควรพลาดด้วยประการทั้งปวง 55555+

AWS CLI เขียนด้วยภาษา Python เเละสามารถติดตั้งได้อย่างง่ายดาย ไม่ว่าคุณจะใช้ macOS , Linux หรือ Windows ก็สามารถติดตั้ง เเละใช้งานได้ครับ ปัจจุบันมีอยู่ 2 version ก็คือ version 1 และ 2 ครับ ซึ่ง version 2 มันจะมีคำสั่งหรือ option บางตัวที่ต่างกันบ้างเล็กน้อย อันนี้ลองเปิดหาในเว็บ AWS อ่านดูได้ครับ

โม้เยอะเเล้ว มาเริ่มกันเลยดีกว่า

ก่อนอื่น เราต้อง Generate Access Key กับ Secret Key ก่อนนะครับ อยากให้ AWS CLI มันจัดการ Resource อะไรได้บ้าง ก็เเล้วเเต่ Policy ที่เรากำหนดครับ ส่วนใครมี Key อยู่เเล้ว ก็ข้ามขั้นตอนนี้ไปได้เลย

Generate Access Key :

  1. ไปที่ AWS Management Console ครับ เเล้วเข้าไปที่ IAM กดตรง Service ก่อนนะครับ เเล้ว search โดยใช้ keyword ว่า IAM จากนั้นก็ไปที่ Users เเล้วไปที่ Add user ครับ

อันนี้จะเห็นว่า Account ของผม มีหลาย user เลย เเละ Access Key ก็มีอายุซะนาน เรื่องอายุผมเเนะนำว่าให้เรา Revoke Key ตัวเก่า หรือ remove ไปเลยก็ได้ เเล้วออก key ใหม่ ตรงนี้เป็นเรื่องของ Security ด้วย ส่วนนานกี่วันจะเปลี่ยน key ก็เเล้วเเต่ policy ขององค์กรของคุณนะครับ ว่าจะเข้มงวดเรื่องพวกนี้เเค่ไหน หรือจะใช้ key เดียวตลอดไปก็ได้ รับความเสี่ยงเอาเองนะครับ

จากนั้นให้เรากำหนด username ที่เราต้องการ ส่วนตรง Access Type ในที่นี้ username นี้จะเอาไปใช้เฉพาะ AWS CLI เท่านั้น ก็ให้เลือกเฉพาะ Programmatic access ก็เพียงพอเเล้วครับ จากนั้นก็กด Next ได้เลย

และเราก็กำหนด Permission ที่เราต้องการ อันนี้เเนะนำให้เลือก Permission ให้น้อยสุดเท่าที่เป็นไปได้ ตัวอย่างเช่นผมจะ gen key ให้รุ่นน้องเอาไปใช้ Upload file ขึ้น S3 และให้รุ่นน้องจัดการ S3 ของผมได้หมดเลย ลบ file ได้ ดู file ที่มีได้ ผมก็มอบ Permission ให้เฉพาะ S3 นะครับ รุ่นน้องของผมจะไม่สามารถจัดการ EC2 ได้ ประมาณนี้

หรือถ้า Account นี้ใช้คนเดียว จะใช้ Permission แบบ admin ไปเลยก็ได้ครับ เเต่ก็ระวัง อย่าทำ key หลุด ไม่งั้นจะซวยเอา ผมเคยเจอเคส key หลุด เเล้วจู่ๆก็มี EC2 พุ่งขึ้นเป็นดอกเห็ดเต็มไปหมด เเต่ AWS เค้าเมลมาเเจ้ง เเละไม่คิดค่าใช้จ่ายตรงนี้ เพราะไม่ใช่การกระทำโดยเจ้าของ account ก็ถือว่าเป็นบทเรียนให้ทางลูกค้าไป จะได้ระมัดระวังตัวเเละถือเป็น Case study เรื่อง security ง่ายๆไป

เนื่องจากว่า username นี้ ผมอยากให้ใช้ได้เฉพาะ S3 ผมก็เลือก AmazonS3FullAccess ไป

แต่การ Add policy ยังมีหลายเเบบนะครับ ตามภาพประกอบ ทั้งเเบบ Add user ลง group หรือการไป copy policy จาก user ที่มีอยู่เเล้ว หรือเเบบที่ผมใช้ก็คือ การ map Policy เข้ากับ user ตรงๆไปเลย

จากนั้นมันก็จะให้เรา Add tags จะไม่ add ก็ได้นะ กด next ข้ามไปเลย

และมันจะมีหน้าสรุปสื่งที่เรากำหนดค่าลงไป ถ้ายืนยันก็กดปุ่ม create user ได้เลย

เราก็ได้ Access Key + Secret Key สมใจเรียบร้อย ขั้นตอนต่อไป ก็คือติดตั้งเเละ config aws cli กัน !!!

2. ติดตั้ง AWS CLI ตาม OS ที่เราใช้ครับ อันนี้ติดตั้งไม่ยาก ไปตามอ่านในเว็บ AWS เอาเองนะครับ 5555+ ตามนี้เลย

3. หลังจากติดตั้งเเล้ว ก็มา config aws cli กันก่อน ไม่งั้นใช้ไม่ได้นะ ด้วยการพิมพ์คำสั่ง

$ aws configure

จากนั้นก็ป้อน Access Key + Secret Key ได้เลย

แต่มันจะถามเราเพิ่มอีกสองข้อครับ ก็คือ

Default Region : ผมใช้ Region ที่ SG นะครับ ก็พิมพ์ ap-southeast-1 ได้เลย

Default output : ก็คือค่า output เวลาเราพิมพ์คำสั่งเเล้วมี output หรือ responce กลับมา ผมจะตั้งเป็น json นะ ก็พิมพ์ json ได้เลย

4. มาทดสอบการใช้งานกัน

นอกจากนี้เวลาเรารัน Command aws cli เรายังสามารถระบุ Profile ลงไปได้ด้วยครับซึ่งมันจะมีประโยชน์มากๆ หากเราใช้ AWS หลายๆ Account ซึ่งเราทำได้ด้วยการ add credential ลงไปที่ file ชื่อ .aws/credential ครับ ตัวอย่างของผมก็จะเเบบนี้

สังเกตตรงคำว่า paocloud ครับ ตรงนี้จะเป็นชื่อ profile ของเรา มาลองเรียกใช้คำสั่งเเบบระบุ profile กันบ้างดีหว่า

จะเห็นว่าผลลัพธ์ที่ได้ต่างจากครั้งก่อน เพราะ Command นี้มันไปเรียกใช้อีก Account

--

--