标签: aws-lambda

获取 lambda Amazon Webservice 触发器上的文件名

我正在使用 Amazon Webservice 对 lambda 函数进行触发事件,但我不知道如何获取文件名。

触发事件是在我的 s3 上创建新文件时。

我正在使用 python,我调用的函数是:

def lambda_handler(event, context):
Run Code Online (Sandbox Code Playgroud)

有谁知道如何添加文件名?

python amazon-web-services aws-lambda

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

使用 boto 调用 lambda 不考虑超时

我正在使用 boto3 调用 lambda 函数,其中:

import boto3
import json

client = boto3.client('lambda')
response = client.invoke(
            InvocationType='RequestResponse',
            FunctionName=test_lambda_arn,
            LogType='Tail',
            Payload=json.dumps(data)
)
Run Code Online (Sandbox Code Playgroud)

它botocore.vendored.requests.exceptions.ReadTimeout在 626 秒后引发异常。我已将此 lambda 配置为在 100 秒后超时。当我用 boto 创建它时,我这样做了。当我进入 AWS 控制台时,它说这个 lambda 的超时时间为 1 分 40 秒。

那么为什么invoke命令在 626 秒后超时,而不是 100 秒后呢?

是因为重试吗?如果是这样,我如何禁用重试?

编辑:在 CloudWatch 日志中,我可以看到每个client.invoke调用的多个调用。因此会发生一些自动重试的事情。以下是该文档的client.invoke。

python timeout boto boto3 aws-lambda

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

AWS Lambda 复制 S3 存储桶中文件夹内的文件

我想知道我们如何使用 aws lambda (python) 将文件从 S3 存储桶中的文件夹复制和移动到同一存储桶中的不同文件夹?

amazon-s3 amazon-web-services boto3 aws-lambda

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

AWS Kinesis Stream 返回“ProvisionedThroughputExceededException”时数据是否丢失?

我有一个在 AWS 中运行的数据迁移作业,它将数据发送到 Kinesis Stream 和一个 Lambda 函数,该函数充当将数据写入 DynamoDB 的使用者(我将 kinesis 设置为 lambda的触发器)。

当 Kinesis Stream 开始命中时,我的问题就出现了:

超出写入吞吐量(计数/请求)- 平均值 - WriteProvisionedThroughputExceeded

我在该图表上看到 200 或 300 次计数,即使 lambda 使用者从未停止读取数据并将数据写入 DDB 表,但是一旦迁移过程完成(没有更多信息要发送到 kinesis)我注意到有一些丢失的记录(lambda 使用者从未失败),我的问题是:当 AWS Kinesis Stream 返回“ProvisionedThroughputExceededException”时,数据是否丢失?那些数据永远不会发送给kinesis消费者?

amazon-web-services amazon-kinesis aws-lambda

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

使用 AWS Lambda 在 NodeJS 中找不到 MySQL

我有以下代码要执行。我试过需要 mysql 和 node-mysql ,它们都给我同样的错误:

代码:

var AWS = require("aws-sdk");
var mysql = require("mysql");


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

    try {

        console.log("GOOD");

    }

     catch (error) {
        context.fail(`Exception: ${error}`)
    }


};
Run Code Online (Sandbox Code Playgroud)

错误:

{
  "errorMessage": "Cannot find module 'mysql'",
  "errorType": "Error",
  "stackTrace": [
    "Function.Module._load (module.js:417:25)",
    "Module.require (module.js:497:17)",
    "require (internal/module.js:20:19)",
    "Object.<anonymous> (/var/task/index.js:2:13)",
    "Module._compile (module.js:570:32)",
    "Object.Module._extensions..js (module.js:579:10)",
    "Module.load (module.js:487:32)",
    "tryModuleLoad (module.js:446:12)",
    "Function.Module._load (module.js:438:3)"
  ]
}
Run Code Online (Sandbox Code Playgroud)

如何使用 lambda 将 mysql 导入节点或使其工作?

mysql amazon-web-services node.js aws-lambda

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

MissingRequiredParameter:参数中缺少必需的键“消息”

我正在尝试在 AWS Lambda 中调用代码。此 Lambda 代码已使用我的 IOT 按钮进行配置。在运行此代码时,我没有看到任何错误。此外,我在我的移动设备上并没有真正看到所需的推送通知。

我可以在控制台中看到此消息: MissingRequiredParameter: Missing required key 'Message' in params

这是我的代码:

'use strict'; 

console.log('Loading function'); 

var AWS = require('aws-sdk');  

var sns = new AWS.SNS();

AWS.config.region = 'xxxxx'; 

const TopicArn = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'  

exports.handler = function(event, context) { 

    console.log("\n\nLoading handler\n\n"); 
    console.log('Received event:', event); 


  const sin = 
      {
"default": "Start", 
"APNS_SANDBOX":"{\"aps\":{\"alert\":\"Start\"}}", 
"GCM": "{ \"notification\": { \"text\": \"Start\" } }"
} // for single click
  const doub = {
"default": "Stop", 
"APNS_SANDBOX":"{\"aps\":{\"alert\":\"Stop\"}}", 
"GCM": "{ \"notification\": { \"text\": \"Stop\" …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-lambda aws-iot

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

AWS Lambda 无法对外部 API 进行 REST 调用

我正在使用 nodeJS 代码使用请求模块进行休息调用。我也使用了回调函数,但请求函数没有被执行。

我的流程转到函数 searchTSTData 但请求方法没有被执行。

从回调函数中,我只得到 responseString = 'Yet to make query rest',我已在 searchTSTData 函数中对其进行了初始化。它不会根据 API 返回的响应进行更新,该响应应该是错误或成功响应字符串。

我已将模块包含在 zip 中,因为 lambda 不会抛出错误并通过测试。另外我确定请求模块不能像在 Cloudwatch 日志中那样工作我没有看到我在请求中写的任何 console.logs。

请建议我哪里出错了。我是 NodeJS 的新手。

这是代码 -

'use strict';
const request = require('request');
const Alexa = require('alexa-sdk');
const APP_ID = 'amzn1.ask.skill.80a49cf5-254c-123a-a456-98745asd21456';  

const languageStrings = {
    'en': {
        translation: {
            TST: [
                'A year on Mercury is just 88 days long.',
            ],
            SKILL_NAME: 'TEST',
            GET_TST_MESSAGE: "Here's your TST: You searched for ",
            HELP_MESSAGE: 'You can say get …
Run Code Online (Sandbox Code Playgroud)

request amazon-web-services alexa node.js aws-lambda

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

我可以从私有 VPC 中的 EC2 实例访问我的 Lambda 吗?

有问题的 EC2 实例位于私有子网中,设计上没有通过 NAT 启用 Internet 访问。目前,我的 Lambda 位于连接到同一 VPC 的公有子网中。

当我尝试调用 Lambda 时,我收到Connection to lambda.us-east-1.amazonaws.com timed out.

amazon-vpc aws-lambda

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

以编程方式禁用和启用 AWS lambda 触发器

我们有没有办法以编程方式禁用和启用 Lambda 触发器(例如,用于计划维护目的)?

在此处输入图片说明

amazon-web-services aws-lambda

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

尝试为 DynamoDB 初始化客户端时,Amazon Lambda 超时

我在 Amazon 的 Lambda 服务上上传了以下 Java 类:

public class DevicePutHandler implements RequestHandler<DeviceRequest, Device> {
    private static final Logger log = Logger.getLogger(DevicePutHandler.class);

    public Device handleRequest(DeviceRequest request, Context context) {
        AmazonDynamoDB client = AmazonDynamoDBClientBuilder.defaultClient();
        DynamoDBMapper mapper = new DynamoDBMapper(client);

        if (request == null) {
            log.info("The request had a value of null.");
            return null;
        }

        log.info("Retrieving device");
        Device deviceRetrieved = mapper.load(Device.class, request.getDeviceId());

        log.info("Updating device properties");
        deviceRetrieved.setBuilding(request.getBuilding());
        deviceRetrieved.setMotionPresent(request.getMotionPresent());
        mapper.save(deviceRetrieved);

        log.info("Updated device has been saved");
        return deviceRetrieved;
    }
}
Run Code Online (Sandbox Code Playgroud)

我还有一个执行角色集,可以让我完全控制 DynamoDB。我的权限应该完全没有问题,因为我以这种完全相同的方式对使用 Lambda 和 DynamoDB 的其他项目使用了完全相同的权限(唯一的区别是不同的请求类型)。 …

java amazon-web-services amazon-dynamodb aws-lambda

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