Изменения с использованием 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 для AWSboto3
ресурс: набор объектов более высокого уровня, который облегчает взаимодействие с ресурсами, а не использует стандартные вызовы 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