Tôi thường tải thẻ dưới dạng biến môi trường khi khởi động bằng cách chạy tập lệnh UserData. Tùy thuộc vào cá thể, tôi thay đổi các tham số --query
và --filter
thành cuộc gọi describe-instances
nhưng nếu không thì tập lệnh sẽ giữ nguyên. LƯU Ý: Ví dụ bên dưới loại trừ thẻ Name
và các thẻ có chứa :
- thay đổi hành vi này cho phù hợp với nhu cầu của bạn.
#!/bin/bash -v
apt-get update
apt-get -y install awscli
# add boot script which loads environment variables
cat > /etc/profile.d/export_instance_tags.sh << 'EndOfMessage'
# fetch instance info
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
INSTANCE_AZ=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
INSTANCE_REGION="`echo \"$INSTANCE_AZ\" | sed -e 's:\([0-9][0-9]*\)[a-z]*\$:\\1:'`"
# export instance tags
export_statement=$(aws ec2 describe-tags --region "$INSTANCE_REGION" --filters "Name=resource-id,Values=$INSTANCE_ID" --query 'Tags[?!contains(Key, `Name`) && !contains(Key, `:`)].[Key,Value]' --output text | sed -E 's/^([^\s\t]+)[\s\t]+([^\n]+)$/export \1="\2"/g')
eval $export_statement
# export instance info
export INSTANCE_ID
export INSTANCE_AZ
export INSTANCE_REGION
EndOfMessage
Nó chạy describe-tags
để liệt kê tất cả các thẻ, định dạng lại đầu ra vào một chuỗi các câu lệnh xuất khẩu với sed
sau đó chạy kết quả sử dụng eval
Nguồn
2018-02-11 13:57:48
Chỉ cần tạo phiên bản cải tiến của giải pháp được cung cấp ở trên tại https://gist.github.com/marcellodesales/a890b8ca240403187269 –