对于AWS,如何使用ruby aws-sdk将标记设置为资源?

时间:2012-05-09 07:12:16

标签: amazon-ec2 amazon-web-services ruby

我很擅长使用亚马逊的ruby-sdk(gem install aws-sdk),并且我只是试图为快照资源创建一个标签。这就是我正在做的事情:

ec2.tags.create(:resource_id => "snap-7d3aa701", :key => "My Test Tag", :value => "My test value")
ArgumentError: wrong number of arguments (1 for 2)

注意,ec2 = AWS :: EC2.new(在我设置凭据后)。

任何想法我做错了什么?我无法在网上找到使用ruby aws-sdk进行标记的单一示例。

2 个答案:

答案 0 :(得分:4)

标记EC2资源的最简单方法是使用#tags方法:

ec2.snapshots["snapshot-id"].tags["tag"] = "value"

如果要创建标记对象的句柄,仍可以使用TagCollection#create方法。它期望第一个参数是一个资源:

tag = ec2.tags.create(ec2.snapshots['snapshot-id'], 'tag') # no tag value

tag = ec2.tags.create(ec2.snapshots['snapshot-id'], 'tag', 'value')

答案 1 :(得分:2)

这很可能只是由一个拼写错误造成的,第一个参数名称应该是resource而不是resource_id - 请参阅API referenceAWS SDK for Ruby create(resource, key, options = {})实例方法,它提供了两个简短的例子:

  

创建一个新标记并将其分配给EC2资源。

     

<强>实施例

     

仅使用名称(键)进行标记
  ec2.tags.create(instance, 'webserver')

     

使用名称(键)和值进行标记
  ec2.tags.create(instance, 'stage', 'production')

     

<强>参数

     
      
  • resource(Object) - 要标记的项目。这应该是可标记的EC2资源,就像一个实例,   安全小组等。
  •   
  • key(String) - 标记键(或名称)。
  •   
  • 选项(哈希)(默认为:{})optins(哈希) - 一组可自定义的选项
  •   
     

<强>返回

     
      
  • Tag
  •