【问题标题】:AWS region in AWS GlueAWS Glue 中的 AWS 区域
【发布时间】:2019-02-06 03:14:48
【问题描述】:

如何获取当前 Glue 作业正在执行的区域?


当 Glue 作业开始执行时,我看到了输出

Detected region eu-central-1

在 AWS Lambda 中,我可以使用以下几行来获取当前区域:

import os
region = os.environ['AWS_REGION']

但是,Glue 中似乎不存在 AWS_REGION 环境变量,因此引发了 KeyError

KeyError: 'AWS_REGION'


我需要该区域的原因是我试图获取 this question 中所述的所有数据库和表,并且我不想在创建 boto 客户端时对区域进行硬编码。

【问题讨论】:

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


    【解决方案1】:

    一种选择是将AWS_REGION 作为作业参数传递。例如,如果您从 Lambda 触发作业:

    import os
    
    response = client.start_job_run(
        JobName = 'a_job_name',
        Arguments = {'--AWS_REGION': os.environ['AWS_REGION'] } 
    )
    

    或者,如果您使用 AWS::Glue::Job 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
    

    然后您可以使用getResolvedOptions 提取工作代码中的AWS_REGION 参数:

    import sys
    from awsglue.utils import getResolvedOptions
    
    args = getResolvedOptions(sys.argv, ['AWS_REGION'])
    print('region', args['AWS_REGION'])
    

    【讨论】:

      【解决方案2】:

      请改用os.environ['AWS_DEFAULT_REGION']

      将这里留给新访客。

      【讨论】:

      • 不。我收到了KeyError: 'AWS_DEFAULT_REGION'。还有其他建议吗?
      • 当我尝试打印 os.environ 时,我从胶水作业中得到了这个回复,environ({ "PATH": "<VALUE>", "HOSTNAME": "<VALUE>", "USE_PROXY": "<VALUE>", "AWS_DEFAULT_REGION": "us-east-1", "GLUE_PYTHON_VERSION": "3", "ERROR_FILE_NAME_LOCATION": "<VALUE>", "LANG": "<VALUE>", "GPG_KEY": "<VALUE>", "PYTHON_VERSION": "<VALUE>", "PYTHON_PIP_VERSION": "<VALUE>", "PYTHON_GET_PIP_URL": "<VALUE>", "PYTHON_GET_PIP_SHA256": "<VALUE>", "PYTHONPATH": ":<VALUE>", "GLUE_INSTALLATION": "<VALUE>", "HOME": "/" })
      • 我使用 Python shell 作为粘合作业类型,如果您使用“Spark”或“Spark Streaming”,我建议只运行一个像 @987654326 一样简单的小脚本@ 那应该给你一个所有环境变量的列表
      • 好的。作为 Glue/Spark 的新手,我没有意识到其中的区别。事实上,我正在运行 Spark 作业,而不是 Python 作业。
      • 这个解决方案似乎对我有用:stackoverflow.com/a/56719318/1548275
      猜你喜欢
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2022-09-23
      • 2019-05-12
      • 2020-06-27
      • 1970-01-01
      相关资源
      最近更新 更多