Boto3/Jenkins 客户端在 运行 代码时抛出错误

Boto3/Jenkins client throwing an error while running the code

我正在 运行 在我们的一台 AWS 机器上设置一个日常胶水脚本,我使用 jenkins 安排了它。

我在过去 15 天收到以下信息。 (这项日常工作已经 运行 将近 6 个月了,突然间发生了 15 天)

jenkins 控制台输出如下所示

Started by timer
Building in workspace /var/lib/jenkins/workspace/build_name_xyz
[build_name_xyz] $ /bin/sh -xe /tmp/jenkins8188702635955396537.sh
+ /usr/bin/python3 /var/lib/jenkins/path_to_script/glue_crawler.py
Traceback (most recent call last):
  File "/var/lib/jenkins/path_to_script/glue_crawler.py", line 10, in <module>
    response = glue_client.update_crawler(Name = crawler_name,Targets = {'S3Targets': [{'Path':update_path}]})
  File "/usr/local/lib/python3.5/dist-packages/botocore/client.py", line 357, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python3.5/dist-packages/botocore/client.py", line 661, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.errorfactory.InvalidInputException: An error occurred (InvalidInputException) when calling the UpdateCrawler operation: Cannot update Crawler while running. Please stop crawl or wait until it completes to update.
Build step 'Execute shell' marked build as failure
Finished: FAILURE

所以,我继续前进并看到了这个文件中的第 10 行

/var/lib/jenkins/path_to_script/glue_crawler.py

看起来像这样。

import boto3
import datetime

glue_client = boto3.client('glue', region_name='region_name')


crawler_name = 'xyz_abc'
today = (datetime.datetime.now()).strftime("%Y_%m_%d")
update_path = 's3://path-to-respective-aws-s3-bucket/%s' % (today)
response = glue_client.update_crawler(Name = crawler_name,Targets = {'S3Targets': [{'Path':update_path}]})
response_crawler = glue_client.start_crawler(
    Name=crawler_name
)
print(response_crawler)

以上在第 10 行抛出一个错误。我不明白第 10 行到底出了什么问题,因此 jenkins 抛出了一个红色球的错误,在这里请求一些帮助。我试着用谷歌搜索这个,但我找不到任何东西。

只是,仅供参考......如果我 运行 使用 jenkins UI 相同的构建(通过单击 'Build Now')一段时间后,作业 运行绝对没问题。

不确定这里到底出了什么问题,非常感谢任何帮助。

提前致谢!!

错误不言自明:

Cannot update Crawler while running. Please stop crawl or wait until it completes to update.

因此爬虫几乎同时启动,并且在 Glue 中不允许在 运行 时更新爬虫属性。请检查是否有任何其他任务也以名称 xyz_abc 启动爬虫。除此之外,在 AWS 控制台 make sure the crawler is configured to run on demand 而不是按计划进行。