首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boto库在迁移到另一个数据中心后仍然认为它在原始EC2数据中心中

Boto库在迁移到另一个数据中心后仍然认为它在原始EC2数据中心中
EN

Stack Overflow用户
提问于 2014-01-26 15:38:35
回答 3查看 895关注 0票数 3

我在VPC中将一个Debian EC2服务器从北弗吉尼亚迁移到了爱尔兰数据中心。

我一直在使用这个python脚本来实现EBS快照的自动备份,但是由于迁移了服务器,所以无法工作。

新卷未被确认为现有卷,但它可以对北弗吉尼亚的旧卷进行快照,即使服务器位于爱尔兰。

我知道这个错误:

代码语言:javascript
复制
root@ip-10-0-0-100:~# python /srv/bin/manage_snapshots.py vol-fac935ae 14 "Test Backup"
Traceback (most recent call last):
  File "/srv/bin/manage_snapshots.py", line 36, in <module>
    volumes = conn.get_all_volumes([vol_id])
  File "/usr/local/lib/python2.7/dist-packages/boto/ec2/connection.py", line 2099, in get_all_volumes
    [('item', Volume)], verb='POST')
  File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1131, in get_list
    raise self.ResponseError(response.status, response.reason, body)
boto.exception.EC2ResponseError: EC2ResponseError: 400 Bad Request
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>InvalidVolume.NotFound</Code><Message>The volume 'vol-fac935ae' does not exist.</Message></Error></Errors><RequestID>30ba36b6-2f07-4c5f-b307-36865cb7ef44</RequestID></Response>

假设问题在boto配置中,我如何才能告诉它服务器现在在爱尔兰?

我已经在~/.profile里有这个了

代码语言:javascript
复制
# set AWS region
export EC2_URL=https://ec2.eu-west-1.amazonaws.com

但我认为这只适用于命令行ec2-api-tools。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-27 19:21:35

Boto默认使用us-east-1区域,这并不是为什么它在迁移之前运行良好的原因。

对于任何其他区域,必须更新boto.config文件以显式设置区域。

代码语言:javascript
复制
[Boto]
ec2_version = 2012-12-01
ec2_region_name = eu-west-1
ec2_region_endpoint = ec2.eu-west-1.amazonaws.com

Boto.config的位置:

/etc/boto.cfg -用于该机器上的所有用户都将使用的站点范围设置。

~/.boto -用于特定于用户的设置

手册:博托康菲

票数 3
EN

Stack Overflow用户

发布于 2014-01-26 16:14:11

您可以找到EC2实例以编程方式位于哪个区域,如下所示:

代码语言:javascript
复制
import boto.utils
data = boto.utils.get_instance_identity()
region_name = data['document']['region']

一旦了解了该区域,就可以连接到脚本中的正确区域,如下所示:

代码语言:javascript
复制
import boto.ec2
conn = boto.ec2.connect_to_region(region_name)

这应该允许您的脚本能够在任何区域的任何实例上运行。

票数 5
EN

Stack Overflow用户

发布于 2014-05-16 18:31:03

这也可以用下面的Python代码来完成:

代码语言:javascript
复制
import boto.utils
m = boto.utils.get_instance_metadata()
print m['placement']['availability-zone']

在我的箱子里打印ap-southeast-2b

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21365408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档