首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Lambda中创建AWS胶水爬行器,Lambda由Step函数触发

无法在Lambda中创建AWS胶水爬行器,Lambda由Step函数触发
EN

Stack Overflow用户
提问于 2021-08-14 06:25:16
回答 1查看 490关注 0票数 1

这是我的场景:

  1. API网关/Lambda触发Step函数。step函数的有效负载是在现有雅典娜表

上运行的SQL查询。

  1. Task-1的Step函数调用雅典娜上的StartQueryExecution API。该查询成功运行,并在给定的S桶

中生成结果

  1. Task-2调用Lambda,该Lambda根据任务-2的结果创建AWS爬虫(任务-2从任务-1)

获取S3文件位置。

  1. Task-3调用运行在Task-2

中创建的爬虫的Lambda

要在Lambda中创建AWS爬虫,下面是我在Lambda (NodeJS)中的代码:

代码语言:javascript
复制
  exports.handler = async(event) => {
    const awsglue = new aws.Glue();

    const uuid = event.QueryExecutionID
    var path = event.OutputPath

    var params = {
        Name: uuid,
        Role: <Role ARN>,
        DatabaseName: <Database name>,
        Targets: {
            S3Targets: [{
                Path: path
            }]
        }
    }

   var request = await awsglue.createCrawler(params, (err, data) => {
   if (err) console.log(err, err.stack);
   else console.log(data);
    })
  
    const response = {
        statusCode: 200,
        body: JSON.stringify(uuid),
    };
    return response;
};

Problem createCrawler是一个异步调用,Lambda甚至在创建爬虫之前就返回成功。因此,用于运行爬虫的Task-3失败了。

为了解决这个问题,我尝试将createCrawlerstartCrawler合并到同一个Lambda函数中,但这也不起作用。

我是不是遗漏了什么?不可能在由Step函数触发的Lambda函数中创建AWS Glue爬虫吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-15 15:39:04

Glue爬虫应该以Infra管理的Step函数的状态机作为代码创建,比如CloudFormation、Terraform和AWS。

然后,lambda函数启动爬虫并检索爬虫运行的结果。

参见类似的示例代码,

Lambda Func启动爬虫,https://github.com/awslabs/realtime-fraud-detection-with-gnn-on-dgl/blob/61b341eb1fed1b1b471c9fdccce0c348ff7f343f/src/lambda.d/crawl-data-catalog/index.ts#L24-L37

利用CDK,https://github.com/awslabs/realtime-fraud-detection-with-gnn-on-dgl/blob/61b341eb1fed1b1b471c9fdccce0c348ff7f343f/src/lib/etl-glue.ts#L78-L95创建爬虫

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68780866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档