[英]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.