การใช้งาน AWS CLI กับ Cloud9 ด้วย IAM Role

Cloud9 เป็น IDE(Integrated Development Environment) บน Cloud ที่สามารถเขียนโค้ดโดยใช้เว็บเบราว์เซอร์เท่านั้น ในบทความนี้จะแสดงวิธีการใช้ AWS CLI กับ IAM Role จาก Cloud9

บทความนี้แปลมาจากบทความที่เป็นภาษาญี่ปุ่นที่ชื่อว่า Cloud9からIAM Roleの権限でAWS CLIを実行する โดยเจ้าของบทความนี้คือ คุณ Kitano Yuichi

Cloud9 เป็น IDE(Integrated Development Environment) บน Cloud ที่สามารถเขียนโค้ดโดยใช้เว็บเบราว์เซอร์
โดยค่าเริ่มต้น Cloud9 จะเปิดใช้งาน AMTC(AWS Managed Temporary Credentials) ซึ่งระบบจะให้ credential key แบบชั่วคราวที่มีสิทธ์เหมือนกับผู้ใช้ที่เข้าสู่ระบบ AWS Management Console โดยอัตโนมัติ และสามารถใช้งาน AWS CLI กับ Cloud9 ได้ทันที
Note: แต่การดำเนินการบางอย่างกับ IAM จะถูกจำกัด
ในบทความนี้เราจะแนะนำวิธีการใช้ AWS CLI จาก Cloud9 ด้วย IAM Role ในกรณีที่ต้องการใช้บริการที่มี IAM จาก Cloud9

Step 1: สร้าง Cloud9

การสร้าง Cloud9 นั้นง่ายมากๆ สามารถทำได้ภายในไม่กี่นาที โดยเข้ามาที่หน้า Cloud9 และคลิก Create environment https://devio2023-media.developers.io/wp-content/uploads/2020/02/Welcome-to-AWS-Cloud9-2020-02-05-16-26-30.png
ตั้งชื่อตามต้องการ โดยในบทความนี้จะตั้งชื่อว่า cloud9-test จากนั้นเลื่อนลงมาด้านล่าง
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-1.png ไม่จำเป็นต้องตั้งค่าเพิ่มเติมในหน้านี้ ให้คลิก Create
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-2.png
ในส่วนการสร้าง Cloud9 ก็เสร็จเรียบร้อย

Step 2: ปิดการใช้งาน AMTC บน Cloud9

หากไม่ได้ปิด AMTC จะไม่สามารถใช้งาน AWS CLI ด้วย IAM Role ได้

จากหน้าจอด้านบนของ Cloud9 ที่พึ่งสร้างไป ให้เลือก Cloud9 ที่ด้านบนซ้าย
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-4.png
ในส่วน AWS SETTINGS ให้ปิดการทำงาน AWS managed temporary credentials
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-5.png

Step 3: ติดตั้ง IAM Role ให้กับ EC2 instance ของ Cloud9

หนึ่งในวิธีการเรียกใช้บริการ AWS จาก Cloud9 ก็คือการติดตั้ง IAM Role ให้กับ EC2 instance
- อ้างอิง: Calling AWS services from an environment in AWS Cloud9 เมื่อสร้าง Cloud9 จะเห็นว่ามี EC2 instances เพิ่มขึ้นมาใน region เดียวกันกับที่สร้าง Cloud9
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-6.png
เราต้องการติดตั้ง IAM Role ให้กับ EC2 instances แต่ก่อนอื่นเราต้องสร้าง IAM Role ก่อน
เข้าไปที่ IAM เพื่อสร้าง Role
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-7.png
เนื่องจากเป็น Role ที่ใช้กับ EC2 ดังนั้นในหัวข้อ Use case เลือก EC2 แล้วคลิก Next
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-8.png
ในส่วนของ policy เราจะเลือก AdministratorAccess (เลือก policy โดยอิงตามสิทธ์การใช้งานที่จำเป็นเท่านั้น)
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-9.png
ตั้งชื่อ Role ตามที่ต้องการซึ่งในบทความนี้จะตั้งชื่อว่า cloud9-test-role เลื่อนลงมาด้านล่างแล้วคลิก Create role
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-10.png
จากนั้นจึงนำ IAM Role ไปใช้กับ EC2 instances
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-11.png
เลือก IAM Role ที่พึ่งสร้างจากนั้นคลิก Update IAM role
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-12.png
เพียงเท่านี้ขั้นตอนการติดตั้ง IAM Role ให้กับ EC2 instance ของ Cloud9 ก็เสร็จเรียบร้อย

Step 4: การใช้ AWS CLI กับ Cloud9

เมื่อเราติดตั้ง IAM Role ให้กับ EC2 instance ของ Cloud9
Cloud9 จะได้รับ credential key แบบชั่วคราวโดยอัตโนมัติ ซึ่งสามารถตรวจสอบสถานะได้โดยใช้คำสั่ง aws configure list ใน Terminal ของ Cloud9
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-13.png
ในกรณีที่ region เป็นคำว่า not set ให้ใช้คำสั่งตามด้านล่าง เพื่อตั้งค่า region ของเราให้เป็น ap-southeast-1 สามารถดูตัวอย่างได้ในบทความต้นฉบับ

export AWS_DEFAULT_REGION=ap-southeast-1

- อ้างอิง: Environment variables to configure the AWS CLI

ทุกครั้งที่ใช้ Cloud9 จะต้องมีการกำหนดตัวแปรทุกครั้ง ดังนั้นเพื่อความสะดวก เราสามารถใช้คำสั่งตามนี้เพื่อบันทึกข้อมูลการตั้งค่าไว้ในไฟล์

$ echo '[default]' >> ~/.aws/config
$ echo 'region = ap-southeast-1' >> ~/.aws/config

- อ้างอิง: Configuration and credential file settings

ตอนนี้เราสามารใช้ AWS CLI โดยการใช้สิทธิ์ IAM Role นอกจากนี้ยังใช้คำสั่งที่เกี่ยวข้องกับ IAM อย่างเช่น aws iam create-user ที่ต้องปิดการใช้งาน AMTC ก่อน
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-14.png
หากเราใช้คำสั่ง aws iam create-user ด้วยสิทธ์ AMTC ก็จะเกิด error ขึ้นตามภาพ
https://devio2023-media.developers.io/wp-content/uploads/2024/04/Cloud9_202404-15.png

ส่วนสุดท้าย

เราได้แนะนำวิธีเรียกใช้ AWS CLI จาก Cloud9 ด้วยสิทธิ์ของ IAM Role

บทความต้นฉบับ

Cloud9からIAM Roleの権限でAWS CLIを実行する(ภาษาญี่ปุ่น)

บทความที่เกี่ยวข้อง