首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS最新版本

AWS最新版本
EN

Stack Overflow用户
提问于 2015-11-03 15:11:33
回答 1查看 497关注 0票数 0

也许我试图不正确地使用AWS EC2,请帮助我。我想通过一个用户数据脚本制作一个基本的ami,这是没有问题的,它的工作。然而,下一步是创建一个图像,但是由于对象是无标记的--它是一种筛选器,我可以为region、vpc、security和state添加条件,这样就可以找到对象,我就可以构建图像了。

但是,我不想覆盖现有的图像,所以理想情况下,我需要用名称和版本标记它,没有问题。但是我需要孩子的图像来找到那个图像,我想通过名字和版本找到,但是动态的,也就是最新的。在码头,它是相当直截了当的,只要容器是标记,使用最新版本可以省略,它将自动拉最新。这里有类似的技术吗?你们用的是什么?我是不是用错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-13 15:53:42

以下是我所做的:

注意:虽然这是为了标记一个实例,但是可以很容易地修改它以处理图像。

注意:我不是一个powershell强大的用户,所以如果你看到一个明显的低效率,请告诉我。

我使用Jenkins构建机器,因此它具有用于标记的环境变量,但是它调用了具有此签名的powershell脚本,因此您可以通过另一个脚本手动调用或调用它:

代码语言:javascript
复制
param(
    ...
    [Parameter(Mandatory=$true)][string]$Tag_Name,
    [Parameter(Mandatory=$true)][string]$Tag_Version
)

在这个脚本中,我设置实例标记如下:

代码语言:javascript
复制
#Get metadata from ec2 service
$identityDocument = (Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/document/).Content | ConvertFrom-Json

$tags = @( 
    @{Key = "Name"; Value = $Tag_Name},
    @{Key = "Version"; Value = $Tag_Version}
)

New-EC2Tag -Resource $identityDocument.instanceId -Tag $tags

在另一个脚本中,我可以按名称查询、查找所有实例、将结果解析为InstanceId的散列表、版本、按版本排序并得到顶部的哈希表。

代码语言:javascript
复制
$instanceName = "hello-world"
$instances = GetHashTableOfFilteredInstances $instanceName
$instanceId = GetNewestInstance($instances)

Write-Host 'Information for ' $instanceName
Write-Host '================='
Write-Host 'The newest instance is ' $instanceId
Write-Host '================='

function GetHashTableOfFilteredInstances($tagName){
    $instances = Get-EC2Instance -Filter @( `
      @{name='tag:Name'; values=$tagName};`
    ) | Select-Object -ExpandProperty instances

    $actInstances= @{}

    foreach($instance in $instances){
       foreach($tag in $instance.Tag){
          if ($tag.Key -ne "Version") {
             Continue;
          }

          $actInstances.Add($tag.Value, $instance.InstanceId)
       }
    }

    return $actInstances
 }

 function GetNewestInstance($instances){
     return ($instances.GetEnumerator() | Sort-Object Key -descending)[0].Value
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33502546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档