AWS 101 — AWS CLI
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
- ที่ terminal พิมพ์คำสั่ง
aws configure
แล้วกด Enter - โดย AWS CLI จะแสดงอยู่ในรูปแบบข้อความตัวอักษรทีละบรรทัด โดยให้เราระบุข้อมูล และกด Enter ไปทีละหัวข้อ
- ระบุ AWS Access Key IDและ AWS Secret Access Key และกด Enter.
- ระบุ AWS Region และกด Enter
- 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