如何在 Ruby aws-sdk 中复制这些 shell 命令以切换弹性 IP?
How do I replicate these shell commands in Ruby aws-sdk for switching elastic IPs?
我在我的 AWS Linux 盒子上设置了弹性 IP 切换。我知道 shell 命令来切换 IP 地址。但我不知道如何在 Ruby.
中执行此操作
这是 shell 命令...
获取实例 ID:
wget -O - 'http://MY.AWS.IP.HERE/latest/meta-data/instance-id' 2>/dev/null
分配弹性IP:
aws ec2 分配地址
将弹性 IP 与此实例相关联。使用从步骤 1 和 2 返回的实例和分配 ID。
aws ec2 关联地址 --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 踢出。但那是针对不同的问题。
1) 你可以在 ruby 中直接发出命令并获取输出 or 你可以使用 httpclient or 其他可以做 http 请求的库
2) 使用allocate_address-instance
3) 使用associate_address
对于 2) 和 3) 您需要使用 AWS Ruby SDK。您在 cmd 行中所做的事情与 api 调用之间几乎存在 1:1 映射
我在我的 AWS Linux 盒子上设置了弹性 IP 切换。我知道 shell 命令来切换 IP 地址。但我不知道如何在 Ruby.
中执行此操作这是 shell 命令...
获取实例 ID:
wget -O - 'http://MY.AWS.IP.HERE/latest/meta-data/instance-id' 2>/dev/null
分配弹性IP:
aws ec2 分配地址
将弹性 IP 与此实例相关联。使用从步骤 1 和 2 返回的实例和分配 ID。
aws ec2 关联地址 --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 踢出。但那是针对不同的问题。
1) 你可以在 ruby 中直接发出命令并获取输出 or 你可以使用 httpclient or 其他可以做 http 请求的库
2) 使用allocate_address-instance
3) 使用associate_address
对于 2) 和 3) 您需要使用 AWS Ruby SDK。您在 cmd 行中所做的事情与 api 调用之间几乎存在 1:1 映射