【问题标题】:How to Access Athena QueryString From CloudFormation in Lambda?如何在 Lambda 中从 CloudFormation 访问 Athena QueryString?
【发布时间】:2018-05-21 13:16:51
【问题描述】:

AWS 加载的问题,但有谁知道在 Lambda 中访问 Athena 查询字符串(在 CloudFormation 中)的正确方法是什么?

我已经在 CloudFormation 中设置了 Athena NamedQuery 和 Lambda。抽象出一些更具体的项目细节,我的一般形式是:

MyQuery:
 Type: AWS::Athena::NamedQuery
 Properties:
   Database: "mydatabase"
   Name: "DataQuery"
   QueryString: SELECT * FROM mydatabase

MyLambda:
Type: AWS::Serverless::Function
Properties:
  Handler: 'handlers.migration_handler'
  Runtime: python3.6
  CodeUri:
    Bucket: BATS::SAM::CodeS3Bucket
    Key: BATS::SAM::CodeS3Key
  Description: Migrates data from output of Athena query to S3
  Policies:
    - AmazonS3FullAccess
    - AWSLambdaExecute
    - AmazonAthenaFullAccess
  Environment:
    Variables:
      MY_QUERY:
        Ref: MyQuery

当我为 lambda 编写处理程序时,我想调用:

athena_client = boto3.client('athena')
response = athena_client.start_query_execution(
      QueryString = os.environ['MY_QUERY']
      ResultConfiguration = {'OutputLocation: 's3://my-bucket'}
)

但是,QueryString 必须是一个字符串,所以目前这不起作用。我想访问 MY_QUERY 中的 QueryString 属性,我觉得我很接近,但我不太确定如何完成最后一步。在这里的任何帮助将不胜感激。

【问题讨论】:

    标签: aws-lambda amazon-cloudformation amazon-athena


    【解决方案1】:

    昨天想通了(或者更具体地说,我的队友想通了)。

    Boto3 恰好有另一个名为 get_named_query(NamedQueryId) 的方法,它返回一个字典形式为:

    {
    'NamedQuery': {
        'Name': 'string',
        'Description': 'string',
        'Database': 'string',
        'QueryString': 'string',
        'NamedQueryId': 'string'
    }
    

    因此,当我将 lambda 处理程序修改为:

    athena_client = boto3.client('athena')
    
    query_info = athena_client.get_named_query(
        NamedQueryId = os.environ['MY_QUERY']
    )
    
    response = athena_client.start_query_execution(
        QueryString = query_info['NamedQuery']['QueryString']
        ResultConfiguration = {'OutputLocation: 's3://my-bucket'}
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-08
      • 2014-05-25
      • 1970-01-01
      • 2018-06-09
      • 2020-03-04
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多