我也收到了这个非常有帮助的错误信息。
对我有效的方法是明确地设置属性,如工作类型、工作数量、Glue版本和Python版本。
在Terraform代码中:
resource "aws_glue_job" "my_job" {
name = "my_job"
role_arn = aws_iam_role.glue.arn
worker_type = "Standard"
number_of_workers = 2
glue_version = "4.0"
command {
script_location = "s3://my-bucket/my-script.py"
python_version = "3"
}
default_arguments = {
"--enable-job-insights" = "true",
"--additional-python-modules" : "boto3==1.26.52,pandas==1.5.2,SQLAlchemy==1.4.46,requests==2.28.2",
}
}
更新
在进一步的研究后,我意识到我需要的是一个Python shell脚本Glue作业,而不是ETL(Spark)作业。选择这种类型的作业后,将Python版本设置为3.9,并“勾选” Glue 预安装的分析库,我的脚本顺带具备了我所需的所有库的访问权限。
我的Terraform代码最终如下:
resource "aws_glue_job" "my_job" {
name = "my-job"
role_arn = aws_iam_role.glue.arn
glue_version = "1.0"
max_capacity = 1
connections = [
aws_glue_connection.redshift.name
]
command {
name = "pythonshell"
script_location = "s3://my-bucket/my-script.py"
python_version = "3.9"
}
default_arguments = {
"--enable-job-insights" = "true",
"--library-set" : "analytics",
}
}
请注意,我已经切换到使用Glue 1.0版本。经过一些试错之后,我发现这是与
pythonshell
作业兼容的版本,虽然没有明确说明...但是它确实可行!