查询云服务器ECS的镜像-阿里云开发者社区

开发者社区> 洛小蒙> 正文

查询云服务器ECS的镜像

简介: 查询ECS的镜像,针对特定的场景如何查找镜像,包括 1. 查找 Windows的 系统镜像,2.查找 被实例使用着的 镜像 3. 查找 共享 的镜像 (其他人共享给我的)4.查找 带Tag( key=xxx value=yyy) 的镜像
+关注继续查看

  • 接口名称

查询镜像源列表:DescribeImages

  • 背景:

如何查找你所需的镜像 DescribeImages接口查询镜像列表

  • 针对场景做相应的查询

场景1. 查找 Windows的 系统镜像
场景2. 查找 被实例使用着的 镜像
场景3. 查找 共享 的镜像 (其他人共享给我的)
场景4. 查找 Tag key=xxx value=yyy 的镜像

除了您现在看到的这文章,您还可以前往:
您也可以使用 ECS 管理控制台、ECS 命令行工具或开发工具包在 ECS 区域内查询 ECS 系统镜像。

ECS 管理控制台-快照和镜像-镜像
ECS ALIYUN CLI
API文档:DescribeImages


下文以Python为示例。

安装ECS Python SDK

首先确保您已经具备Python的Runtime,本文中使用的Python版本为2.7+。

pip install aliyun-python-sdk-ecs
如果提示您没有权限,请切换sudo 继续执行。

sudo pip install aliyun-python-sdk-ecs
本文使用的sdk版本为4.6.3。

使用场景事例

# your access key Id
ak_id = "YOU_ACCESS_KEY_ID"
# your access key secret
ak_secret = "YOU_ACCESS_SECRET"

region_id = "cn-hangzhou"

clt = client.AcsClient(ak_id, ak_secret, region_id)

def _execute_request(request):
    response = _send_request(request)
    if response is None:
        print 'response is None'
        return
    if response.get('Code') is None:
        images = response.get("Images").get('Image')
        totalCount = response.get('TotalCount')
        imageIds = []
        for image  in images :
            imageId = image.get('ImageId')
            imageIds.append(imageId)
        print "ecs images num %s , list is %s"%(totalCount, imageIds)

# send open api request
def _send_request(request):
    request.set_accept_format('json')
    try:
        response_str = clt.do_action(request)
        logging.info(response_str)
        response_detail = json.loads(response_str)
        return response_detail
    except Exception as e:
        logging.error(e)

场景1. 查找 Windows的 系统镜像

如果你开发平台为.Net,建议选择windows的镜像来创建ECS云服务器,系统自带正版激活的,正版激活费用不再收取。注意:512内存不支持选择Windows系统,1G以上内存才能很好支持该系统。

Windows

阿里云提供了8种window系统,涵盖了Server 2008 R2 | Server 2012 R2及 Server 2016 | window Version 1709(不含UI)这几大类操作系统。

Linux

阿里云官方提供的Linux公共镜像:
CentOS | Ubuntu | Debian | SUSE Linux | OpenSUSE | Aliyun Linux | CoreOS | FreeBSD

# describe windows system images .
def describe_images_filter_windows():
    request = DescribeImagesRequest()
    #osType : linux | windows
    request.set_OSType('windows')
    request.set_ImageOwnerAlias('system')
    _execute_request(request)

场景2. 查找 被ECS实例使用着的 镜像

# describe used_by_instance images.
def describe_images_used_by_instance():
    request = DescribeImagesRequest()
    # usage : instance (被实例使用)| none (没被使用)
    request.set_Usage('instance')
    _execute_request(request)

场景3. 查找 共享 的镜像 (其他人共享给我的)

# describe to be shared images.
def describe_images_shared_by_others():
    request = DescribeImagesRequest()
    # 镜像类别:system | self (自己创建)| others (被共享的) | marketplace
    request.set_ImageOwnerAlias('others')
    _execute_request(request)

场景4. 查找 Tag key=xxx value=yyy 的镜像

# describe tag(key = value) images.
def describe_images_by_tag():
    request = DescribeImagesRequest()
    # 也可以只根据key过滤:  创建时设定的Tag的key
    request.set_Tag1Key('xxxx')
    # 也可以只根据value过滤:  创建时设定的Tag的value
    request.set_Tag1Value('yyyy')
    _execute_request(request)

完整代码

#  coding=utf-8

# if the python sdk is not install using 'sudo pip install aliyun-python-sdk-ecs'

import json
import logging

from aliyunsdkcore import client
from aliyunsdkecs.request.v20140526.DescribeImagesRequest import DescribeImagesRequest

logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S')

# your access key Id
ak_id = "YOU_ACCESS_KEY_ID"
# your access key secret
ak_secret = "YOU_ACCESS_SECRET"

region_id = "cn-hangzhou"


clt = client.AcsClient(ak_id, ak_secret, region_id)

# describe windows system images .
def describe_images_filter_windows():
    request = DescribeImagesRequest()
    #osType : linux | windows
    request.set_OSType('windows')
    request.set_ImageOwnerAlias('system')
    _execute_request(request)

# describe used_by_instance images.
def describe_images_used_by_instance():
    request = DescribeImagesRequest()
    # usage : instance (被实例使用)| none (没被使用)
    request.set_Usage('instance')
    _execute_request(request)

# describe to be shared images.
def describe_images_shared_by_others():
    request = DescribeImagesRequest()
    # 镜像类别:system | self (自己创建)| others (被共享的) | marketplace
    request.set_ImageOwnerAlias('others')
    _execute_request(request)

# describe tag(key = value) images.
def describe_images_by_tag():
    request = DescribeImagesRequest()
    # 也可以只根据key过滤:  创建时设定的Tag的key
    request.set_Tag1Key('xxxx')
    # 也可以只根据value过滤:  创建时设定的Tag的value
    request.set_Tag1Value('yyyy')
    _execute_request(request)

def _execute_request(request):
    response = _send_request(request)
    if response is None:
        print 'response is None'
        return
    if response.get('Code') is None:
        images = response.get("Images").get('Image')
        totalCount = response.get('TotalCount')
        imageIds = []
        for image  in images :
            imageId = image.get('ImageId')
            imageIds.append(imageId)
        print "ecs images num %s , list is %s"%(totalCount, imageIds)

# send open api request
def _send_request(request):
    request.set_accept_format('json')
    try:
        response_str = clt.do_action(request)
        logging.info(response_str)
        response_detail = json.loads(response_str)
        return response_detail
    except Exception as e:
        logging.error(e)


if __name__ == '__main__':
    print "hello ecs describe images"
    # describe_images_filter_windows()
    # describe_images_shared_by_others()
    # describe_images_used_by_instance()
    #describe_images_by_tag()

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
云服务器上使用的感受
这篇文章主要是介绍了使用ESC的一些感受,和我对使用这个和使用实体机的一些想法。结合我自身情况进行一些分析。也提出了一个自己遇见的问题,以及一些未来想通过ESC服务器来学习和实践的东西。
31 0
阿里云轻量应用服务器镜像列表大全
阿里云轻量应用服务器镜像列表汇总,为什么买前必看?因为如果没有用户想要的镜像,就真的没有了,轻量应用服务器相对于ECS云服务器来讲,镜像真的少了很多,云服务器吧分享: 随着时间推移,轻量支持的镜像可能会有变化,关于轻量的常见问题参考:轻量应用服务器常见问题 - 阿里云,建议大家移步官方文档,一般来讲,用户遇到的问题文档中都有解答。
3615 0
阿里云服务器最新优惠活动汇总(价格查询)
阿里云服务器优惠精选 近期阿里云在服务器价格优惠方面频频发力,连续推出了多种服务器优惠活动,尤其是8月份推出的2折限时抢活动。有需求购买的前提,大家可以领下优惠劵,免费领取,可以为后期减不少成本优惠劵领取地址 阿里云服务器爆款2折限时抢(2019年8月) 活动链接:https://www.aliyun.com/acts/limit-buy活动时间:2019年8月6日至2019年8月29日(爆款商品数量有限,抢完活动即停止)。
1702 0
正式开放 | 阿里云 10 亿级镜像服务正式支持 Helm Charts,云原生交付再加速!
作者 | 阿里巴巴高级开发工程师 谢于宁(予栖) 2018 年 6 月,Helm 正式加入了 CNCF 孵化项目; 2018 年 8 月,据 CNCF 的调研表明,有百分之六十八的开发者选择了 Helm 作为其应用包装方案; 2019 年 6 月,阿里云正式开放了开放云原生应用中心,为国内用户提...
2851 0
winform中用户输入查询与拼音首字母的结合,提高用户的操作体验 (转)
在Winform界面中,同样也可以做到智能提示,由于Winform中的响应速度比较快,我们可以根据输入的首字母或者部分中文快速更新列表内容即可,如下图所示。
627 0
日志服务查询分析支持IP、域名、URL安全识别
日志服务依托全球白帽子共享安全资产库,提供安全检测函数,用户只需要将日志中任意的IP、域名或者URL传给安全检测函数,即可检测是否安全。
1846 0
+关注
洛小蒙
coding is all about communication
49
文章
12
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载