如何使用Boto3同时获取多个Glue作业的详细信息?
在本文中,我们将看到如何获取给定作业名称列表的资源元数据列表。
问题陈述 - 使用Python中的boto3库获取您帐户中可用的作业。例如,获取在您的帐户中可用的作业的详细信息。
更多Python相关文章,请阅读:Python 教程
解决此问题的方法/算法
第1步 - 导入boto3和botocore异常以处理异常。
第2步 - 此函数不需要任何参数。它将获取用户帐户中列出的所有作业,然后显示每个作业的元数据。
第3步 - 使用boto3库创建AWS会话。确保在默认配置文件中提供了 region_name 。如果没有提供,请在创建会话时显式传递 region_name 。
第4步 - 创建一个Glue的AWS客户端。
第5步 - 现在使用list_jobs函数获取在用户帐户中列出的所有作业。
第6步 - 调用 batch_get_jobs 并传递上一个函数中获取的作业名称。
第7步 - 它返回 list_of_jobs 和每个作业的元数据。
第8步 - 如果检查作业时出现错误,则处理通用异常。
实例
使用以下代码获取列出的每个作业的详细信息-
import boto3
from botocore.exceptions import ClientError
def get_resource_maetadata_of_glue_jobs():
session = boto3.session.Session()
glue_client = session.client('glue')
try:
list_of_jobs = glue_client.list_jobs()
response = glue_client.batch_get_jobs(JobNames=list_of_jobs['JobNames'])
return list_of_jobs, response
except ClientError as e:
raise Exception( "boto3 client error in get_resource_maetadata_of_glue_jobs: " + e.__str__())
except Exception as e:
raise Exception( "Unexpected error in get_resource_maetadata_of_glue_jobs: " + e.__str__())
a, b = get_resource_metadat_of_glue_jobs()
#作业列表
print(a)
#每个作业的资源元数据
print(b)
输出
#职位列表
{'JobNames': ['01_PythonShellTest1', '01_pythonSHELL_14012021'],
'NextToken':
'eyJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE2MTQxNzE2OTksIm5hbm9zIjo1MTYwMDAwMDB
9LCJsYXN0RXZhbHVzFiMzAzNzAxMzRmNDk3NWM3M2MyMjhjYTk5MDgzZTA3YjQ0ZWEyOTZlIn19fQ==',
'ResponseMetadata': {'RequestId': '5d3eb19a-41f5-b24e-2d59ed9664b5',
'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Tue, 23 Feb 2021 13:01:39
GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '1134',
'connection': 'keep-alive', 'x-amzn-requestid':
'5d3eb19a-41f5-b24e-2d59ed9664b5'}, 'RetryAttempts': 0}}
#每个工作的资源元数据
{'Jobs': [{'Name': '01_PythonShellTest1', 'Role':
'arn:aws:iam::1234:role/dev-edl-glue-role', 'CreatedOn':
datetime.datetime(2021, 1, 6, 19, 59, 19, 387000, tzinfo=tzlocal()),
'LastModifiedOn': datetime.datetime(2021, 2, 9, 21, 47, 31, 614000,
tzinfo=tzlocal()), 'ExecutionProperty': {'MaxConcurrentRuns': 1},
'Command': {'Name': 'pythonshell', 'ScriptLocation':
's3://test/01_pythonShellTest/test1/01_PythonShellTest1.py',
'PythonVersion': '3'}, 'DefaultArguments': {'--job-bookmark-option':
'job-bookmark-disable', '--job-language': 'python'}, 'MaxRetries': 0,
'AllocatedCapacity': 0, 'Timeout': 2880, 'MaxCapacity': 0.0625,
'GlueVersion': '1.0'},
{'Name': '01_pythonSHELL_14012021', 'Role': 'arn:aws:iam::1234:role/devedl-glue-role', 'CreatedOn': datetime.datetime(2021, 1, 14, 20, 22, 40,
965000, tzinfo=tzlocal()), 'LastModifiedOn': datetime.datetime(2021, 1,
14, 20, 22, 40, 965000, tzinfo=tzlocal()), 'ExecutionProperty':
{'MaxConcurrentRuns': 1}, 'Command': {'Name': 'pythonshell',
'ScriptLocation': 's3://test/01_pythonSHELL_14012021_123.py',
'PythonVersion': '3'}, 'DefaultArguments': {'--job-bookmark-option':
'job-bookmark-disable'}, 'MaxRetries': 0, 'AllocatedCapacity': 0,
'Timeout': 2880, 'MaxCapacity': 0.0625, 'GlueVersion': '1.0'}]}
极客教程