如何使用Boto3检查运行中的Glue作业的状态?
阅读更多:Python 教程
什么是Boto3?
Boto3 是一个 Amazon Web Services (AWS) 的软件开发工具包。Boto3 可以用 Python 编写。它是一个面向对象的 API,容易学习和使用。Boto3 可以帮助我们使用 Python 代码执行 AWS 服务相关的操作。
什么是AWS Glue?
AWS Glue 是一项全托管的 ETL(Extract-Transform-Load)数据处理服务,支持批量数据处理和持续流处理。它允许用户构建 ETL 作业,然后通过 Amazon S3,JDBC 数据库或作为 AWS Glue 数据目录的数据存储库将数据连接到多个数据源。AWS Glue 还可以自动识别和推断数据模式,以便根据需要自动清洗和验证数据。
如何检查正在运行的AWS Glue作业?
在 AWS Glue 上运行的作业通常是批处理作业,可以使用 Boto3 执行以下操作来检查作业的状况。
步骤1:安装 Boto3 和 AWS CLI(如果尚未安装)
要开始使用 Boto3,您必须首先在计算机上安装它。您可以使用以下命令在终端或命令提示符中安装:
pip install boto3
AWS CLI 已经默认安装了 AWS 提供的API对接,因此您可以使用以下命令来安装:
pip install awscli
步骤2:创建 AWS Glue 作业
要检查正在运行的 AWS Glue 作业,首先需要创建 Glue 作业。可以使用以下代码创建一个名为 example-job 的 Glue 作业。
import boto3
client = boto3.client('glue')
response = client.create_job(
Name='example-job',
Role='aws-glue-service-role',
Command={
'Name': 'glueetl',
'ScriptLocation': 's3://my-bucket/script.py'
},
DefaultArguments={
'--job-language': 'python'
}
)
该代码首先使用 boto3 客户端创建 AWS Glue 的服务客户端。然后,使用 create_job 方法创建 Glue 作业。该方法接受以下参数:
Name:新创建作业的名称Role:IAM 角色的名称或 Amazon 资源名称 (ARN),该角色将用于运行 Glue 作业Command:定义作业的命令及其位置的字典DefaultArguments:作为字符串值字典的默认作业参数,如果不提供任何参数,默认值为空
该代码会在 AWS Glue 中创建一个作业,然后通过 S3 存储存储的 Python 脚本来运行该作业。
步骤3:检查正在运行的 AWS Glue 作业
要检查正在运行的 AWS Glue 作业,需要使用 AWS Glue 的服务客户端对象。以下是使用 Python 代码检查 AWS Glue 作业的状态的方式:
import boto3
client = boto3.client('glue')
job_name = 'example-job'
response = client.get_job_runs(
JobName=job_name,
Sort={'Column': 'START_TIME', 'SortOrder': 'DESCENDING'},
MaxResults=1
)
job_run_id = response['JobRuns'][0]['Id']
response = client.get_job_run(
JobName=job_name,
RunId=job_run_id
)
print('Job run status:', response['JobRun']['JobRunState'])
该代码通过 boto3 客户端获取一个 Glue 作业的服务客户端。然后,使用 get_job_runs 和 get_job_run 方法来检查 AWS Glue 作业的状态。
首先,使用 get_job_runs 方法获取最近启动的作业运行的方法菜单并获取新的 Job RunsId。然后,使用get_job_run` 方法获取特定作业运行的状态。在此代码示例中,我们只获取了最近一次运行的作业运行状态。
最后,代码将打印作业运行状态。可能的状态包括以下值:
STARTED:作业已经开始执行RUNNING:作业正在运行STOPPING:作业正在停止STOPPED:作业已停止SUCCEEDED:作业已成功完成FAILED:作业已失败TIMEOUT:作业已超时
结论
使用 AWS Glue 服务客户端,您可以轻松地检查正在运行的 AWS Glue 作业的状态。此外,在使用 Boto3 时,您可以使用 Python 代码创建 Glue 作业并自动运行它。此代码示例提供了一种简单灵活的方法来获取 Glue 作业的状态和进展情况,方便您管理作业和跟踪其执行。
极客笔记