我的AWS Linux盒子上设置了弹性IP切换功能。我知道用于切换IP地址的shell命令。但是我不知道如何在Ruby中做到这一点。
这是shell命令......
获取实例ID:
wget -O - ' http://MY.AWS.IP.HERE/latest/meta-data/instance-id' 2 - ;的/ dev / null的
分配弹性IP:
aws ec2 allocate-address
将弹性IP与此实例关联。使用从步骤1和2返回的实例和分配ID。
aws ec2 associate-address --instance-id INSTANCE_ID_HERE --allocation-id ALLOCATION_ID_HERE
如何使用Ruby的aws-sdk
gem?
更新
现在我的代码
require 'aws-sdk'
require 'json'
require 'pp'
region = 'REGION NAME'
aws_access_key_id = 'SECRET KEY ID'
aws_secret_access_key = 'SECRET ACCESS KEY'
credentials = Aws::Credentials.new(aws_access_key_id, aws_secret_access_key)
client = Aws::EC2::Client.new(
region: region,
credentials: credentials
)
pp client
p '==='
describeAddresses = `aws ec2 describe-addresses`
awsHash = JSON.parse(describeAddresses)
pp awsHash
p '==='
getInstanceID = `wget -O - 'http://MY.AWS.IP.HERE/latest/meta-data/instance-id' 2>/dev/null`
instanceID = getInstanceID.split("\n")[-1]
pp instanceID
p '==='
resp = client.allocate_address({
domain: "vpc", # accepts vpc, standard
})
pp resp
p '==='
resp2 = client.associate_address({
instance_id: instanceID,
allocation_id: resp['allocation_id'],
allow_reassociation: true#,
})
pp resp2
p '==='
更改IP,但现在我在执行代码时被XShell踢了。但那是一个不同的问题。
答案 0 :(得分:1)
1)你可以直接在ruby中发出命令并获取输出或你可以使用httpclient 或其他可以执行http请求的lib
for 2)和3)你需要使用AWS Ruby SDK。您在cmd行中执行的操作与api调用的内容之间几乎有1:1的映射