Sunday, September 29, 2024

[AWS] AWS EC2 Instance Metadata

-

AWS EC2 Instance Metadata là một tính năng cho phép các EC2 instance tự động học về các thông tin liên quan đến chính nó. Nó cho phép các instance này lấy thông tin về IP, tên instance, môi trường thực thi và nhiều thông tin khác liên quan đến mạng, máy chủ và hệ thống.

Metadata được lưu trữ trong một đường dẫn cố định, đó là http://169.254.169.254/latest/meta-data. Khi bạn truy cập vào đường dẫn này từ bên trong một EC2 instance, nó sẽ trả về một danh sách các tên tài nguyên (resource) metadata khả dụng.

Bạn có thể truy cập thông tin metadata của instance bằng cách sử dụng các trình duyệt web hoặc các lệnh dòng lệnh như curl hay wget.

Một số thông tin metadata phổ biến bao gồm:

  • ami-id: ID của AMI được sử dụng để khởi tạo instance này.
  • instance-id: ID của instance hiện tại.
  • instance-type: Loại instance hiện tại (t2.micro, m4.large, etc.).
  • hostname: Tên máy chủ của instance.
  • local-ipv4: Địa chỉ IP nội bộ của instance.
  • public-ipv4: Địa chỉ IP công khai của instance (nếu được cấu hình).
  • public-hostname: Tên máy chủ công khai của instance (nếu được cấu hình).
  • security-groups: Tên các security group được gán cho instance.

Bạn có thể sử dụng các thông tin này để phân tích và quản lý các instance EC2 của mình. Ví dụ, nếu bạn muốn tự động cấu hình một ứng dụng để sử dụng các thông tin như địa chỉ IP, tên máy chủ và tên security group, bạn có thể sử dụng metadata để lấy các thông tin này mà không cần phải cung cấp thông tin tài khoản IAM để xác thực.

Tuy nhiên, cần lưu ý rằng metadata chỉ cung cấp thông tin về instance và không thể sử dụng để truy cập hoặc quản lý các tài nguyên khác trong tài khoản AWS.

Ngoài metadata, userdata cũng là một tính năng quan trọng của EC2. UserData cho phép bạn chạy các tác vụ cần thiết khi khởi tạo một instance, ví dụ như cài đặt phần mềm, cấu hình hệ thống, hoặc khởi động ứng dụng. UserData được lưu trữ trong metadata và có thể được truyền vào instance thông qua các file hoặc dữ liệu trực tiếp trong metadata.

Đây là 1 ví dụ khi sử dụng 1 EC2 để gọi 1 lệnh curl đến http://169.254.169.254 bạn sẽ nhận được 1 loạt các con số và ngày tháng về cơ bản đây chính là phiên bản của API curl mà bạn đang sử dụng nhưng chúng ta không cần quá quan tâm về nó.

[ec2-user@ip-172-31-3-136 ~]$ curl http://169.254.169.254
1.0
2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04
2011-01-01
2011-05-01
2012-01-12
2014-02-25
2014-11-05
2015-10-20
2016-04-19
2016-06-30
2016-09-02
2018-03-28
latest[ec2-user@ip-172-31-3-136 ~]$

Nếu ta thêm latest tức là phiển bản mới nhất (hãy ghi nhớ luôn luôn cuối lệnh curl phải có 1 dấu “/”). Như vậy kết quả cho thấy chúng ta nhận được trường mới.

[ec2-user@ip-172-31-3-136 ~]$ curl http://169.254.169.254/latest/
dynamic
meta-datal
user-data[ec2-user@ip-172-31-3-136 ~] $

Bây giờ chúng ta hãy xem trường meta-data nhé (đừng bao giờ quên dấu “/” ở cuối nhé). Kết quả chúng ta có rất nhiều trường trong đó.

user-data[ec2-user@ip-172-31-3-136 ~] $ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
iam/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/[ec2-user@ip-172-31-3-136 ~]$

Trong số các trường ở trên, có những trường không có “/” ở cuối, các trường này thường là 1 giá trị, ví dụ như instance-id, trường instance-id chính là số ID phiên bản EC2 của mình.

[ec2-user@ip-172-31-3-136 ~]$ curl http://169.254.169.254/latest/meta-data/instance-id
i-05adcce6933809eda[ec2-user@ip-172-31-3-136 ~] $

Tương tự như vậy chúng ta có thể áp dụng để xem ip EC2.

[ec2-user@ip-172-31-3-136 ~]$ curl http://169.254.169.254/latest/meta-data/local-ipv4
172.31.3.136[ec2-user@ip-172-31-3-136 ~]$

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories