如何使用Boto3同时获取多个Glue作业的详细信息?

如何使用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'}]}

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程