我很擅长使用亚马逊的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进行标记的单一示例。
答案 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 reference的AWS 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)