阿里云云服务器ECS实例使用实例自定义数据
网站编辑2020-11-02 13:53:13824
典名科技本文主要介绍阿里云云服务器ECS实例使用实例自定义数据,包括生成实例、配置实例、查看实例、修改实例、自定义、配置管理账号,以及使用实例标识。
生成实例自定义数据
实例自定义数据是一种自定义实例启动行为及传入数据的功能。
背景信息
- 作为实例自定义脚本,在启动实例时执行。
- 作为普通数据,将一定的信息传入实例中,您可以在实例中引用这些数据。
生成Linux实例自定义数据
在Linux实例中,您可以通过多种脚本配置实例自定义数据,包括User-Data脚本、Cloud Config脚本、Include文件、Gzip压缩脚本、 Upstart Job脚本等。Linux实例自定义数据功能采用开源的cloud-init架构,以实例元数据为数据来源,自动化配置Linux实例属性。
如果您制作的是Include文件或Gzip压缩脚本,需要上传脚本文件到可用的存储服务中并获取链接,并设置链接有效期为您的期望值。推荐您使用阿里云对象存储OSS制作链接。
生成Linux实例自定义数据的操作步骤如下:
生成Windows实例自定义数据
Windows实例自定义数据由ECS自主研发,为Windows实例提供运行初始化脚本的能力。Windows实例自定义数据支持Bat批处理程序和PowerShell脚本。
生成Windows实例自定义数据的操作步骤如下:
后续步骤
如何通过控制台配置实例自定义数据。
背景信息
- 仅网络类型为专有网络VPC的实例支持配置实例自定义数据。
- 实例如果采用了已停售的实例规格,必须是I/O优化实例。其他实例规格无I/O优化限制。
- 在Base64编码前自定义数据内容不能超过16 KB。说明 用于执行的实例自定义数据必须为Base64编码形式,如果您不使用ECS控制台提供的Base64编码服务,请自行将实例自定义数据转换为可用形式。
- 实例必须使用公共镜像或继承于公共镜像的自定义镜像,且只支持下列操作系统:
系统平台 操作系统 Windows Windows Server 2008 R2及以后的操作系统 Linux - CentOS
- Ubuntu
- SUSE Linux Enterprise
- OpenSUSE
- Debian
- Alibaba Cloud Linux
操作步骤
如何查看已有的实例自定义数据。
前提条件
背景信息
您可以通过指定服务器(100.100.100.200)查看实例自定义数据。
操作步骤
如何通过控制台修改已有的实例自定义数据。
前提条件
- 您已配置实例自定义数据。
- 修改实例自定义数据之前,您必须停止实例。
背景信息
- 如果您通过Shell脚本配置自定义数据,例如User-Data脚本,不运行修改后的自定义数据。
- 如果自定义数据配置的是类似Byobu、Set Hostname和Set Passwords之类的模块,不运行修改后的自定义数据。
- 如果自定义数据配置的是类似bootcmd、update_etc_hosts和yum_add_repo之类的模块,运行修改后的自定义数据。
操作步骤
在创建Linux实例时如何使用实例自定义数据配置 yum 源、NTP 服务和 DNS 服务。您也可以使用这个脚本自定义 Windows 实例的 NTP 服务和 DNS 服务。
背景信息
- 如果您自定义了 yum 源,阿里云官方将不再提供 yum 源相关支持。
- 如果您自定义了 NTP 服务,阿里云官方不再提供相关时间服务。
操作步骤
执行结果

由上图可知,您已经成功自定义了 DNS 服务、NTP 服务和 yum 源。
在创建Linux实例时如何使用实例自定义数据配置管理员账号。您也可以使用脚本自定义 Windows 实例的管理员账号。
背景信息
- 不使用 ECS 实例默认自带的 root 用户作为管理员。
- 创建一个新的管理员账号,并自定义用户名。
- 新创建的管理员账号在管理该实例的时候只使用 SSH 密钥对进行远程登录,不使用用户密码。
- 该用户如果需要进行与管理员权限相关的操作,可在免密码的情况下使用
sudo提权。
操作步骤
执行结果
sudo提权,并执行各种需要管理员权限的操作,如图中示例所示。
实例标识的概念和使用方法,并分别给出传入和不传入自定义参数时的示例。
背景信息
作为实例元数据的一部分,实例标识可以帮助您快速辨识并区分ECS实例,为应用程序权限控制和软件激活等提供重要的信任基础。实例标识的所有信息均实时生成,随取即用,并跟随实例信息而动态变化。
实例标识由动态生成的实例标识文档(document)和实例标识签名(signature)组成。
实例标识文档用于描述实例的各种信息,包含的主要属性如下表所示:
| 属性 | 描述 | 能否变更 |
|---|---|---|
| account-id | 实例所属用户账号ID | 否 |
| create-time | 实例创建时间 | 否 |
| instance-id | 实例ID | 否 |
| mac | 实例主网卡MAC地址 | 否 |
| region-id | 实例所属的地域ID | 否 |
| serial-number | 实例的序列号 | 否 |
| zone-id | 实例所属可用区ID | 否 |
| instance-type | 实例规格 | 实例变更实例规格后会发生变化。 例如:升降配 |
| image-id | 实例使用的镜像ID | 实例更换系统盘后会发生变化。 例如:更换系统盘(公共镜像) |
| private-ip | 实例的私网IP地址 | VPC类型实例修改私网IP地址后会发生变化。 例如:修改私网IP地址 |
实例标识签名采用PKCS#7格式加密,纯数字化,安全可靠。
实例标识签名还支持传入自定义audience参数,audience参数可以是随机字符串、时间戳、规律性变化的信息或者根据算法所生成的数据。传入audience参数后,即使他人获取了标识文档和标识签名的部分信息,也很难猜测到 audience 参数取值,可以有效防止签名被非法冒用。
一旦传入audience参数,您需要同时设置标识文档及标识签名。例如,当您获取标识签名时传入了audience参数,则需要在OpenSSL校验之前,手动把audience参数的信息加入实时生成的标识文档末尾处,格式为"audience":"audience参数取值",参数之间使用半角逗号(,)连接。
在以下场景中,您可以借助实例标识(instance-identity)实现鉴权、授权或者判断运行环境等目的:
- 传统的线下手动激活的软件授权是一码单用,但由于云上软件的使用时间及场景多变,您可以在上架云市场应用软件时使用实例标识灵活地完成用户授权。
- 当您在ECS实例中写入敏感数据时,您可以使用实例标识确保当前所写入的位置是您的ECS实例而不是其他环境。
- 其他需要确认目标服务器来源的场景。
使用实例标识
使用实例标识需要OpenSSL支持,如果您没有配置OpenSSL服务,请前往OpenSSL官网下载并安装OpenSSL服务。此处以CentOS 7.4为例,示范如何使用实例标识。
示例一:不传入audience参数
以在云市场上架一份镜像为例,示范如何从应用软件卖家角度使用实例标识。
示例二:传入audience参数
同样以在云市场上架一份镜像为例,示范如何从应用软件卖家角度使用实例标识。结合您自定义的audience参数,并在放开权限控制之前,通过应用端Server实现策略控制,防止授权码(License)被非法使用。您的audience参数取值可以是随机字符串、时间戳、规律性变化的信息或者根据您的算法所生成的数据。













