最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

创建雅典娜表lambda函数的Node.js

运维笔记admin18浏览0评论

创建雅典娜表lambda函数的Node.js

创建雅典娜表lambda函数的Node.js

我试图创建拉姆达(node.js中)的功能将在雅典娜创建一个表。

我跟着“开始查询执行” AWS文档(代码附后),但是当我运行代码,我没有看到正在创建的任何表并没有错误从功能...

会很感激的帮助:

  • 难道拉姆达将创建一个表(就像一个查询)?
  • 它是重要的,这两个lambda函数和雅典娜区域将是相同的?
  • 这有什么错的代码?
  • 我应该使用.promise()try & catch

我曾尝试在不同的区域中运行它,并让LAMBDA完全访问都雅典娜和S3

// console.log('Loading function');
const AWS = require('aws-sdk');
AWS.config.update({region: 'eu-west-1'});

exports.handler = async (event, context, callback) => {

var athena = new AWS.Athena();

var params = {
   "QueryExecutionContext": { 
      "Database": "mydatabase"
   },
   "QueryString": "CREATE TABLE table_test AS SELECT * FROM mydatabase.exsistingtable WHERE time > to_iso8601(current_timestamp - interval '1' day);",
   "ResultConfiguration": { 
      "EncryptionConfiguration": { 
         "EncryptionOption": "SSE-S3" },
      "OutputLocation": "s3://aws-athena-query-results-maybucket-eu-west-1/"
   }
  };
  athena.startQueryExecution(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
  });

       console.log("end script");

    return "";
};

这里是我的IAM政策:

  • AmazonS3FullAccess
  • CloudWatchFullAccess
  • AmazonAthenaFullAccess
  • CloudWatchLogsFullAccess
  • CloudWatchEventsFullAccess
回答如下:

既然你是从查询结果创建表的查询首先需要在创建表之前运行。该StartQueryExecution API只启动一个查询时,查询然后异步运行,你将不得不问雅典娜定期使用GetQueryExecution无论是做或不该。

查询可以可能花费大量的时间来运行,CTAS操作(CREATE TABLE AS),需要更长的时间。你不想来运行你的lambda函数,而雅典娜工作,这只会花费你的钱,如果查询比对功能的超时时间运行它甚至不会工作。

你可以开始在lambda函数像你这样的查询执行,但如果你想等待查询完成,该表中创建你需要以某种方式直到GetQueryExecution表示该查询完成定期运行的代码。

这可以通过例如阶跃函数来完成,你可以有一个lambda函数启动查询,另一种为完成被称为一遍又一遍投票,而包东西,比如最终的lambda函数。有步骤的功能好的模板,这种工艺。

发布评论

评论列表(0)

  1. 暂无评论