簡體   English   中英

在 Jenkins 中,如何運行調用 AWS CLI 的 Python 腳本

[英]In Jenkins, How to run a Python script that calls AWS CLI

我正在嘗試配置 Jenkins 構建以運行使用 AWS CLI 的 Python 腳本。

從命令行運行時,腳本運行沒有問題cd /home/pi python3 AmzTools/Run_Notifications.py

但是,當我嘗試在 Jenkins 構建中運行相同的命令時,我得到以下信息:

22:06:19 Started by user Paul Anderson
22:06:19 Running as SYSTEM
22:06:19 Building in workspace /home/pi
22:06:19 [pi] $ /bin/sh -xe /tmp/jenkins10138978078974220181.sh
22:06:19 + BUILD_USER=pi
22:06:19 + python3 AmzTools/Run_Notifications.py
22:06:22 UNEXPECTED EXCEPTION - add handing for this
22:06:22 Traceback (most recent call last):
22:06:22   File "/home/pi/AmzTools/AWS/Notifications.py", line 72, in get_offer_notifications
22:06:22     sqs = boto3.resource('sqs')
22:06:22   File "/usr/local/lib/python3.7/dist-packages/boto3/__init__.py", line 92, in resource
22:06:22     return _get_default_session().resource(*args, **kwargs)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/boto3/session.py", line 389, in resource
22:06:22     aws_session_token=aws_session_token, config=config)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/boto3/session.py", line 263, in client
22:06:22     aws_session_token=aws_session_token, config=config)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/botocore/session.py", line 861, in create_client
22:06:22     client_config=config, api_version=api_version)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/botocore/client.py", line 76, in create_client
22:06:22     verify, credentials, scoped_config, client_config, endpoint_bridge)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/botocore/client.py", line 285, in _get_client_args
22:06:22     verify, credentials, scoped_config, client_config, endpoint_bridge)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/botocore/args.py", line 45, in get_client_args
22:06:22     endpoint_url, is_secure, scoped_config)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/botocore/args.py", line 111, in compute_client_args
22:06:22     service_name, region_name, endpoint_url, is_secure)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/botocore/client.py", line 358, in resolve
22:06:22     service_name, region_name)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/botocore/regions.py", line 122, in construct_endpoint
22:06:22     partition, service_name, region_name)
22:06:22   File "/usr/local/lib/python3.7/dist-packages/botocore/regions.py", line 135, in _endpoint_for_partition
22:06:22     raise NoRegionError()
**22:06:22 botocore.exceptions.NoRegionError: You must specify a region.**
22:06:38 Terminated
22:06:38 Build was aborted
22:06:38 Aborted by Paul Anderson
22:06:38 Finished: ABORTED

我的第一個想法是 AWS 配置不正確,所以我嘗試為 SUDO 和 jenkins 用戶配置它,但我仍然遇到同樣的錯誤。

如何配置 Jenkins 構建,以便它以我的默認用戶(在本例中為pi )運行,或者以其他方式使其工作?

我已經弄清楚我哪里出錯了,所以發布一個答案,以防其他人有同樣的問題。

事實證明,當我配置 AWS 時,我沒有登錄到 Jenkins 用戶,所以當構建從 Jenkins 用戶調用 AWS CLI 時,它看不到憑證。 我只需以 jenkins 身份登錄並設置我的 AWS 配置。

我試過su - jenkins ,但它要求輸入密碼,默認情況下未設置。

我設置了密碼 - sudo passwd jenkins

以 jenkins 用戶身份登錄 - su - jenkins

然后使用我的憑證配置 AWS CLI aws configure

感謝@marcin 提醒我繼續尋找該地區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM