игнорировать файл .csv.metadata из вывода athena - PullRequest
0 голосов
/ 04 мая 2018

У меня есть лямбда, которая будет запрашивать Афину и отбрасывать вывод результатов в желаемое ведро. Выходные данные Афины содержат .csv и .csv.metadata. я не хочу получать файл .metadata вместе с файлом .csv, когда моя лямбда-файл сбрасывает его. вот мой код:

def wait_for_result(athena, query_id):state = athena.get_query_execution(QueryExecutionId=query_id)['QueryExecution']['Status']['State']
    while state != 'SUCCEEDED':
    print('Query state: {}'.format(state))
    time.sleep(5)
    state = athena.get_query_execution(QueryExecutionId=query_id)['QueryExecution']['Status']['State']


def lambda_handler(event, context):
    short_date = event['record']['short_date']

    bucket = 'test-rod-us-east-1-orders'
    s3_output = 's3://{0}/arda-orders/f=csv/short_date={1}'.format(bucket, short_date)

    query = 'query_here'.format(short_date)

    boto_session = assume_role('arn:aws:iam::account-id:role/test-contr-etl-ec2-role')
    session = assume_role('arn:aws:iam::account-id:role/test-xacct-rod-consumer', boto_session)

    athena = session.client('athena')
    s3 = session.client('s3')
    s3_bucket = session.resource('s3').Bucket(bucket)

    response = athena.start_query_execution(QueryString=query,
                                        QueryExecutionContext={
                                            'Database': 'datapond'
                                        },
                                        ResultConfiguration={
                                            'OutputLocation': s3_output
                                        })

    query_id = response['QueryExecutionId']
    wait_for_result(athena, query_id)

    # print ('short_date: {}'.format(short_date))
    for key in s3.list_objects(Bucket=bucket)['Contents']:
       if short_date in key['Key']:
          s3.put_object_acl(ACL='bucket-owner-full-control', Bucket=bucket, Key=key['Key'])
           print('set \'bucket-owner-full-control\' for {}'.format(key['Key']))
             if '.csv.metadata' in key['Key']:
                s3_bucket.delete_objects(
                   Delete={
                     'Objects': [
                         {'Key': key['Key']},
                    ]
                }
            )

             print('deleted {}'.format(key['Key']))

   sqs.delete_message(
       QueueUrl=sqs_queue_url,
       ReceiptHandle=event['receipt_handler']
   )

   print ('Complete process for short_date: {}'.format(short_date))

Я просто получаю сообщение «удаленный ключ» в журналах, но я все еще нахожу файл .csv.metadata в корзине s3. пожалуйста помогите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...