изменения с использованием boto3 для подключения к сервисам aws - PullRequest
0 голосов
/ 28 августа 2018

Что все изменения должны быть сделаны при использовании функции, которая раньше использовала boto2, и как это должно быть изменено на boto3 ниже - один такой пример функции, который находится на boto2, и его нужно изменить на boto3

def aws(serviceName, module=boto):
    conn = connections.get(serviceName)
    if conn is None:
        service = getattr(module, serviceName)
        conn = service.connect_to_region(region)
        connections[serviceName] = conn
    return conn

1 Ответ

0 голосов
/ 29 августа 2018

Этот код, кажется, не делает много. Это просто подключение к сервису AWS.

Эквивалент boto3, вероятно, равен:

client = boto3.client(serviceName)

Регион может быть определен в стандартном .aws/config файле или как:

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

Я недавно преобразовал некоторый код из boto в boto3, и каждая строка в значительной степени нуждалась в изменении. Результат, однако, оказался намного чище.

Стоит также попытаться понять разницу между:

  • boto3 клиент: делает обычные вызовы API для AWS
  • boto3 resource: набор объектов более высокого уровня, который облегчает взаимодействие с ресурсами, а не использует стандартные вызовы API (например, vpc.subnets() vs describe-subnets(VPC=xxx))

Кажется, что оригинальный кодовый блок хранит свою информацию в массиве connections (определенном в другом месте) для повторного использования. Следовательно, эквивалентный кодовый блок будет:

def aws(serviceName):
    conn = connections.get(serviceName)
    if conn is None:
        conn = boto3.client(serviceName, region)
        connections[serviceName] = conn
    return conn
...