วิธีการอนุญาต IAM Role ใน EC2 ที่สร้างใน Elastic Beanstalk

วิธีการอนุญาต IAM Role ใน EC2 Instance สามารถทำได้ง่ายๆ ต่อให้เป็น EC2 Instance ที่สร้างใน Elastic Beanstalk ก็สามารถเชื่อมต่อกับ S3 Bucket ได้ ซึ่งในบทความครั้งนี้ผมจะมาแนะนำการตั้งค่าอนุญาต IAM Role ใน EC2 Instance และเชื่อมต่อกับ S3 Bucket ครับ

ครั้งนี้ผมจะมาแนะนำ วิธีการอนุญาต IAM Role ใน EC2 ที่สร้างใน Elastic Beanstalk โดยตั้งค่า IAM Role เพื่อให้สามารถเข้าถึง S3 จาก EC2 Instance ได้

สิ่งที่ต้องมี

※ต้องมี S3 Bucket ใน Amazon S3
สมมติว่าผมสร้าง S3 Bucket:tinnakorn-uploadเตรียมไว้แล้ว สามารถดูวิธีการทำได้ที่ลิงก์ด้านล่างนี้

ดูตัวอย่างที่นี่เฉพาะหัวข้อนี้: การสร้าง Buckets ใน Amazon S3

การสร้าง Role ใน IAM

ขั้นตอนนี้ผมจะสร้าง Role เพื่อนำไปใช้กับ EC2 ที่จะสร้างใน Elastic Beanstalk ในขั้นตอนถัดไปครับ

ดูตัวอย่างที่นี่เฉพาะหัวข้อนี้: การสร้าง Role ใน IAM

ตัวอย่างการสร้าง Role ใน IAM ของบทควมนี้

※Step 1: Select trusted entity
Trusted entity type: ◉AWS service
Use case
Common use cases: ◉EC2(ข้อควรระวัง: เราจะไม่ใช้ Elastic Beanstalk ! แต่ให้ใช้ EC2)

※Step 2: Add permissions
Permissions policies:AmazonS3FullAccess,AWSElasticBeanstalkWebTier

※Step 3: Name, review, and create
Role details
Role name:ec2-tinnakorn-iamrole

การตั้งค่าตอนสร้าง Environment ใน Elastic Beanstalk

ตัวอย่างการสร้าง Environment ของบทความนี้

※Environment information
Environment name:tinnakorn-iamrole(ชื่ออะไรก็ได้)
Domain:tinnakorn-iamrole(ชื่ออะไรก็ได้)

※Platform
Platform:PHP

※Application code
เลือกวิธีอัปโหลดไฟล์ตามที่คุณต้องการ

ต่อไปคือการตั้งค่าในConfigure more optionsโดยทำตามหัวข้อดังต่อไปนี้

※หัวข้อ Security
คลิกปุ่มEditที่หัวข้อ Security แล้วตั้งค่าดังนี้:
Virtual machine permissions
» IAM instance profile:ec2-tinnakorn-iamrole
» คลิกSave

เมื่อตั้งค่าตามขั้นตอนข้างต้นเสร็จแล้ว ให้เลื่อนลงมาด้านล่างสุดและคลิกปุ่มCreate environmentจากนั้นรอระบบเริ่มต้นสักครู่ครับ

ทดสอบการเข้าถึง S3 จาก EC2

เมื่อสร้าง EC2 ใน Elastic Beanstalk เสร็จแล้ว ทำการเชื่อมต่อไปยัง EC2 ด้วย PuTTY

ดูตัวอย่างที่นี่เฉพาะหัวข้อนี้: การ Connect to EC2 by PuTTY

แล้วรันคำสั่งด้านล่างนี้เพื่อทดสอบการเข้าถึง S3 จาก EC2

aws s3 ls s3://[bucket name]

Output (example)
ใน S3 Bucket ของผมมีไฟล์ 106702 20220721_1227.zip นี้อยู่ จึงแสดงออกมาแบบนี้
แต่ถ้ารันคำสั่งด้านบนนี้ไปแล้วไม่แสดง Error ก็ถือว่าเราสามารถเข้าถึง S3 จาก EC2 ได้ครับ

root@ip-172-31-46-190:~

Using username "ec2-user".
Authenticating with public key "imported-openssh-key"
  _____ _           _   _      ____                       _        _ _
 | ____| | __   ___| |_(_) ___| __ )  ___  __ _ _ __  ___| |_ __ _| | | __
 |  _| | |/ _ \/ __| __| |/ __|  _ \ / _ \/ _\ | '_ \/ __| __/ _\ | | |/ /
 | |___| | (_| \__ \ |_| | (__| |_) |  __/ (_| | | | \__ \ || (_| | |   <
 |_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\

 Amazon Linux 2 AMI

 This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH
 WILL BE LOST if the instance is replaced by auto-scaling. For more information
 on customizing your Elastic Beanstalk environment, see our documentation here:
 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

[ec2-user@ip-172-31-46-190 ~]$ aws s3 ls s3://tinnakorn-upload
2022-07-25 10:16:31     106702 20220721_1227.zip
[ec2-user@ip-172-31-46-190 ~]$

เพียงเท่านี้การตั้งค่า IAM Role เพื่อให้สามารถเข้าถึง S3 จาก EC2 Instance ได้ก็เสร็จเรียบร้อย
ทีนี้เราก็สามารถ Upload, Download หรือจะนำข้อมูลใน S3 ไปใช้งานร่วมกับ Service อื่นๆ ได้แล้วครับ

สรุป

การสาธิตนี้ผมได้เน้นไปที่การตั้งค่าอนุญาต IAM Role และทดสอบการเข้าถึง S3 จาก EC2 โดยใช้ EC2 Instance ที่สร้างใน Elastic Beanstalk ครับ

ในบทความนี้ ผมได้เขียนวิธีการเข้าถึง S3 จาก EC2 บน Elastic Beanstalk ซึ่งเราสามารถเข้าถึง Service อื่นๆของ AWS ได้โดยเปลี่ยนการตั้งค่า Permission บน IAM Role ครับ

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

ดูรายละเอียดเพิ่มเติมได้ที่นี่ สอบถามเพิ่มเติมเกี่ยวกับ AWS คลิกที่นี่