标签: aws-lambda

无法在 AWS Lambda 层中导入 Pandas

我将 python pandas 上传到 Lambda,当我运行 Lambda 时,我看到以下错误:

"errorMessage": "Unable to import module 'lambda_function': C extension: No module named 'pandas._libs.interval' not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace --force' to build the C extensions first."
Run Code Online (Sandbox Code Playgroud)

我真的不确定这里应该发生什么。但是对于更多上下文,我创建了一个名为“python”的目录,然后在我的终端上运行以下行

python3.8 -m pip install pandas -t .
Run Code Online (Sandbox Code Playgroud)

然后我压缩“python”目录,然后创建一个新层并上传 zip 文件。

努力想知道我在哪里关注。

python pip amazon-web-services aws-lambda

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

如何批处理行数据并发送单个 JSON 有效负载?

我目前在 Google Sheet 上使用 Google Apps Script,它将单个行数据发送到 AWS API Gateway 以生成屏幕截图。目前,多个单个 JSON 负载请求导致一些 Lambda 函数失败。所以我想对行数据进行批处理,然后作为单个有效负载发送,这样单个 AWS Lambda 函数就可以执行并完成多个屏幕截图。

在迭代下面代码中每一行的数据后,如何对 JSON 有效负载进行批处理?

function S3payload () {
  var PAYLOAD_SENT = "S3 SCREENSHOT DATA SENT";
  
  var sheet = SpreadsheetApp.getActiveSheet(); // Use data from the active sheet
  
  // Add temporary column header for Payload Status new column entries
  sheet.getRange('E1').activate();
  sheet.getCurrentCell().setValue('payload status');
  
  var startRow = 2;                            // First row of data to process
  var numRows = sheet.getLastRow() - 1;        // Number of rows to process …
Run Code Online (Sandbox Code Playgroud)

javascript json google-sheets google-apps-script aws-lambda

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

AWS Chalice 需要 AWS IAM 策略

需要什么 IAM 角色策略AWS Chalice。

Github 上没有官方文档吗?

运行需要什么权限AWS Chalice?

python amazon-iam aws-lambda chalice

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

使用 AWS Gateway 长时间运行的作业 - Lambda - RDS

我的架构是 AWS Gateway - Lambda - RDS 我从客户那里获取数据作为 xlsx 文件。

我有2个步骤

1.处理文件并存储到事务表中。

2.用户批准后处理数据到活动表。

我的问题是针对大文件,由于时间限制(AWS 网关 30 秒,Lambda 15 分钟)和同步过程,我无法完成这些过程。请建议我 AWS 中的任何服务都可以执行需要与 RDS 持续交互的长时间运行的作业,将文件数据与系统数据进行比较。

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

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

当 Lambda 说 1000 个并发执行时,它是否运行多个容器?

当一个 lambda 的并发执行次数增加时,是否意味着 Lambda 服务在幕后为每个并发执行启动一个新容器,然后也会遇到冷启动问题?

amazon-web-services aws-lambda

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

AWS CDK 授予 Lambda DynamoDB FullAccess

我有一个 lambda,我希望能够创建 dynamo db 表(不仅可以访问,还可以创建具有动态名称的表)。

const lambdaA = new lambda.Function(this, 'lambda-a', {
  functionName: 'lambda-a',
  memorySize: 256,
  runtime: lambda.Runtime.NODEJS_12_X,
  handler: 'index.handler',
  code: lambda.Code.fromAsset(path.join(require.resolve('/lambda-a'), '..')),
});
Run Code Online (Sandbox Code Playgroud)

如何使用 AWS CDK 执行此操作?

我想我需要以某种方式将策略AmazonDynamoDBFullAccess(或其他一些允许创建表的策略)添加到 lambda 的执行角色。

amazon-web-services aws-lambda aws-cdk

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

如何更新 AWS lambda docker 容器版本?

我的意图是将新的容器版本部署到我的 AWS lambda。Lambda 现在提供 docker 运行时,我已经从 Web 控制台成功更新了 lambda docker 容器,但无法从 cli 更新。有更新功能

https://docs.aws.amazon.com/cli/latest/reference/lambda/update-function-configuration.html

但它没有显示我如何更新容器映像版本。是否可以通过 aws cli 更新容器版本?

amazon-web-services docker aws-lambda

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

如何限制无服务器 lambda 函数的并行执行

我正在使用 AWS 并使用无服务器框架。我的无服务器 lambda 函数被事件触发。然后我与数据库交谈,我可以用数据库打开的连接数量有限制。

所以我只想一次运行 5 个 lambda 函数并将其他事件排入队列。我知道有:

    provisionedConcurrency: 3 # optional, Count of provisioned lambda instances
    reservedConcurrency: 5 # optional, reserved concurrency limit for this function. By default, AWS uses account concurrency limit
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,指定数量的长时间运行的作业将在那里,它们将为事件提供服务。

但我想要的不是事件排队,而是触发函数,以便一次最多运行 5 个函数。

我想知道 AWS 是否支持这种事件排队的概念?

aws-lambda serverless-framework serverless-architecture serverless aws-serverless

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

如何在 AWS Lambda 函数中获取 eventName?

我对 AWS Lambda 很陌生。当我的表被修改时,我的 Lambda func 和 DynamoDB 表之间有一个触发器设置。Lambda 函数成功将事件打印到云监视日志。我有麻烦搞清楚如何检查事件是INSERT或MODIFY在dynamoDB。我想检查一个if声明。当我刚print(event)得到

{
  "Records": [
    {
      "eventID": "26e6ac4f1c16fc40fd91536430c1ac72",
      "eventName": "MODIFY",
      "eventVersion": "1.1",
      "eventSource": "aws:dynamodb",
      "awsRegion": "us-east-1",
      "dynamodb": {
        "ApproximateCreationDateTime": 1612293148,
        "Keys": {
          "id": {
            "S": "d66ec59b-b807-4db9-96ed-3ebd3638779a450b7a75-6dce-4be9-babf-1077adb84b02"
          }
        },
        "NewImage": {
          "__typename": {
            "S": "Conversation"
          },
          "members": {
            "L": [
              {
                "S": "450b7a75-6dce-4be9-babf-1077adb84b02"
              },
              {
                "S": "d66ec59b-b807-4db9-96ed-3ebd3638779a"
              }
            ]
          },
          "isRead": {
            "BOOL": false
          },
          "recipient": {
            "S": "d66ec59b-b807-4db9-96ed-3ebd3638779a"
          },
          "latestMessage": {
            "S": "Hey man" …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services aws-lambda

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

AWS lambda 一次将多个图像放入对象

我正在尝试将源图像的大小调整为多个维度 + 扩展名。

例如:当我上传源图像时,比如说 abc.jpg,我需要使用 s3 事件触发器将其大小调整为 .jpg 和 .webp 的大小,例如abc_320.jpg、abc_320.webp、abc_640.jpg、abc_640.webp。因此,使用我当前的 python lambda 处理程序,我可以通过多次put_object调用目标存储桶来完成它,但我想让它更加优化,因为将来我的维度+扩展可能会增加。那么如何通过一次调用将所有调整大小的图像存储到目标存储桶?

当前的 Lambda 处理程序:

import json
import boto3
import os
from os import path
from io import BytesIO
from PIL import Image


# boto3 S3 initialization
s3_client = boto3.client("s3")


def lambda_handler(event, context):
    destination_bucket_name = 'destination-bucket'

    # event contains all information about uploaded object
    print("Event :", event)

    # Bucket Name where file was uploaded
    source_bucket_name = event['Records'][0]['s3']['bucket']['name']

    
    # Filename of object …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services python-imaging-library boto3 aws-lambda

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