ใครใช้ AWS ต้องรู้จัก ARN แน่ๆเลย

AWS มีผู้ใช้งานมากมายทั่วโลก เเต่ละ Account ก็มีการสร้าง Recource เยอะเเยะเต็มไปหมด ลองนึกถึง Scale เล็กๆกันก่อนครับ ว่าต้องมีอะไรบ้างถ้าเราสร้าง EC2 อย่างน้อยก็ต้องมี Instance , EBS , Key Pair , Security Group , VPC , Subnet , Internet Gateway , Routing Table ใช่มั๊ยครับ แค่จะใช้ EC2 เครื่องเดียว ก็ต้องมีอะไรเยอะเเยะเต็มไปหมดเเล้ว ถ้าเรานึกภาพในมุมที่กว้างขึ้น อาจจะสงสัยขึ้นมา ว่า AWS จะตั้งชื่อ Resource พวกนี้ยังไง ในบทความนี้จะมารู้จัก ARN กันครับ

ARN ย่อมาจาก Amazon Resource Names ซึ่งความหมายของมันก็ตามตัวครับ มันคือชื่อของ Resource ต่างๆบน AWS นั่นเอง

และชื่อของมันก็ยาวซะเหลือเกิน เเต่ก็มีความหมายเสมอ และมี Pattern ของมันด้วย ในบทความนี้เราจะรู้จัก ARN กันให้มากขึ้นนะครับ

สำหรับ Pattern หรือ Format ของมันนั้น จะเป็นไปตามนี้ครับ

arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id

ค่าเเรก arn เป็นการบ่งบอกว่า เจ้า String ยาวๆนี้คือ ARN นะ

ลำดับต่อไป เรียกว่า Partition ครับ ส่วนมากเเล้วเราจะเห็นว่า มันระบุว่า “aws” แต่ในความจริงจะมี “aws-cn” ซึ่งเป็น AWS ที่ให้บริการที่เมืองจีน และ “aws-us-gov” ซึ่งเป็น GovCloud ที่เมกานั่นเอง

จากนั้นก็เป็นชื่อของ Service ครับ ซึ่งก็คือบริการต่างๆบน AWS นั่นเอง ตัวอย่างก็ “s3” , “rds” อะไรแบบนี้

ถัดไป ก็คือ Region ครับ เราคงรู้กันอยู่เเล้วว่า AWS มี Region เยอะเเยะไปหมด ตัวอย่างเช่น “ap-southeast-1” ที่สิงคโปร์

จากนั้นก็จะเป็นค่าตัวเลข ซึ่งเป็นค่า Account ID ครับ ใครสมัคร AWS แล้ว ก็จะมีค่านี้ไม่ซ้ำกันในเเต่ละ Account

และต่อไปก็จะเป็นค่า Resource-ID , Resource-Type ครับ ตัวอย่างเช่น ถ้าเป็น EC2 จะเป็นแบบนี้

instance/i-abcxxxx หรือ User บน IAM ก็จะเป็น user/pao ประมาณนี้ครับ

สำหรับการนำเอาไปใช้งาน บางครั้งเวลาเราจะเรียกดูข้อมูลหรือรายละเอียดของ Resource บางอย่าง เราก็ต้องระบุค่า ARN เข้าไปครับ หรือในกรณีที่เรา กำลังจะ Build Solution บางอย่างซึ่งมันต้องใช้ Service มากกว่า 1 ตัว เช่น

เราต้องการตั้งค่าการเเจ้งเตือน Budget ให้เเจ้งเตือนผ่านทา AWS SNS และให้ AWS SNS แจ้งเตือนเข้าไปยัง Webhook Server ที่เรารันอยู่บน EC2 หรือใครใช้ Serverless ก็ให้มันเรียกใช้ AWS Lambda ต่อ จากนั้น อยากให้มันแจ้งเตือนไปที่ App อะไร เราก็เขียน Code ลงไป ตัวอย่าเคสที่ผมใช้ก็เตือนเข้าไปยัง Cisco Webex Team / Line Notify.

จะเห็นว่าเราต้องพึ่งพา Service ต่างๆเยอะเเยะไปหมด และตอนที่เราตั้งค่าว่า จะให้มันเเจ้งเตือนยังไง ที่หน้าตั้งค่า Budget จะมีหน้าตาเเบบนี้ขึ้นมาครับ

จะเห็นว่าเราต้องระบุค่า ARN ของ SNS Topic ลงไป ในเคสนี้เราก็สร้าง Topic ให้เรียบร้อยเเล้วเอาค่า ARN ของมันมาใส่ครับ

ในโพสนี้ หวังว่าทุกท่านจะรู้จัก ARN กันมากขึ้น โดยเฉพาะท่านที่ต้องการใช้ AWS หรือทำงานเป็น Solutions Architect / Cloud Engineer ยิ่งต้องศึกษาไว้เลย

ส่วนท่านที่มีคำถามหรือข้อสงสัยใดๆติดต่อผมได้เลยครับ

สำหรับบทความนี้ก็ขอจบเเต่เพียงเท่านี้ครับ พบกันใหม่ในบทความหน้า หรือใครอยากอ่านบทความแบบนี้อีก ตามไปกด Like Page PAOCLOUD CO., LTD. ได้นะครับ สวัสดีครับ

อ้างอิง :

https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *