Câu trả lời:
Bạn có thể lấy số tài khoản từ lệnh con Dịch vụ Mã bảo mậtget-caller-identity
bằng cách sử dụng như sau:
aws sts get-caller-identity --query Account --output text
aws sts get-caller-identity|jq -r ".Account"
aws sts get-caller-identity --output json | jq '.Account' | sed 's/\"//g'
--query 'Account'
một phần.
jq
việc tham gia hoặc cài đặt trên một hệ thống. Một số máy chủ cấm cài đặt gói không liên quan do bảo mật. Bạn có thể làm điều gì đó như thế này aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'
nhưng nó hơi khó chịu và bạn có thể làm như vậy --query 'Account' --output text
tại thời điểm đó.
Từ câu trả lời liên quan của tôi cho AWS PowerShell CLI , ID tài khoản của bạn là một phần của Nguồn tài nguyên mà bạn tạo ... và những tài nguyên đó được tạo tự động cho bạn. Một số tài nguyên cũng sẽ liệt kê bạn là OwnerId.
Nhóm bảo mật mặc định được tạo tự động cho bạn trong VPC mặc định của mỗi khu vực dưới dạng nhóm bảo mật dành riêng. Từ tài liệu :
Bạn không thể xóa một nhóm bảo mật mặc định. Nếu bạn cố gắng xóa nhóm bảo mật mặc định EC2-Classic, bạn sẽ gặp lỗi sau: Client.InvalidGroup.Reserved: Nhóm bảo mật 'mặc định' được bảo lưu. Nếu bạn cố gắng xóa một nhóm bảo mật mặc định VPC, bạn sẽ gặp lỗi sau: Client.CannotDelete: nhóm được chỉ định: "sg-51530134" name: "default" không thể bị xóa bởi người dùng.
Điều này làm cho nó trở thành một ứng cử viên đáng tin cậy để truy xuất Id tài khoản của chúng tôi, miễn là bạn đang ở EC2 cổ điển hoặc có VPC mặc định (* xem các trường hợp phụ nếu bạn không có).
Thí dụ:
aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text
Điều này sử dụng --query
để lọc đầu ra thành "ID chủ sở hữu" cho kết quả đầu tiên từ yêu cầu này và sau đó sử dụng --output
để xuất ID tài khoản của bạn dưới dạng văn bản rõ:
123456781234
Các trường hợp cạnh:
(Cảm ơn @kenchew) Lưu ý rằng nếu bạn đã xóa VPC mặc định của mình trong một khu vực nhất định, nhóm bảo mật này không còn tồn tại nữa và bạn nên sử dụng một trong các giải pháp thay thế sau:
Đọc thêm:
Nếu bạn đang chạy trên một máy chủ đang chạy với một vai trò giả định, bạn không thể gọi aws sts get-caller-identity
. Ngoài ra, describe-security-groups
không phải lúc nào bạn cũng có thể sử dụng --group-names
bộ lọc (nó không hoạt động nếu bạn không có VPC mặc định), vì vậy chỉ cần chọn nhóm bảo mật đầu tiên. Tôi thấy điều này là đáng tin cậy nhất bất kể bạn sử dụng loại xác thực nào hoặc loại VPC bạn có.
aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text
Phương pháp yêu thích của tôi là sử dụng aws iam get-user [--profile <profile>]
vì bạn chỉ cần vai trò tự phục vụ IAM để điều này hoạt động.