AWS 101 — AWS CLI

Sathittham (Phoo) Sangthong
2 min readAug 18, 2023

--

AWS CLI หรือ AWS Command Line Interface เป็นเครื่องมือที่จำเป็นอย่างมากสำหรับนักพัฒนาที่ต้องการใช้งาน AWS โดยปัจจุบันจะเป็น AWS CLI v2 แล้ว ซึ่งมีคำสั่งให้ใช้งานมากกว่า

ติดตั้ง AWS CLI บนเครื่อง

Step 1

ก่อนอื่นเราต้องเช็คก่อนว่าเครื่องเรามีติดตั้ง AWS CLI แล้วหรือยัง โดยการเปิด Terminal แล้วพิมพ์คำสั่ง

aws --version
aws-cli/2.7.9 Python/3.9.11 Darwin/22.5.0 exe/x86_64 prompt/off
  • ถ้าไม่แสดง version แสดงว่ายังไม่ติดตั้ง
  • ถ้าแสดง version และเป็น AWS CLI v1 ให้ทำการถอนการติดตั้งก่อน ดังบทความนี้ Installing, updating, and uninstalling the AWS CLI version 1

Step 2

  • กรณี macOS ติดตั้ง ให้ดาวโหลดไฟล์ pkg นี้ => https://awscli.amazonaws.com/AWSCLIV2.pkg
  • กรณี Windows ให้ดาวโหลดไฟล์ติดตั้งนี้ => https://awscli.amazonaws.com/AWSCLIV2.msi
  • หลังดาวโหลดเสร็จ กดเปิดแล้วทำการติดตั้งตาม GUI ที่ขึ้นมาได้เลยครับ (ง่ายๆ)

Step 3

เพื่อเป็นการยืนยันว่าเราติดตั้งสมบูรณ์แล้ว ให้เปิด Terminal แล้วพิมพ์คำสั่ง

$ which aws
/usr/local/bin/aws

$ aws --version
aws-cli/2.10.0 Python/3.11.2 Darwin/18.7.0 botocore/2.4.5

ถ้าเกิดแสดงข้อความ aws command cannot be found วิธีแก้ปัญหาเบื้องต้นอาจจะลอง restart เครื่องดูก่อนครับ

โครงสร้างคำสั่ง AWS CLI

เพื่อเป็นพื้นฐานในการใช้งานต่อไป ลองมาดูโครงสร้างของ คำสั่งกันก่อน ง่ายๆ ดังนี้ครับ

$ aws <command> <subcommand> [options and parameters]
  • awsคือ คำสั่งหลัก เพื่อให้ Terminal รู้ว่าเราจะเรียกใช้ aws
  • <command> คือ ส่วนที่เอาไว้เรียก AWS service ที่ใช้งาน AWS CLI ได้
  • <subcommand> คือ ส่วนที่เอาไว้ระบุว่า จะทำคำสั่งอะไร
  • [options and parameters] คือ ส่วนนี้จะถูกใช้งานตามทำสั่งของ <subcommand> อีกที โดยจะเรียกจะเรียง options สลับกับ parameters ก็ได้ ไม่มีผล แต่ห้ามสลับกับ 3 อันก่อนหน้า

ตัวอย่างเรียกใช้งานให้แสดง AWS S3 bucket ทั้งหมด aws s3 ls

$ aws s3 ls 
2018-12-11 17:08:50 my-bucket
2018-12-14 14:55:44 my-bucket2

ตั้งค่า AWS CLI

หลังติดตั้งเรียบร้อยแล้ว เราจะมาเริ่มใช้งานเลย โดยก่อนจะเริ่มใช้งานได้ ต้องมาตั้งค่าก่อน ด้วยคำสั่ง aws configure โดยก่อนจะมาถึงส่วนนี้จะต้อง AWS Account ที่จะใช้งานก่อนนะครับ โดยสามารถไปอ่านได้จากบทความ AWS 101 — IAM

  1. ที่ terminal พิมพ์คำสั่ง aws configure แล้วกด Enter
  2. โดย AWS CLI จะแสดงอยู่ในรูปแบบข้อความตัวอักษรทีละบรรทัด โดยให้เราระบุข้อมูล และกด Enter ไปทีละหัวข้อ
  3. ระบุ AWS Access Key IDและ AWS Secret Access Key และกด Enter.
  4. ระบุ AWS Region และกด Enter
  5. output format ให้กด Enter ได้เลยครับ

กรณีตั้งครั้งแรก หรือ Default Profile

ให้ใช้คำสั่ง aws configure

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: ap-southeast-1
Default output format [None]: ENTER

กรณีสร้างมากกว่า 1 Profile

ให้ใช้คำสั่ง aws configure --profile second_user

aws configure --profile second_user
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: ap-southeast-1
Default output format [None]: ENTER

เช็ค Profile ก่อนว่ามีการตั้งค่าไว้ไหม ด้วยคำสั่ง

aws configure list-profiles

หรือถ้าต้องการดูว่า default

โดยตัวอย่างของผมจะมีอยู่แล้ว 1 profile ซึ่งก็คือ default (และก็ไม่ได้ตั้งชื่อไว้ด้วย)

aws configure list

หรือถ้าต้องการดูรายละเอียดของ Profile ไหน

aws configure list --profile default

เช็คว่าเรามีกี่โปรไฟล์

เราสามารถเช็คว่าที่เครื่องเรามีอยู่กี่โปรไฟล์ โดยใช้คำสั่ง cat .aws/credentials

$ cat .aws/credentials 
[default]
aws_access_key_id = AKIAJ3TE4LUDC4I6SQDQ
aws_secret_access_key = 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
[second_user]
aws_access_key_id = AKIAJF4JT25ZZYGCTTVA
aws_secret_access_key = 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

การใช้คำสั่งโดยระบุโปรไฟล์

ใช้คำสั่งตามโครงสร้างดังนี้aws [command] — profile [profile name]ตัวอย่างเช่น

$ aws s3 ls --profile second_user
$ aws s3 ls --profile second_user

An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

อ้างอิง

--

--

Sathittham (Phoo) Sangthong

Hi! It's me Phoo! I’m a Software Developer 👨‍💻 , a Startup Entrepreneur 📱 and a Runner 🏃 . Currently, I’m a Co-Founder and CTO of a Startup name “Urbanice”.