Aws lambda 如何从Lambda的CloudFormation访问Athena QueryString?

Aws lambda 如何从Lambda的CloudFormation访问Athena QueryString?,aws-lambda,amazon-cloudformation,amazon-athena,Aws Lambda,Amazon Cloudformation,Amazon Athena,AWS加载了一个问题,但有人知道在Lambda中访问Athena查询字符串(在CloudFormation中)的正确方法吗 我已经在CloudFormation中设置了Athena NamedQuery和Lambda。抽象出一些更具体的项目细节,我的一般形式是: MyQuery: Type: AWS::Athena::NamedQuery Properties: Database: "mydatabase" Name: "DataQuery" QueryString: SE

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需要是一个字符串,因此目前无法使用。我想在我的_查询中访问QueryString属性,我觉得我已经很接近了,但我不太确定如何完成最后一步。任何帮助都将不胜感激。

昨天就解决了(或者更具体地说,是我的队友解决了)

Boto3碰巧有另一个名为
get\u named\u 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'}
)