[英]File in s3 bucket comes with no values when running python script through lambda in aws
我有以下脚本,但是当文件进入 s3 时它变为空白。
import json
import urllib.parse
from datetime import datetime
import boto3
import botocore.session as bc
print('Loading function')
client_s3=boto3.client('s3')
def run_athena(BUCKET_NAME, PREFIX):
client=boto3.client('athena')
database = 'data_lake'
query ="SELECT buid, property_id, checkin_date, count(*) number_of_direct_bookings FROM data_lake.vw_qs_bookings_v1 where source_logic in ('sources_phone', 'sources_email', 'sources_website','sources_front_desk') and cancelled_flag=0 and checkin_date= date_add('day', -1, current_date) group by 1,2,3";
s3_output = 's3://gainsight-file/gainsight/'
response = client.start_query_execution(QueryString=query, QueryExecutionContext={'Database': database}, ResultConfiguration={'OutputLocation': s3_output})
today = datetime.today().strftime('%Y-%m-%d')
response_s3 = client_s3.list_objects(
Bucket=BUCKET_NAME,
Prefix=PREFIX,
)
name = response_s3["Contents"][0]["Key"]
client_s3.copy_object(Bucket=BUCKET_NAME, CopySource=BUCKET_NAME+'/'+name, Key=PREFIX+"vw_qs_bookings_v1_"+today)
client_s3.delete_object(Bucket=BUCKET_NAME, Key=name)
def lambda_handler(event, context):
print("Entered lambda_handler")
run_athena('gainsight-file', 'gainsight/')
我假设与查询变量有关。
谢谢您的帮助。
client.start_query_execution(…)
仅启动查询执行,它不会等待它完成(因为这可能长达 30 分钟)。 您需要调用client.get_query_execution(…)
直到您收到说明执行成功(或失败)的响应。 只有这样 output 才可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.