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'])