boto3 может получить доступ к EMR, создав экземпляр клиента с помощью:
boto3.client('emr', region_name=<...>)
, но полученный интерфейс включает вызовы методов с громоздким набором параметров, которые, кажется, взяты из CLI почти безадаптация, приводящая к коду, подобному отрывку ниже.Я испытываю желание написать свою собственную объектно-ориентированную оболочку, чтобы я мог иметь класс с именем что-то вроде EmrClient
с переменными экземпляра, такими как instance_groups
, applications
, name
и так далее.Кажется вероятным, что многие люди уже решили ту же проблему, но стандартные поиски не находят ничего канонического.
Существует ли стандартная оболочка OO для функции boto3, включающая EMR?
Вот фрагмент моего кода статус-кво:
#instance_groups and APPLICATIONS_SETS already set up custom for me
response = emr_client.run_job_flow(
Name='boto3 EMR creation test 2',
# LogUri='string',
# AdditionalInfo='string',
# AmiVersion='string',
ReleaseLabel='emr-4.6.0',
# Has to be either instance_groups or Instances.
Instances={
'InstanceGroups': instance_groups
},
Steps=[
],
BootstrapActions=[],
# SupportedProducts=[
# This parameter seemed very user-unfriendly, with
# some products accepted and others not.
# ],
Applications=[
{'Name': x} for x in APPLICATIONS_SETS[APPLICATIONS_SET_CHOSEN]
],
VisibleToAllUsers=True,
JobFlowRole='EMR_EC2_DefaultRole',
ServiceRole='EMR_DefaultRole',
# ScaleDownBehavior='TERMINATE_AT_INSTANCE_HOUR',
)