How to run an AWS Glue 1.0 Python Shell Job with the Current Version of boto3?(如何使用当前版本的boto3运行AWS Glue 1.0 Python Shell作业?)
本文介绍了如何使用当前版本的boto3运行AWS Glue 1.0 Python Shell作业?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要为AWS Glue Python3 shell作业使用较新的boto3包(Glue版本:1.0)。我将S3中的以下滚轮文件作为外部Python库包括在内:
boto3-1.13.21-py2.py3-none-any.whl
但是,即使我看到以下日志,boto3.__version__
也会打印出1.9.203
:
Successfully installed boto3-1.13.21 botocore-1.16.26 docutils-0.15.2 jmespath-0.10.0 python-dateutil-2.8.1 s3transfer-0.3.3 six-1.15.0 urllib3-1.25.10
由于某些原因,Glue Python Shell作业不允许我用轮子文件覆盖boto3包版本。有什么方法可以覆盖吗?
推荐答案
使用当前版本的boto3运行AWS Glue 1.0Python Shell作业的步骤。
- 从pip下载.whl文件的当前版本。
https://pypi.org/project/botocore/#files
https://pypi.org/project/boto3/#files
在我撰写此答案时,当前版本
- boto3-1.20.10-py3-one-any.wh.
- botocore-1.23.10-py3-one-any.whl
- 创建一个存储桶和文件夹,用于存储可能用于粘合Python作业的python WHL文件。
- s3://glue/python/lib/
- 将boto3和botocore WHL文件上载到步骤2中创建的S3存储桶中的新文件夹。
- s3://glue/python/lib/botocore-1.23.10-py3-none-any.whl,
- s3://glue/python/lib/boto3-1.20.10-py3-none-any.whl
创建一个Glue 1.0 Python shell作业,同时展开安全配置,在";Python库路径&q;中添加路径,路径之间用逗号分隔
s3://glue/python/lib/botocore-1.23.10-py3-none-any.whl,s3://glue/python/lib/boto3-1.20.10-py3-none-any.whl
创建一个新的python脚本,并让它在脚本顶部删除预先导入的boto3包。
import sys sys.path.insert(0, '/glue/lib/installation') keys = [k for k in sys.modules.keys() if 'boto' in k] for k in keys: if 'boto' in k: del sys.modules[k]
导入boto3
import boto3
这是我的最终模板通常的样子
import sys
sys.path.insert(0, '/glue/lib/installation')
keys = [k for k in sys.modules.keys() if 'boto' in k]
for k in keys:
if 'boto' in k:
del sys.modules[k]
import logging
import boto3
import botocore
def main():
handler = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(process)d: %(message)s')
handler.setFormatter(formatter)
logger = logging.getLogger("GlueLogger")
logger.setLevel(logging.INFO)
logger.addHandler(handler)
logger.info(f"Received sys.argv: {sys.argv}")
logger.info(f"Using boto3 api version:{boto3.__version__}")
if __name__ == "__main__":
main()
这篇关于如何使用当前版本的boto3运行AWS Glue 1.0 Python Shell作业?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何使用当前版本的boto3运行AWS Glue 1.0 Python Shell作业?
基础教程推荐
猜你喜欢
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01