2013-08-20 35 views
10

Tôi đang cố gắng để thiết lập một phương tiện để đăng ký một ví dụ trong route53 tự động khi dụ được tạo ra, sử dụng muối và bài viết này: http://cantina.co/2012/01/25/automated-dns-for-aws-instances-using-route-53/Cách lấy Tên cá thể từ cá thể trong AWS?

bài viết này sử dụng ec2-metadata để có được những ví dụ-id và và tên máy. Tôi tự hỏi nếu có một cách, sử dụng bash trong trường hợp, để có được tên dụ thay thế. ec2-metadata chỉ dường như hiển thị id cá thể. Cảm ơn trước.

Trả lời

0

Không chắc chắn nó sẽ trông như thế nào với bash, nhưng bạn có thể sử dụng SDK từ bản thân cá thể nếu bạn có thể lấy id cá thể. Bạn sẽ truy vấn truy vấn ec2 và chuyển vào id cá thể ec2. Sử dụng sdk ruby ​​nó sẽ trông giống như:

i = ec2.instances["i-12345678"] 
puts i.dns_name 
10

Trước hết, Sở Amazon EC2Instance Metadata cũng cung cấp khá nhiều Tên khác bên cạnh những instance-id, nếu những thể là những gì bạn đang tìm kiếm - xem Instance Metadata Categories:

  • hostname - Tên máy chủ riêng của cá thể. Trong trường hợp có nhiều giao diện mạng, điều này đề cập đến thiết bị eth0 (thiết bị có số thiết bị là 0).
  • local-hostname - Tên máy chủ DNS riêng của cá thể. Trong trường hợp có nhiều giao diện mạng, điều này đề cập đến thiết bị eth0 (thiết bị có số thiết bị là 0).
  • public-hostname - DNS công khai của cá thể. Nếu cá thể nằm trong VPC, danh mục này chỉ được trả về nếu thuộc tính enableDnsHostnames được đặt thành true.

Nếu bạn đang tìm kiếm các Tên như tiếp xúc trong AWS Management Console tuy nhiên, bạn sẽ thực sự cần phải nghỉ mát để sử dụng một trong những Tools for Amazon Web Services để lấy nó - đó Tên là trong thực tế chỉ là một thẻ thông thường với khóa Tên (xem Tagging Your Amazon EC2 Resources), điều này sẽ được sử dụng trên hầu hết các dịch vụ AWS cho mục đích rõ ràng.

Dưới đây là làm thế nào để có được nó với AWS Command Line Interface ví dụ (bỏ qua khu vực và các thông tin):

aws ec2 describe-tags \ 
--filters Name=resource-id,Values=i-abcd1234 Name=key,Values=Name \ 
--query Tags[].Value --output text 
  • Đối tiên tiến xử lý đầu ra CLI JSON nhiều hơn những gì có thể với việc xây dựng trong --query tùy chọn, bạn có thể đến jq (bộ xử lý JSON dòng lệnh nhẹ và linh hoạt).

  • Overthink's answer cung cấp một ví dụ dựa trên hiện nay di sản Amazon EC2 API Tools (xin lưu ý các ý kiến, trong đó một cách chính xác chỉ ra rằng bạn muốn hiện nay đối phó với các thông tin khác nhau, xem Tell the CLI Tools Who You AreIAM Roles for EC2 instances để biết chi tiết).

+3

Bạn cũng có thể sử dụng tham số dòng lệnh --query cùng với --output để trực tiếp xuất ra tên dụ, ví dụ: 'aws ec2 mô tả thẻ - tên bộ lọc = id tài nguyên, giá trị = i-abcd1234 Tên = khóa, giá trị = Tên --query Tags [] Giá trị - văn bản đầu ra' –

+1

@CarlosP - Tôi đã cập nhật câu trả lời với phương pháp tiếp cận thực sự dễ dàng hơn mà bạn đề xuất (tùy chọn '--query' không có sẵn trong AWS CLI từ có được đi), cảm ơn đã chỉ ra điều này! –

-2

Tìm thấy thẻ mô tả không hoạt động trong cấu hình của tôi, không thành công với lỗi 'UnauthorizedOperation'.Làm việc này với mô tả-trường hợp:

aws ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text 

Sử dụng vùng và khóa truy cập từ phần cấu hình mặc định của tập tin aws của người dùng hiện tại: ~/.aws/config. Nếu cần sử dụng vùng/khóa của người dùng khác (có thể tìm thấy tại bảng điều khiển IAM của bảng điều khiển AWS), bạn có thể thêm chúng vào một phần khác trong tệp đó, ví dụ [user2] và sử dụng lệnh như sau:

aws --profile user2 ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text 
Các vấn đề liên quan