标签: aws-lambda

使用 Node.JS 调用 AWSglue 的 lambda 函数没有 console.log 的原因是什么?

我正在尝试使用 lambda 函数和 node.js 启动 AWS 粘合作业。我可以很好地测试 lambda 函数,但在脚本运行完毕后似乎没有任何反应。我添加了一些 console.log 行,但在调用 SDK 方法来启动 AWS 粘合作业期间,没有任何 console.log 行记录任何内容(我正在检查 lambda 代码配置页面和 CloudWatch 上的输出) 。我在这里错过了什么吗?我使用浏览器内的“测试”按钮测试了以下内容。

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-2'});

var glue = new AWS.Glue();

exports.handler = async (event) => {

    console.log("Hello!")
    var params = {
            JobName: 'ETL-store-inventory',
        };

    //Invoke job run
    glue.startJobRun(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });

    console.log("Done")
    
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    }; …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services node.js console.log aws-lambda aws-glue

2
推荐指数
1
解决办法
2371
查看次数

有没有办法使用 aws-sdk 获取已删除的 s3 对象的先前版本?

我有一个启用了版本控制的 S3 存储桶,配置为向 Lambda 发送通知事件。当收到 s3:ObjectRemoved:* 事件时,我需要处理从该存储桶中删除的对象。

该事件包含已删除对象的versionId。

有没有办法发现已删除对象的前一个版本的 versionId 并使用 aws-sdk 获取该版本?

或者,有没有办法使用 aws-sdk 获取已删除的对象?

(我正在使用 JavaScript aws-sdk)

javascript event-handling amazon-s3 aws-sdk aws-lambda

2
推荐指数
1
解决办法
2406
查看次数

如何在无服务器的 AWS Cognito 中创建组并授予不同的权限

我正在 AWS 中使用无服务器框架创建一个应用程序。我正在使用 NodeJS 编写 Lambda。在应用程序中我想创建两个不同的角色

  1. 行政
  2. 用户

在我的serverless.yaml文件中,我为这些用户类型创建了两个不同的 Cognito 用户池组

AdminUserPoolGroup:
      Type: AWS::Cognito::UserPoolGroup
      Properties:
        GroupName: "admins"
        Precedence: 0
        UserPoolId: 
          Ref: CognitoUserPool

NormalUserPoolGroup:
      Type: AWS::Cognito::UserPoolGroup
      Properties: 
        GroupName: users
        Precedence: 1
        UserPoolId:
          Ref: CognitoUserPool
Run Code Online (Sandbox Code Playgroud)

我想向这两个组授予不同的访问级别,例如管理员可以创建帖子,用户只能查看它们。经过一些研究后,我发现这可以通过将策略附加到组来完成。但我找不到使用无服务器框架来做到这一点的方法。

amazon-web-services node.js amazon-cognito aws-lambda serverless-framework

2
推荐指数
1
解决办法
1331
查看次数

从 lambda 函数同步调用步骤函数

我有一个由 FIFO SQS 触发的 lambda 函数。我只想运行该函数的一个实例。该函数调用状态机,并且状态机比 lambda 函数需要更长的时间才能完成。我希望 lambda 函数仅在步骤函数完成执行后才能完成。

amazon-sqs amazon-web-services aws-lambda aws-step-functions

2
推荐指数
1
解决办法
6158
查看次数

Dynamodb 一次批量扫描与多次单次获取

假设我有一个 lambda 函数,并且作为事件参数,我得到了大约 50 个主 id,我必须在 dynamodb 表中查找它们,那么更好的方法是什么 - 50 个查询,每个查询由不同的主 id 或一次扫描然后将扫描主 ID 结果与作为参数接收的主 ID 进行比较?

我认为 50 个 get 查询在性能方面会更好,因为如果明天我将有 100 万条记录,那么扫描所有记录然后仅过滤其中的 50 条将浪费时间和内存,但另一方面却不会对 dynamodb 的 50 个请求可能会出现性能问题并需要更多配置?

capacity amazon-web-services throughput amazon-dynamodb aws-lambda

2
推荐指数
1
解决办法
1641
查看次数

如何在 Go 中创建 AWS Lambda 来处理多个事件

我需要实施 AWS Lambda 处理程序来处理 AWS S3Events 和 SNSEvent,有什么解决方案吗?

我已经检查过这个答案,How to support more one trigger in AWS Lambda in Golang?

但这对我不起作用。

go aws-lambda

2
推荐指数
1
解决办法
2385
查看次数

如何在 AWS 中将 Python 库“matplotlib”部署为 Lambda 层?

我尝试在 python/lib/python3.7/site-packages/{matplotlib here} 中压缩和构建 zip 但它说无法导入 matplotlib/ init_ .py中的 ft2font

有趣的是,我的包中没有其他具有该名称的文件。我尝试在不同的操作系统上安装 pip install 和 pip3 install 但没有成功

python matplotlib amazon-web-services aws-lambda aws-lambda-layers

2
推荐指数
1
解决办法
4569
查看次数

如何将视频文件从S3存储桶传递到opencv VideoCapture?

我正在 python 上开发一个 aws lambda 函数,该函数读取上传到 s3 存储桶的视频并从中提取一些帧,我已经有了使用 opencv 提取帧的脚本,但我不知道应该传递给什么参数cv2.VideoCapture,因为该文件只能通过 s3 存储桶访问。

我尝试使用 s3.get_object() 以及 s3.download_fileobj 将视频作为 s3 对象传递,但这些似乎都不起作用。

我也尝试过只传递 s3 中视频文件的密钥,但它也不起作用(我没想到这会起作用,但我绝望了)。

我现在拥有的代码:

import boto3
import cv2
import io

def lambda_handler(event, context):
   s3 = boto3.client("s3")
   bucket_name = "my_bucket"
   video_key = "videos/video.mp4"
   vidcap = cv2.VideoCapture(s3.get_object(Bucket=bucket_name,Key=video_path))
   success,image = vidcap.read()
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

   vidcap = cv2.VideoCapture(s3.download_fileobj(Bucket=bucket_name, Key=video_key, Fileobj=io.BytesIO())
Run Code Online (Sandbox Code Playgroud)

但也没有运气

我得到成功=假和图像=无。我希望 success 的输出为 True 并且图像是一个 numpy 数组以便能够读取它。

opencv amazon-s3 amazon-web-services python-3.x aws-lambda

2
推荐指数
1
解决办法
5326
查看次数

AWS CodeBuild 无法使用 CD 命令

我在 CodeCommmit 中有一个非常简单的 Hello World Java 项目,具有以下结构

\n\n
This is a sample template for sam-app - Below is a brief explanation of what we have generated for you:\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md                                   <-- This instructions file \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 HelloWorldFunction                          <-- Source for HelloWorldFunction Lambda Function \n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pom.xml                                 <-- Java dependencies \n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src \n\xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main \n\xe2\x94\x82       \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 java \n\xe2\x94\x82       \xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 helloworld \n\xe2\x94\x82       \xe2\x94\x82           \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 App.java                <-- Lambda function code \n\xe2\x94\x82       \xe2\x94\x82           \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 GatewayResponse.java    <-- POJO for API Gateway Responses object …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-lambda aws-codecommit aws-codebuild

2
推荐指数
1
解决办法
1576
查看次数

经过身份验证登录后,AWS Cognito NotAuthorizedException“无效的访问令牌”错误

我设置了一个 AWS Cognito 用户池/身份池来授权 API 网关后面的 Lambda 函数。我的 lambda 使用适用于 Node.js 的 AWS 开发工具包。登录过程工作正常。在我的函数中,我有一个CognitoIdentityServiceProvider用于调用该getUser函数的对象。我为函数提供的访问密钥来自 lambda 变量event.requestContext.identity.accessKey。但是,函数调用失败,并通过我的 Cloud Watch 日志查看以下错误:

{
  "message": "Invalid Access Token",
  "code": "NotAuthorizedException",
  "time": "2019-08-03T20:34:50.511Z",
  "requestId": ...,
  "statusCode": 400,
  "retryable": false,
  "retryDelay": 36.048605458111794
}
Run Code Online (Sandbox Code Playgroud)

在经过身份验证的请求中提供给我的令牌为何无效?我什至不确定如何调试它,或者我应该寻找什么问题。

我如何尝试在 lamdba 处理程序中进行调用的示例:

var AWS = require('aws-sdk');
AWS.config.region = "us-west-2";
let poolData = {
  UserPoolId: MY_POOL_ID,
  ClientId: MY_CLIENT_ID
};
const cognito = new AWS.CognitoIdentityServiceProvider(poolData);

export async function myHandler(event, context, cb) {
  var params = {
    AccessToken: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cognito aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
1万
查看次数