如何通过CloudFormation设置EC2实例根卷的标签

2024-03-25

使用 CloudFormation 创建 EC2 实例,但根卷的名称(标签)为空。如何使用CloudFormation进行设置?

# ec2-instance.yml (CloudFormation template)
MyInstance:
  Type: "AWS::EC2::Instance"
  Properties:
    ImageId: "ami-da9e2cbc"
    InstanceType: "t2.nano"
    KeyName: !Ref "KeyPair"
    Tags: # This is for EC2 instance (not root volume)
      - Key: "Name"
        Value: "my-instance"

我找到“Volumes”和“BlockDeviceMappings”属性,但找不到。


CloudFormation 目前似乎不支持此功能。但是使用实例用户数据脚本 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user-data-shell-scripts,您可以执行以下操作来标记根卷:

apt-get -y install unzip
unzip awscli-bundle.zip
./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws    
rm -rf  awscli-bundle awscli-bundle.zip
EC2_INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
EC2_REGION=${EC2_AVAIL_ZONE:0:${#EC2_AVAIL_ZONE} - 1}
ROOT_DISK_ID=$(aws ec2 describe-volumes --filters Name=attachment.instance-id,Values={EC2_INSTANCE_ID} Name=attachment.device,Values=/dev/sda1 --query 'Volumes[*].[VolumeId]' --region=${EC2_REGION} --out \"text\" | cut -f 1)
aws ec2 create-tags --resources $ROOT_DISK_ID --tags Key=Name,Value=\"Root Volume my-instance\" --region ${EC2_REGION}

此脚本将使用以下标记 /dev/sda1 EBS 卷Name=Root Volume my-instance

请注意,对于我的 Ubuntu AMI,我必须首先安装 AWS 工具。 Amazon Linux AMI 已安装这些工具。

对于 CloudFormation,您可以使用:

# ec2-instance.yml (CloudFormation template)
MyInstance:
  Type: "AWS::EC2::Instance"
  Properties:
    ImageId: "ami-da9e2cbc"
    InstanceType: "t2.nano"
    KeyName: !Ref "KeyPair"
    UserData:
      "Fn::Base64": !Sub |
       #!/bin/bash -x
       apt-get -y install unzip
       unzip awscli-bundle.zip
       ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws    
       rm -rf  awscli-bundle awscli-bundle.zip
       EC2_INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
       EC2_REGION=${EC2_AVAIL_ZONE:0:${#EC2_AVAIL_ZONE} - 1}
       ROOT_DISK_ID=$(aws ec2 describe-volumes --filters Name=attachment.instance-id,Values={EC2_INSTANCE_ID} Name=attachment.device,Values=/dev/sda1 --query 'Volumes[*].[VolumeId]' --region=${EC2_REGION} --out \"text\" | cut -f 1)
       aws ec2 create-tags --resources $ROOT_DISK_ID --tags Key=Name,Value=\"Root Volume my-instance\" --region ${EC2_REGION}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过CloudFormation设置EC2实例根卷的标签 的相关文章

随机推荐

  • AWS CDK 将 API 网关 URL 传递到同一堆栈中的静态站点

    我正在尝试在单个堆栈中部署 S3 静态网站和 API 网关 lambda S3 静态站点中的 JavaScript 调用 lambda 来填充 HTML 列表 但它需要知道 lambda 集成的 API 网关 URL 目前 我生成一个 Re
  • 如何强制视图刷新而不从可观察对象自动触发它?

    Note 这主要是为了调试和理解 KnockoutJS 有没有办法显式请求 Knockout 从 已绑定 视图模型刷新视图 我正在寻找类似的东西 ko refreshView 我知道这不是 Knockout 的预期用途 但我仍然想知道是否有
  • android studio 使用 build.gradle 进行地址清理

    我正在尝试使用此处描述的地址清理程序 使用 clang 构建我的应用程序 https github com google sanitizers wiki AddressSanitizer https github com google sa
  • 获取HashMap值的count个数

    使用这里的代码link https stackoverflow com questions 37129625 read and find string from text file将文本文件内容加载到 GUI Map
  • 谷歌分析用户 ID 跟踪

    我通过通用分析实现了 userID 跟踪 ga set uid 我认为我应该能够在报告中看到特定用户 但似乎甚至不可能在任何类型的报告中显示不同的用户 我在分析 API 中也没有找到这个选项 我希望能够跟踪该特定用户创建的事件 是否可以在不
  • 如何重命名 git stash?

    我有一个名称不正确的藏品 我想修正这个名称 使其准确 如何重命名藏匿处 让我们假设您的存储列表如下所示 git stash list stash 0 WIP on master Add some very important feature
  • 如何使用 Astro 获取查询字符串参数

    我正在使用一种名为 Astro 的新技术 https astro build https astro build 构建一个完全静态的服务器端渲染页面 交付零 JS 我有一个带有简单文本输入表单的页面 当用户填写该表单并单击提交按钮时 它会向
  • gpus_ReturnGuiltyForHardwareRestart

    我找到了有关该错误的更多详细信息 它似乎与信息有关 gpus ReturnGuiltyForHardwareRestart google了一下 似乎关于这个bug的信息相当有限 您以前遇到过这种情况并且知道如何解决吗 我认为我有必要更新我所
  • 下载并解压内存中的 gzip 文件?

    我想使用 urllib 下载文件并在保存之前将文件解压缩到内存中 这就是我现在所拥有的 response urllib2 urlopen baseURL filename compressedFile StringIO StringIO c
  • 将会话从模板视图传递到 python 请求 api 调用

    我想使用请求库从 Django TemplateView 进行多个内部 REST API 调用 现在我也想将会话从模板视图传递到 api 调用 考虑到性能 推荐的方法是什么 现在我正在提取cookie从目前的request模板视图中的对象
  • 将 C 字节数组转换为 long long

    我的应用程序中有一个 8 字节数组 其中包含以下数据 00000133339e36a2 该数据代表一个长整型 在写入数据的平台上 在 Mac 上这将是一个长整型 其值为 1319420966562 在实际应用中 这是一组半随机的数据 因此数
  • D3 弧形端部 V 形

    我画了一个arc https github com d3 d3 shape arcs使用 D3 js 默认情况下具有方形末端 var arc d3 arc innerRadius 0 outerRadius 100 startAngle 0
  • 文件包含路径分隔符。

    当我尝试检查特定文件是否存在时 我得到java lang illegalArgumentException File contains a path separator 使用 getFileStreamPath 执行此操作的正确方法是什么
  • Laravel 按字段长度排序

    我想构建一个按特定字段长度对数据进行排序的查询 我需要将此查询重写为 laravel 的 Eloquent ORM SELECT FROM table ORDER BY CHAR LENGTH field 看起来orderByRaw这就是您
  • 有人有使用 OpenCV 和 python 进行描述符提取的示例吗?

    我正在尝试使用 OpenCV 从图像中提取 SURF 描述符 我正在使用 OpenCV 2 4 和 Python 2 7 但很难找到任何提供有关如何使用这些函数的信息的文档 我已经能够使用以下代码来提取特征 但我找不到任何明智的方法来提取描
  • Struts 2下载-如何动态配置文件名?

    我正在开发一个应用程序 人们可以将所需的文件从数据库中提到的位置下载到本地 我正在使用 struts 2 从服务器下载文件 我可以毫无例外地下载该文件 并且运行完美 但是下载的文件具有我在 struts xml 中指定的文件名 我希望它是正
  • `ifstream::readsome` 何时设置 `eofbit`?

    这段代码永远循环 include
  • 如何将 API 参数传递给 GCP 云构建触发器

    我有一大组 GCP Cloud Build 触发器 通过云调度程序调用 所有触发器都运行良好 现在 我想通过外部 API 调用来调用这些触发器 并向它们传递参数值和数量不同的动态参数 我能够通过运行 API 请求来启动触发器 但我发送的 A
  • Spring 3.0 使用 Jackson 消息转换器进行 JSON 响应

    我将我的消息转换器配置为杰克逊的消息转换器 class Foo int x int y 并在控制器中 ResponseBody public Foo method return new Foo 3 4 由此 我期望从服务器返回一个 JSON
  • 如何通过CloudFormation设置EC2实例根卷的标签

    使用 CloudFormation 创建 EC2 实例 但根卷的名称 标签 为空 如何使用CloudFormation进行设置 ec2 instance yml CloudFormation template MyInstance Type