操作場景
彈性云主機元數據包含了彈性云主機在云平臺的基本信息,例如云服務ID、主機名、網絡信息等。彈性云主機元數據支持兩種風格,可以分別通過兼容Openstack和兼容EC2的API獲取,如表 61所示。對于支持的元數據類型,本節詳細介紹了其URI和使用方法。
使用須知
如果元數據中包含了敏感數據,您應當采取適當的措施來保護敏感數據,比如限制訪問范圍、加密等。
防火墻配置示例如下所示:
- Windows
如果您不希望管理員之外的用戶訪問自定義用戶數據,請以管理員身份開啟防火墻后,在PowerShell 中執行下面的命令,阻止非管理員用戶訪問自定義用戶數據:
PS C:\>$RejectPrincipal = New-Object -TypeName System.Security.Principal.NTAccount ("Everyone")
PS C:\>$RejectPrincipalSID = $RejectPrincipal.Translate([System.Security.Principal.SecurityIdentifier]).Value
PS C:\>$ExceptPrincipal = New-Object -TypeName System.Security.Principal.NTAccount ("Administrator")
PS C:\>$ExceptPrincipalSID = $ExceptPrincipal.Translate([System.Security.Principal.SecurityIdentifier]).Value
PS C:\>$PrincipalSDDL = "O:LSD:(D;;CC;;;$ExceptPrincipalSID)(A;;CC;;;$RejectPrincipalSID)"
PS C:\>New-NetFirewallRule -DisplayName "Reject metadata service for $($RejectPrincipal.Value), exception: $($ExceptPrincipal.Value)" -Action block -Direction out -Protocol TCP -RemoteAddress 169.254.169.254 -LocalUser $PrincipalSDDL
- Linux
如果您不希望root之外的用戶訪問自定義用戶數據,請以root用戶權限執行下面的命令,阻止非root用戶訪問自定義用戶數據:
iptables --append OUTPUT --proto tcp --destination 169.254.169.254 --match owner ! --uid-owner root --jump REJECT
彈性云主機元數據類別支持列表
表 彈性云主機元數據類別支持列表
| 元數據類型 | 實例元數據項 | 約束說明 |
|---|---|---|
| OpenStack類型 | /meta_data.json | 查詢彈性云主機的元數據信息。元數據的關鍵字段請參見表 metadata 關鍵字段。 |
| OpenStack類型 | /password | 查詢彈性云主機的密碼。Windows系統使用keypairs創建彈性云主機初始化時cloudbase-init用于保存密文密碼。 |
| OpenStack類型 | /user_data | 查詢彈性云主機的用戶數據。用戶根據需要自行指定腳本和配置文件用于彈性云主機初始化,詳細操作請參考用戶數據注入。若linux虛擬化使用密碼方式,則保存注入密碼的腳本。 |
| OpenStack類型 | /network_data.json | 查詢彈性云主機的網絡信息。 |
| OpenStack類型 | /securitykey | 獲取臨時的AK、SK。對彈性云主機獲取臨時的AK、SK,需要在IAM上對op_svc_ecs帳戶授權,并對相應的彈性云主機資源進行授權委托管理。 |
| 兼容EC2類型 | /meta-data/hostname | 查詢彈性云主機的主機名稱。請參考以下鏈接為彈性云主機去掉后綴.novalocal:彈性云主機的主機名帶后綴novalocal,這正常嗎? |
| 兼容EC2類型 | /meta-data/instance-type | 查詢彈性云主機的規格名稱。 |
| 兼容EC2類型 | /meta-data/local-ipv4 | 查詢彈性云主機的固定IP地址。多網卡情況下,只顯示主網卡的地址。 |
| 兼容EC2類型 | /meta-data/placement/availability-zone | 查詢彈性云主機的AZ信息。 |
| 兼容EC2類型 | /meta-data/public-ipv4 | 查詢彈性云主機的彈性公網IP地址。多網卡情況下,只顯示主網卡的彈性公網IP地址。 |
| 兼容EC2類型 | /meta-data/public-keys/0/openssh-key | 查詢彈性云主機的公鑰。 |
| 兼容EC2類型 | /user-data | 查詢彈性云主機的用戶數據。 |
| 兼容EC2類型 | /meta-data/security-groups | 查詢彈性云主機所使用的安全組名稱。 |
表 metadata關鍵字段
| 參數 | 參數類型 | 描述 |
|---|---|---|
| uuid | String | 彈性云主機的ID。 |
| availability_zone | String | 彈性云主機所在可用區。 |
| meta | Dict | 元數據信息,包括鏡像名稱、鏡像ID、VPC ID等信息。 |
| hostname | String | 彈性云主機主機名。請參考以下鏈接為彈性云主機去掉后綴.novalocal:彈性云主機的主機名帶后綴novalocal,這正常嗎? |
前提條件
-
已登錄彈性云主機。
-
請確保安全組出方向規則滿足如下要求,否則訪問元數據請求失敗:
? 協議:TCP
? 端口范圍:80
? 遠端地址:169.254.0.0/16
說明如果您使用的是默認安全組出方向規則,則已經包括了如上要求,可以正常訪問元數據。默認安全組出方向規則為:
協議:ANY
端口范圍:ANY
遠端地址:0.0.0.0/0
Metadata(OpenStack元數據API)
用于查詢彈性云主機的元數據。
-
URI
/169.254.169.254/openstack/latest/meta_data.json
-
方法
支持GET請求。
-
示例:
Linux操作系統:以使用cURL工具為例,介紹查詢彈性云主機元數據的方法。
curl //169.254.169.254/openstack/latest/meta_data.json
Winodows操作系統:以使用Invoke-RestMethod工具為例,介紹查詢彈性云主機元數據的方法。
Invoke-RestMethod //169.254.169.254/openstack/latest/meta_data.json | ConvertTo-Json
{
"random_seed": "rEocCViRS+dNwlYdGIxJHUp+00poeUsAdBFkbPbYQTmpNwpoEb43k9z+96TyrekNKS+iLYDdRNy4kKGoNPEVBCc05Hg1TcDblAPfJwgJS1okqEtlcofUhKmL3K0fto+5KXEDU3GNuGwyZXjdVb9HQWU+E1jztAJjjqsahnU+g/tawABTVySLBKlAT8fMGax1mTGgArucn/WzDcy19DGioKPE7F8ILtSQ4Ww3VClK5VYB/h0x+4r7IVHrPmYX/bi1Yhm3Dc4rRYNaTjdOV5gUOsbO3oAeQkmKwQ/NO0N8qw5Ya4l8ZUW4tMav4mOsRySOOB35v0bvaJc6p+50DTbWNeX5A2MLiEhTP3vsPrmvk4LRF7CLz2J2TGIM14OoVBw7LARwmv9cz532zHki/c8tlhRzLmOTXh/wL36zFW10DeuReUGmxth7IGNmRMQKV6+miI78jm/KMPpgAdK3vwYF/GcelOFJD2HghMUUCeMbwYnvijLTejuBpwhJMNiHA/NvlEsxJDxqBCoss/Jfe+yCmUFyxovJ+L8oNkTzkmtCNzw3Ra0hiKchGhqK3BIeToV/kVx5DdF081xrEA+qyoM6CVyfJtEoz1zlRRyoo9bJ65Eg6JJd8dj1UCVsDqRY1pIjgzE/Mzsw6AaaCVhaMJL7u7YMVdyKzA6z65Xtvujz0Vo=",
"uuid": "ca9e8b7c-f2be-4b6d-a639-f10b4d994d04",
"availability_zone": "lt-test-1c",
"hostname": "ecs-ddd4-l00349281.novalocal",
"launch_index": 0,
"meta": {
"metering.image_id": "3a64bd37-955e-40cd-ab9e-129db56bc05d",
"metering.imagetype": "gold",
"metering.resourcespeccode": "s3.medium.1.linux",
"image_name": "CentOS 7.6 64bit",
"os_bit": "64",
"vpc_id": "3b6c201f-aeb3-4bce-b841-64756e66cb49",
"metering.resourcetype": "1",
"cascaded.instance_extrainfo": "pcibridge:2",
"os_type": "Linux",
"charging_mode": "0"
},
"project_id": "6e8b0c94265645f39c5abbe63c4113c6",
"name": "ecs-ddd4-l00349281"
}
User data(OpenStack元數據API)
用于查詢彈性云主機的用戶數據。該值僅在創建彈性云主機時指定,不支持修改。
-
URI
/169.254.169.254/openstack/latest/user_data
-
方法
支持GET請求。
-
示例
Linux操作系統:
curl //169.254.169.254/openstack/latest/user_data
Windows操作系統:
Invoke-RestMethod //169.254.169.254/openstack/latest/user_data
ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
說明如果創建彈性云主機時未注入用戶數據,此時,該接口的查詢結果是404。
如下圖所示,圖 404 Not Found

Network data(OpenStack元數據API)
查詢彈性云主機的網絡信息
-
URI
/openstack/latest/network_data.json
-
方法
支持GET請求
-
示例
說明instance_max_bandwidth、instance_min_bandwidth的單位是Mbps,如果取值為-1,說明對帶寬大小無限制。
Linux操作系統:
curl //169.254.169.254/openstack/latest/network_data.json
Windows操作系統:
Invoke-RestMethod //169.254.169.254/openstack/latest/network_data.json | ConvertTo-Json
{
"services": [{
"type": "dns",
"address": "xxx.xx.x.x"
},
{
"type": "dns",
"address": "100.1
25.21.250"
}],
"networks": [{
"network_id": "67dc10ce-441f-4592-9a80-cc709f6436e7",
"type": "i
pv4_dhcp",
"link": "tap68a9272d-71",
"id": "network0"
}],
"links": [{
"type": "cascading",
"vi
f_id": "68a9272d-7152-4ae7-a138-3ef53af669e7",
"ethernet_mac_address": "fa:16:3e:f7:c1:47",
"id": "tap68a9272d-71",
"mtu": null
}],
"qos":{
"instance_max_bandwidth": 1200,
"instance_min_bandwidth": 4000
}
}
Security Key(OpenStack元數據API)
獲取臨時的AK、SK。
說明
您如果需要在彈性云主機獲取臨時的AK、SK,需要在IAM對彈性云主機進行云服務委托授權,并對相應的彈性云主機資源進行授權委托管理。
臨時的AK、SK有效期一個小時。臨時AK、SK更新時間早于失效時間10分鐘,10分鐘內新舊臨時AK、SK均可用。
使用臨時AK、SK時,需要在消息的header中增加'X-Security-Token':{securitytoken}。其中,securitytoken就是調用接口返回的值。
-
URI
/openstack/latest/securitykey
-
方法
支持GET請求
-
示例
- Linux操作系統:curl //169.254.169.254/openstack/latest/securitykey
- Windows操作系統:Invoke-RestMethod //169.254.169.254/openstack/latest/securitykey
User data(EC2-兼容的API)
用于查詢彈性云主機的用戶數據。該值僅在創建彈性云主機時指定,不支持修改。
-
URI
/169.254.169.254/latest/user-data
-
方法
支持GET請求。
-
示例
Linux操作系統:
curl //169.254.169.254/latest/user-data
Windows操作系統:
Invoke-RestMethod //169.254.169.254/latest/user-data
ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
Hostname(EC2-兼容的API)
用于查詢彈性云主機的主機名稱,后面會追加.novalocal后綴。
-
URI
/169.254.169.254/latest/meta-data/hostname
-
方法
支持GET請求
-
示例
Linux操作系統:
curl //169.254.169.254/latest/meta-data/hostname
Windows操作系統:
Invoke-RestMethod //169.254.169.254/latest/meta-data/hostname
vm-test.novalocal
Instance Type(EC2-兼容的API)
用于查詢彈性云主機的規格名稱。
-
URI
/169.254.169.254/latest/meta-data/instance-type -
方法
支持GET請求。
-
示例
Linux操作系統:
curl //169.254.169.254/latest/meta-data/instance-type
Windows操作系統:
Invoke-RestMethod //169.254.169.254/latest/meta-data/instance-type
s3.medium.1
Local IPv4(EC2-兼容的API)
用于查詢彈性云主機的固定IP地址。多網卡情況下,只顯示主網卡的地址。
-
URI
/169.254.169.254/latest/meta-data/local-ipv4
-
方法
支持GET請求。
-
示例
Linux操作系統:
curl //169.254.169.254/latest/meta-data/local-ipv4
Windows操作系統:
Invoke-RestMethod //169.254.169.254/latest/meta-data/local-ipv4
192.1.1.2
Availability Zone(EC2-兼容的API)
用于查詢彈性云主機的AZ信息。
-
URI
/169.254.169.254/latest/meta-data/placement/availability-zone
-
方法
支持GET請求。
-
示例
Linux操作系統:
curl //169.254.169.254/latest/meta-data/placement/availability-zone
Windows操作系統:
Invoke-RestMethod //169.254.169.254/latest/meta-data/placement/availability-zone
az1.dc1
Public IPv4(EC2-兼容的API)
用于查詢彈性云主機的彈性公網IP地址。多網卡情況下,只顯示主網卡的彈性公網IP地址。
- URI
/169.254.169.254/latest/meta-data/public-ipv4
- 方法
支持GET請求。
-
示例
Linux操作系統:
curl //169.254.169.254/latest/meta-data/public-ipv4
Windows操作系統:
Invoke-RestMethod //169.254.169.254/latest/meta-data/public-ipv4
46.1.1.2
Public Keys(EC2-兼容的API)
用于查詢彈性云主機的公鑰。
-
URI
/169.254.169.254/latest/meta-data/public-keys/0/openssh-key -
方法
支持GET請求。
-
示例
Linux操作系統:
curl //169.254.169.254/latest/meta-data/public-keys/0/openssh-key
Windows操作系統:
Invoke-RestMethod //169.254.169.254/latest/meta-data/public-keys/0/openssh-key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI5Fw5k8Fgzajn1zJwLoV3+wMP+6CyvsSiIc/hioggSnYu/AD0Yqm8vVO0kWlun1rFbdO+QUZKyVr/OPUjQSw4SRh4qsTKf/+eFoWTjplFvd1WCBZzS/WRenxIwR00KkczHSJro763+wYcwKieb4eKRxaQoQvoFgVjLBULXAjH4eKoKTVNtMXAvPP9aMy2SLgsJNtMb9ArfziAiblQynq7UIfLnN3VclzPeiWrqtzjyOp6CPUXnL0lVPTvbLe8sUteBsJZwlL6K4i+Y0lf3ryqnmQgC21yW4Dzu+kwk8FVT2MgWkCwiZd8gQ/+uJzrJFyMfUOBIklOBfuUENIJUhAB Generated-by-Nova