我正在尝试使用 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) 我有一个启用了版本控制的 S3 存储桶,配置为向 Lambda 发送通知事件。当收到 s3:ObjectRemoved:* 事件时,我需要处理从该存储桶中删除的对象。
该事件包含已删除对象的versionId。
有没有办法发现已删除对象的前一个版本的 versionId 并使用 aws-sdk 获取该版本?
或者,有没有办法使用 aws-sdk 获取已删除的对象?
(我正在使用 JavaScript aws-sdk)
我正在 AWS 中使用无服务器框架创建一个应用程序。我正在使用 NodeJS 编写 Lambda。在应用程序中我想创建两个不同的角色
在我的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
我有一个由 FIFO SQS 触发的 lambda 函数。我只想运行该函数的一个实例。该函数调用状态机,并且状态机比 lambda 函数需要更长的时间才能完成。我希望 lambda 函数仅在步骤函数完成执行后才能完成。
amazon-sqs amazon-web-services aws-lambda aws-step-functions
假设我有一个 lambda 函数,并且作为事件参数,我得到了大约 50 个主 id,我必须在 dynamodb 表中查找它们,那么更好的方法是什么 - 50 个查询,每个查询由不同的主 id 或一次扫描然后将扫描主 ID 结果与作为参数接收的主 ID 进行比较?
我认为 50 个 get 查询在性能方面会更好,因为如果明天我将有 100 万条记录,那么扫描所有记录然后仅过滤其中的 50 条将浪费时间和内存,但另一方面却不会对 dynamodb 的 50 个请求可能会出现性能问题并需要更多配置?
capacity amazon-web-services throughput amazon-dynamodb aws-lambda
我需要实施 AWS Lambda 处理程序来处理 AWS S3Events 和 SNSEvent,有什么解决方案吗?
我已经检查过这个答案,How to support more one trigger in AWS Lambda in Golang?
但这对我不起作用。
我尝试在 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
我正在 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 数组以便能够读取它。
我在 CodeCommmit 中有一个非常简单的 Hello World Java 项目,具有以下结构
\n\nThis 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) 我设置了一个 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
aws-lambda ×10
amazon-s3 ×2
node.js ×2
amazon-sqs ×1
aws-glue ×1
aws-sdk ×1
capacity ×1
console.log ×1
go ×1
javascript ×1
matplotlib ×1
opencv ×1
python ×1
python-3.x ×1
throughput ×1