AWS ARN Parser: แยกส่วนและประกอบ Amazon Resource Name ได้ในพริบตา
ถอดรหัส Amazon Resource Name ออกเป็น partition, service, region, account และ resource พร้อม segment ที่คัดลอกได้ และประกอบ ARN ที่ถูกต้องกลับจากส่วนประกอบ — ประมวลผลฝั่ง client 100%
Table of Contents
AWS ARN Parser: แยกส่วนและประกอบ Amazon Resource Name ได้ในพริบตา
ทุก IAM policy, CloudTrail log และ error message ล้วนพูดภาษา ARN — และส่วน resource ของแต่ละบริการก็ต่างกันอย่างน่าปวดหัว ARN ของ bucket ไม่มี region และไม่มี account เลย จึงมี colon ติดกันสองตัว ARN ของ role ใช้ slash ระบุ resource ส่วน ARN ของ Lambda function ต่อหลายฟิลด์ด้วย colon หลัง segment ที่ห้า พออ่านผ่านมาหลายร้อยตัว สายตาจะเริ่มข้ามมันไปได้เอง แต่ก่อนหน้านั้นทุก string arn:aws:... คือกำแพงเครื่องหมายที่ต้องถอดด้วยมือ
การถอดด้วยมือช้าและผิดพลาดแบบเงียบ ๆ ฟิลด์ไหนคือ account ฟิลด์ไหนคือ region? colon ที่ติดกันนั้นคือ region ว่างหรือ account ที่หายไป? แล้ว aws-cn เปลี่ยนความหมายของ account ID ที่เพิ่งคัดลอกมาหรือไม่? คำตอบที่ผิดจะกลายเป็น policy statement ที่ไม่ match อะไรเลย resource ใน Terraform ที่ scope ผิด หรือเวลาหนึ่งชั่วโมงที่หายไปกับ error message ที่ชี้ไปคนละ account
AWS ARN Parser รับ ARN หนึ่งตัวเข้าไปแล้วคืนส่วนประกอบทั้งห้า — partition, service, region, account และ resource — ในรูป segment ที่มีป้ายกำกับชัดเจนและคัดลอกได้ทีละส่วน เครื่องมือรองรับทั้งรูปแบบ resource แบบคั่นด้วย colon และแบบคั่นด้วย slash จำแนก partition ได้ครบทั้งสามแบบ และยังประกอบ ARN ที่ถูกต้องกลับจากส่วนประกอบได้ ทุกอย่างประมวลผลฝั่ง client 100% ในเบราว์เซอร์ของคุณ account ID และชื่อ resource จึงไม่หลุดออกจากเครื่อง
ทำไมต้องใช้ AWS ARN Parser?
- อ่าน ARN ได้ในชั่วขณะ — parser แยก string ออกเป็น segment ที่มีป้ายกำกับ ยืนยัน service, region และ account ได้ในไม่กี่วินาที โดยไม่ต้องนับ colon บนหน้าจอ
- คัดลอกเฉพาะส่วนที่ต้องการ — ต้องการแค่ account ID สำหรับ trust policy หรือ resource path สำหรับ policy statement? แต่ละ segment คัดลอกได้ทีละส่วน ตัดปัญหาพิมพ์ใหม่แล้วพลาดตัวอักษรจน policy ไม่ทำงาน
- ประกอบ ARN ย้อนกลับได้ — ป้อน partition, service, region, account และ resource ให้เครื่องมือ แล้วมันจะประกอบเป็น ARN ที่ถูกต้องตามไวยากรณ์ รวมถึง colon คู่ที่จำเป็นเมื่อฟิลด์ว่าง
- รองรับทุกรูปแบบของ resource — ทั้งแบบ slash อย่าง role/DeployRole และ table/Orders แบบต่อด้วย colon อย่าง function:my-function:production และแบบผสม ถอดรหัสได้ครบถ้วน
- เข้าใจ partition ได้ทันที — aws, aws-cn และ aws-us-gov เป็นโลกที่แยกขาดจากกันและมี account space ต่างหาก parser บอกได้ทันทีว่า ARN ตัวนี้อยู่โลกไหน
- เป็นส่วนตัวและรวดเร็ว — ARN อาจเผยโครงสร้าง infrastructure เครื่องมือจึงประมวลผลฝั่ง client ทั้งหมด ไม่มี upload ไม่มีการสมัครสมาชิก และไม่ต้องรอ
ฟีเจอร์หลัก
| ฟีเจอร์ | สิ่งที่ทำ |
|---|---|
| Parse ARN ครบทุกส่วน | แยก ARN ออกเป็น partition, service, region, account และ resource |
| รูปแบบ colon และ slash | รองรับ resource แบบ slash, แบบต่อด้วย colon และแบบผสม |
| Segment คัดลอกได้ | คลิกเดียวคัดลอกแต่ละ component ได้ตรงตามต้นฉบับ |
| โหมดประกอบกลับ | ประกอบ ARN ที่ถูกต้องจากข้อมูลแต่ละส่วนที่กรอกเข้าไป |
| จำแนก partition | จำได้ทันทีว่าเป็น aws, aws-cn หรือ aws-us-gov ตั้งแต่วางลง input |
| Privacy-first | ประมวลผลฝั่ง client 100% — ไม่มี upload ไม่มีบัญชีผู้ใช้ |
เครื่องมือนี้ตั้งใจโฟกัส: อ่านและเขียนไวยากรณ์ ARN ให้ถูกต้อง แล้วก็ไม่ไปยุ่งกับงานอื่น สามการจับคู่นี้ครอบคลุม workflow ที่เจอ ARN หนัก ๆ ทั้งหมด:
- ใช้คู่กับ JSON Formatter เวลา CloudTrail event หรือ policy document มาเป็น one-liner ที่อ่านไม่ออก — จัดรูปแบบก่อน แล้วค่อยถอดรหัส ARN ที่อยู่ข้างใน
- ใช้ URL Parser เพื่อแยกส่วน service endpoint และ API address ด้วยวินัยแบบเดียวกัน
- แล้วส่ง ARN ที่ตรวจสอบแล้วต่อให้ AWS IAM Policy Builder เพื่อแปลงเป็น statement แบบ least privilege ที่ผ่านการ validate
วิธีการใช้งาน
- เปิดเครื่องมือ — เข้าไปที่ AWS ARN Parser ไม่ต้องติดตั้ง ไม่ต้องสมัครสมาชิก และไม่ต้องใช้ AWS credentials
- วาง ARN — คัดลอก ARN จาก policy, log line, Terraform plan หรือ error message มาวาง ผลการ parse ออกมาทันที
- ตรวจแต่ละ segment — partition, service, region, account และ resource จะแสดงเป็นฟิลด์ที่มีป้ายกำกับ ฟิลด์ที่ AWS เว้นว่างจะแสดงเป็นค่าว่าง ไม่เดาแทน ซึ่งเป็นวิธีเร็วที่สุดในการจำแนก global service
- คัดลอกส่วนที่ต้องการ — คลิก segment ไหนก็ได้เพื่อคัดลอกตรง ๆ ทั้ง account ID สำหรับ trust policy, resource path สำหรับ statement หรือ region สำหรับคำสั่ง CLI
- ประกอบ ARN กลับ — สลับไปโหมด build กรอกข้อมูลแต่ละส่วน แล้วคัดลอก ARN ที่ประกอบแล้วไปวางใน policy document หรือ IaC template โดยที่ colon อยู่ครบตำแหน่ง
ห้า Segment ของ ARN กับอารมณ์ที่แปรปรวนของแต่ละบริการ
ARN ทุกตัวใช้ไวยากรณ์เดียวกัน:
arn:partition:service:region:account-id:resource
ห้าฟิลด์แรกตายตัวและคั่นด้วย colon ส่วนฟิลด์ที่หก — resource — คือจุดที่แต่ละบริการเลือกทางของตัวเอง และเป็นเหตุผลที่ ARN ดูไม่สม่ำเสมอ
ฟิลด์ resource มีอย่างน้อยสามสำเนียง IAM ใช้ slash คั่นระหว่างชนิดกับชื่อ: arn:aws:iam::123456789012:role/DeployRole DynamoDB ก็เช่นกัน: table/Orders แต่ Lambda ต่อด้วย colon หลังชนิดของ resource: function:my-function:production S3 แปลกกว่านั้น — ARN ของ bucket ไม่มีอะไรหลังฟิลด์ service เลยนอกจาก colon สองตัว และ ARN ของ object ฝัง key ไว้ใน resource ด้วย slash: arn:aws:s3:::reports-2026/eu/summary.csv บาง ARN อย่าง access point ผสมทุกแบบรวดเดียว parser ที่สมมติสำเนียงเดียวจะอ่านสำเนียงอื่นผิด เครื่องมือนี้จึงถือว่าทุกอย่างหลัง colon ตัวที่ห้าคือ resource ตรงตามที่ AWS ตั้งใจ
partition คือเส้นแบ่ง ไม่ใช่ของประดับ aws คือคลาวด์เชิงพาณิชย์ระดับโลก aws-cn คือ partition ประเทศจีนที่ดำเนินการร่วมกับพันธมิตรในท้องถิ่น และ account space แยกขาดจาก aws โดยสิ้นเชิง ส่วน aws-us-gov คือ GovCloud สำหรับ region งานภาครัฐสหรัฐฯ ที่ก็ถูกกักไว้ต่างหากเช่นกัน account ID ที่หน้าตาเหมือนกันในสอง partition หมายถึงลูกค้าคนละราย การเผลอคัดลอก partition ผิดจึงเป็นประเด็นความปลอดภัยจริง ไม่ใช่แค่เรื่องหน้าตา
ฟิลด์ว่างเป็นเรื่องปกติ ไม่ใช่ข้อมูลเสีย IAM, S3, CloudFront และ Route 53 เป็น global service ARN ของบริการกลุ่มนี้จึงเว้น region ว่าง — arn:aws:iam::123456789012:role/DeployRole ไม่มีอะไรระหว่าง colon เลย และ ARN ของ S3 bucket ก็เว้น account ว่างด้วย ความผิดพลาดในการ parse ที่พบบ่อยสองอย่างจึงตามมาตรง ๆ: อ่าน colon คู่ว่าเป็นพิมพ์ผิด และสมมติว่าทุก ARN ต้องมี account
ตัวอย่างการถอดจริง ลองใช้ arn:aws:dynamodb:us-east-1:123456789012:table/Orders:
- aws — partition เชิงพาณิชย์
- dynamodb — บริการที่เกี่ยวข้อง
- us-east-1 — region เฉพาะ ตารางนี้จึงมีอยู่แค่ที่นั่น
- 123456789012 — account เจ้าของ
- table/Orders — resource ชนิด table ชื่อ Orders
การอ่านย้อนทางก็พบบ่อยไม่แพ้กัน เวลาเขียน policy ที่ต้องมีค่า Resource คุณจะประกอบค่าเหล่านี้จากส่วนประกอบ และเมื่อต้องการ match แบบ prefix ก็ขยาย resource อย่างตั้งใจ เช่น arn:aws:s3:::reports-2026/eu/* แทนการใช้ * เปล่า ๆ
กรณีการใช้งานจริง
การเขียน IAM Policy
Policy จะดีหรือพังอยู่ที่ความแม่นยำของ ARN ถอดรหัส ARN ที่รวบรวมจาก requirement คัดลอกแต่ละ segment ให้ตรง แล้วประกอบกลับเป็นค่า Resource ในตัวสร้าง policy statement ที่อ้างอิง ARN จริงที่ตรวจสอบแล้วจะไม่พลาดเป้าแบบเงียบ ๆ เหมือนตัวที่พิมพ์ใหม่จากความจำ
การวิเคราะห์ CloudTrail และ Log
CloudTrail บันทึก resources ที่เกี่ยวข้องในทุก event ในรูป ARN ตอน triage กิจกรรมผิดปกติ การถอดรหัสแต่ละ ARN บอกคุณได้เร็วกว่าการกวาดตาว่ามี account, region และ service ใดถูกแตะต้อง และ account ID เดียวกันปรากฏซ้ำในหลาย event หรือไม่
การดีบักแบบ Cross-Account
"Access Denied" จากการ assume role มักซ่อนปัญหาระดับหนึ่งตัวอักษร: account ID ผิด, partition ผิด หรือ path segment ของ role ARN หายไป ถอดรหัสทั้ง ARN ใน trust policy และ ARN ใน error message แล้วเทียบทีละ segment จุดที่ต่างกันจะประกาศตัวเองทันที
Template แบบ Infrastructure-as-Code
Terraform และ CloudFormation แทรกค่า account ID และ region ลงใน ARN อยู่ตลอด เมื่อ plan หรือ apply ล้มเหลวที่ ARN ตัวใด ให้วางค่าที่ render แล้วลงใน parser ยืนยันว่า component ไหนผิด แล้วแก้ interpolation แทนการจ้วงจับที่ template แล้วขอดวง
แนวทางปฏิบัติที่ดี
- คัดลอก segment แบบตรงตัวสำหรับ policy — พิมพ์ ARN ผิดไม่ได้แค่ error IAM จะไม่ match อะไรเลย สิทธิ์ที่คิดว่าให้ไปแล้วจริง ๆ ไม่เคยมีตัวตน
- จำไว้ว่า global service มี region เป็นค่าว่าง — ARN ของ IAM, S3, CloudFront และ Route 53 เว้น region หรือ account ว่างโดยตั้งใจ รักษา colon คู่ไว้ อย่าเอาไป "แก้"
- Validate ก่อนวางลง policy — หมั่นลาก ARN ที่ประกอบเองผ่าน parser สักรอบ ถ้า segment ที่ได้กลับมาตรงตามตั้งใจ แปลว่า ARN นั้นถูกต้องตามไวยากรณ์
- เช็ก partition ก่อนเป็นอย่างแรก — ยืนยันว่าเป็น aws, aws-cn หรือ aws-us-gov ก่อนเชื่อ account ID โดยเฉพาะ ARN ที่ได้รับต่อจากเพื่อนร่วมงานหรือ vendor
- เลือก resource path แบบเจาะจงมากกว่า wildcard — ถ้าจำเป็นต้องใช้ wildcard ก็ใช้อย่างตั้งใจและแคบ เช่น prefix ของ bucket เดียว ไม่ใช่ทุก bucket ใน account
- มีแหล่งอ้างอิงหลักเสมอ — generate ARN จากโค้ดให้ได้มากที่สุด และตอนสืบสวนให้ถอดรหัสจาก log โดยตรง string ใน log น่าเชื่อถือกว่าความจำเสมอ
เลิกถอดรหัส ARN ด้วยมือกันเถอะ
ARN คือระบบการระบุที่อยู่ของ AWS และคุณจะเจอมันต่อไปในทุก policy, log และ stack trace เปิด AWS ARN Parser วาง string ลึกลับตัวถัดไป แล้วรับ partition, service, region, account และ resource ของมันในช่วงตาเดียว — ฟรี ทันที และทำงานทั้งหมดในเบราว์เซอร์ของคุณ
เครื่องมือที่เกี่ยวข้องที่คุณอาจสนใจ:
- AWS IAM Policy Builder — เปลี่ยน ARN ที่ตรวจสอบแล้วเป็น policy JSON แบบ least privilege ที่ผ่านการ validate
- JSON Formatter — จัดรูปแบบ CloudTrail event และ policy document ให้อ่านง่ายก่อนลงมือ
- URL Parser — แยกส่วน endpoint และ query string แบบทีละชิ้นด้วยแนวคิดเดียวกัน
ขอให้สนุกกับการ parse ARN!
คำถามที่พบบ่อย
ถ: AWS ARN Parser ส่ง ARN ของฉันขึ้นเซิร์ฟเวอร์หรือไม่?
ตอบ: ไม่ครับ การ parse และการประกอบเกิดขึ้นในเบราว์เซอร์ของคุณทั้งหมด เพราะ ARN อาจเผย account ID และชื่อ resource เครื่องมือจึงออกแบบให้ทำงานฝั่ง client 100% ไม่มี upload และไม่มีบัญชีผู้ใช้
ถ: ทำไมบาง segment ถึงกลับมาเป็นค่าว่าง?
ตอบ: เพราะ AWS เว้นว่างไว้เอง global service อย่าง IAM, S3 และ CloudFront ไม่ระบุ region และ ARN ของ S3 bucket ก็ไม่ระบุ account ด้วย — นั่นคือเหตุผลที่ arn:aws:s3:::my-bucket มี colon ติดกันสองตัว parser จะแสดงฟิลด์เหล่านั้นเป็นค่าว่าง ไม่เดาค่าแทน
ถ: รองรับ resource identifier ที่ผสม colon กับ slash ไหม?
ตอบ: รองรับครับ parser ถือว่าห้าฟิลด์แรกเป็นไวยากรณ์ตายตัว และเก็บทุกอย่างหลัง colon ตัวที่ห้าไว้เป็น resource ครบถ้วน ดังนั้น function:my-function:production, role/DeployRole และ table/Orders จะอยู่ครบตามที่ AWS เขียนไว้
ถ: aws, aws-cn และ aws-us-gov ต่างกันอย่างไร?
ตอบ: ทั้งสามเป็น partition ที่แยกขาดจากกัน aws คือคลาวด์เชิงพาณิชย์ระดับโลก aws-cn คือ partition ประเทศจีนที่มี account space แยกโดยสิ้นเชิง และ aws-us-gov คือ GovCloud account ID ที่หน้าตาเหมือนกันในสอง partition หมายถึงลูกค้าคนละราย partition จึงสำคัญทุกครั้งที่คัดลอกหรือส่งต่อ ARN
ถ: ใช้เครื่องมือนี้เขียน ARN ได้ด้วยหรือแค่อ่าน?
ตอบ: เขียนได้ครับ โหมด build รับ partition, service, region, account และ resource เป็นข้อมูลนำเข้า แล้วประกอบเป็น ARN ที่ถูกต้อง รวมถึง colon คู่ที่จำเป็นเมื่อฟิลด์ region หรือ account ว่าง