【问题标题】:Python boto3- How to work on cross regionPython boto3-如何跨区域工作
【发布时间】:2019-12-12 18:18:12
【问题描述】:

我开始使用 python 和 boto3 编写我的 lambda 函数,

我设法分别在每个地区工作,但我没有看到如何在几个地区一起工作。

这是我宣布我的客户的方式:

region= 'ap-southeast-2'
ec2 = boto3.client('ec2', region_name=region)

如果我不给它一个区域,它将在您创建 lambda 函数的区域上运行,这是我不想要的。

以前有人做过吗?

【问题讨论】:

    标签: python boto3


    【解决方案1】:

    如果您不给它一个区域,它将使用您的 Lambda 函数正在运行的区域。

    如果您想通过 Boto3 在多个区域进行 AWS API 调用,您必须为每个区域创建一个客户端对象,并为每个区域进行单独的 API 调用。

    【讨论】:

      【解决方案2】:

      这里我列出了跨多个区域可用的所有实例。

      你可以这样做,

      1.列出所有可用区域。

          client = boto3.client('ec2')
      
      
          def get_all_regions():
              all_regions = [ region['RegionName'] for region 
              inclient.describe_regions['Regions']]
              return all_regions
      
          regions_arr = []
          regions = get_all_regions()
      

      2。将结果附加到 python 列表

          for each_reg in regions:
              regions_arr.append(each_reg)
      

      3.循环遍历 python 列表中的每个区域,并将 region_name 属性设置为它。

          for x in range(0, len(regions_arr)):
               client_2 = boto3.client('ec2', region_name=regions_arr[x])
               response = client_2.describe_instance_status()
      
               for x in response['InstanceStatuses']:
                    print(x['InstanceId'])
      

      希望这会有所帮助。谢谢!

      【讨论】: