Я могу использовать API Athena с startQueryExecution() для создания CSV-файла ответов в S3. Однако я хотел бы иметь возможность вернуть в свое приложение ответ JSON, чтобы я мог продолжить обработку данных. Я пытаюсь вернуть результаты JSON после запуска startQueryExecution() через API, как я могу получить результаты в виде ответа JSON?
Я использую AWS PHP SDK [https://aws.amazon.com/sdk-for-php/] , однако это относится к любому языку, поскольку я не могу найти никаких ответов на вопрос о том, как получить ответ, он просто сохраняет файл CSV в S3.
$athena = AWS::createClient('athena');
$queryx = 'SELECT * FROM elb_logs LIMIT 20';
$result = $athena->startQueryExecution([
'QueryExecutionContext' => [
'Database' => 'sampledb',
],
'QueryString' => 'SELECT request_ip FROM elb_logs LIMIT 20', // REQUIRED
'ResultConfiguration' => [ // REQUIRED
'EncryptionConfiguration' => [
'EncryptionOption' => 'SSE_S3' // REQUIRED
],
'OutputLocation' => 's3://xxxxxx/', // REQUIRED
],
]);
// check completion : getQueryExecution()
$exId = $result['QueryExecutionId'];
sleep(6);
$checkExecution = $athena->getQueryExecution([
'QueryExecutionId' => $exId, // REQUIRED
]);
if($checkExecution["QueryExecution"]["Status"]["State"] == 'SUCCEEDED')
{
$dataOutput = $athena->getQueryResults([
'QueryExecutionId' => $result['QueryExecutionId'], // REQUIRED
]);
while (($data = fgetcsv($dataOutput, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
}