Python AWS胶中的AWS区域
如何获取当前粘合作业正在执行的区域Python AWS胶中的AWS区域,python,amazon-web-services,aws-glue,Python,Amazon Web Services,Aws Glue,如何获取当前粘合作业正在执行的区域 当胶水作业开始执行时,我看到输出 检测到的区域eu-central-1 在AWS Lambda中,我可以使用以下行获取当前区域: import os region = os.environ['AWS_REGION'] 但是,似乎Glue中不存在AWS_区域环境变量,因此引发了KeyError: keyrerror:“AWS\U地区” 我需要该区域的原因是,我正在尝试获取中所述的所有数据库和表,并且我不希望在创建boto客户端时硬编码该区域。一个选项是将A
当胶水作业开始执行时,我看到输出
检测到的区域eu-central-1
在AWS Lambda中,我可以使用以下行获取当前区域:
import os
region = os.environ['AWS_REGION']
但是,似乎Glue中不存在AWS_区域
环境变量,因此引发了KeyError
:
keyrerror:“AWS\U地区”
我需要该区域的原因是,我正在尝试获取中所述的所有数据库和表,并且我不希望在创建boto客户端时硬编码该区域。一个选项是将AWS_区域作为作业参数传递。例如,如果从Lambda触发作业:
import os
response = client.start_job_run(
JobName = 'a_job_name',
Arguments = {'--AWS_REGION': os.environ['AWS_REGION'] }
)
或者,如果使用CloudFormation资源定义作业:
GlueJob:
Type: AWS::Glue::Job
Properties:
Role: !Ref GlueRole
DefaultArguments:
"--AWS_REGION": !Sub "${AWS::Region}"
Command:
ScriptLocation: !Sub s3://${GlueScriptBucket}/glue-job.py
Name: glueetl
然后,您可以使用以下方法提取作业代码中的AWS\u REGION
参数:
改用
os.environ['AWS\u DEFAULT\u REGION']
。把这个留给新访客。不。我得到一个
键错误:“AWS\u DEFAULT\u REGION”
。还有其他建议吗?当我试着打印os.environ
时,我从胶水作业中得到了这个响应,environ({“路径”:“主机名”:“使用代理”:“AWS\u默认\u区域”:“us-east-1”,“glue\u PYTHON\u版本”:“3”,“错误文件名\u位置”:“LANG”:“GPG\u密钥”:“PYTHON\u版本”:”,“PYTHON\u PIP\u VERSION”:“,”PYTHON\u GET\u PIP\u URL”:“,”PYTHONPATH:“,”GLUE\u INSTALLATION:“,”HOME:“/”})
我使用pythonshell作为粘合作业类型,如果您使用的是“Spark”或“Spark Streaming”,我建议只运行一个像导入os print(os.environment)这样简单的小脚本这将为您提供所有环境varsOk的列表。作为一个新手,我没有意识到其中的区别。事实上,我运行的是Spark作业,而不是Python作业。这个解决方案似乎适合我:
import sys
from awsglue.utils import getResolvedOptions
args = getResolvedOptions(sys.argv, ['AWS_REGION'])
print('region', args['AWS_REGION'])