如何使用当前版本的boto3运行AWS Glue 1.0 Python Shell作业?

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作业的步骤。

  1. 从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
  1. 创建一个存储桶和文件夹,用于存储可能用于粘合Python作业的python WHL文件。
  • s3://glue/python/lib/
  1. 将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
  1. 创建一个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
    
  2. 创建一个新的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]
    
  3. 导入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作业?

基础教程推荐