Изменения с использованием boto3 для подключения к сервисам aws

То, что все изменения должны быть сделаны при использовании функции, которая раньше использовала 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 ответ

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

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

client = boto3.client(serviceName)

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

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

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

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

  • boto3 клиент: делает нормальные вызовы API для AWS
  • boto3 ресурс: набор объектов более высокого уровня, который облегчает взаимодействие с ресурсами, а не использует стандартные вызовы API (например, vpc.subnets() против 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
Другие вопросы по тегам