AWS Glue Python Shell作业连接超时错误

时间:2020-06-16 23:05:17

标签: amazon-web-services etl aws-glue

尝试运行AWS Glue Python Shell作业,但出现连接超时错误

错误图片:https://i.stack.imgur.com/MHpHg.png

脚本:https://i.stack.imgur.com/KQxkj.png

2 个答案:

答案 0 :(得分:0)

您似乎没有在VPC中添加secretsmanager端点。由于流量不会离开AWS network,因此您的Glue作业的VPC内部将无法访问互联网。因此,如果要连接到Secretsmanager,则需要将其添加到VPC。

有关如何将其添加到VPC和this的信息,请参阅this,以确保您已正确配置安全组。

答案 1 :(得分:0)

AWS Glue Git Issue

嗨, 我们使AWS Glue Python Shell可以处理所有依赖项,如下所示。胶水还具有 awscli 依赖性以及 boto3

带有Internet的AWS Glue Python Shell

在执行胶水作业期间,将awscli和boto3 whl文件添加到 Python库路径。此选项很慢,因为它必须下载和安装依赖项。

  1. 下载以下whl文件
  1. 将文件上传到给定python库路径中的s3存储桶
  2. 在python库路径中添加s3 whl文件路径。给出整个whl文件s3的引用路径,以逗号
  3. 分隔

没有Internet连接的AWS Glue Python Shell

参考AWS Wrangler Glue dependency build

  1. 我们对 awscli boto3 whl文件执行了上述步骤
  2. 下面是针对最新版本编译的最新 requirements.txt
colorama==0.4.3
docutils==0.15.2
rsa==4.5.0
s3transfer==0.3.3
PyYAML==5.3.1
botocore==1.19.23
pyasn1==0.4.8
jmespath==0.10.0
urllib3==1.26.2
python_dateutil==2.8.1
six==1.15.0
  1. 将依赖项下载到libs文件夹
pip download -r requirements.txt -d libs
  1. 将原始的主要whl文件也移动到lib目录
  1. 打包为zip文件
cd libs zip ../boto3-depends.zip *
  1. boto3-depends.zip 上载到s3,并将其添加到胶水作业的路径参考文件路径 注意:它是引用文件路径,而不是 Python库路径

  2. 占位符代码,用于安装最新的awcli和boto3并加载到AWS Python Glue Shell中。

import os.path
import subprocess
import sys

# borrowed from https://stackoverflow.com/questions/48596627/how-to-import-referenced-files-in-etl-scripts
def get_referenced_filepath(file_name, matchFunc=os.path.isfile):
for dir_name in sys.path:
candidate = os.path.join(dir_name, file_name)
if matchFunc(candidate):
return candidate
raise Exception("Can't find file: ".format(file_name))

zip_file = get_referenced_filepath("awswrangler-depends.zip")

subprocess.run()

# Can't install --user, or without "-t ." because of permissions issues on the filesystem
subprocess.run(, shell=True)

#Additonal code as part of AWS Thread https://forums.aws.amazon.com/thread.jspa?messageID=954344
sys.path.insert(0, '/glue/lib/installation')
keys =
for k in keys:
if 'boto' in k:
del sys.modules[k]

import boto3
print('boto3 version')
print(boto3.__version__)
  1. 检查代码是否与最新的AWS CLI API一起使用

谢谢 萨拉斯