[英]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.