标签: aws-lambda

如何将参数传递给AWS Lambda函数

我知道可以将参数传递给在AWS Lambda上运行的Java程序以进行测试.但如果调度事件调用此程序,我不知道如何传递这些参数.

有谁知道这是否可能?如果有,怎么样?我无法找到任何相关信息.

提前致谢

java amazon-web-services aws-lambda

14
推荐指数
3
解决办法
8876
查看次数

AWS Lambda函数检索S3文件的速度极慢

我有一个Lambda函数,每次执行时都需要从S3读取一个文件.
该文件非常小,大约200字节,S3桶位于美国标准区域,Lambda函数位于us-east-1区域(因此相同的区域).读取文件需要10到15秒,为什么这么慢?

谢谢.

编辑:一些代码

long start = System.nanoTime();
AmazonS3Client s3Client = new AmazonS3Client();
S3Object propertyFile = null;
try {
    propertyFile = s3Client.getObject(S3_BUCKET_NAME, S3_PROPERTY_FILE);
} catch (Exception e) {...}
try (InputStream in = propertyFile.getObjectContent()) {
    PROPERTIES.load(in);
} catch (Exception e) {...}
LOGGER.debug("S3 access " + (System.nanoTime() - start));
Run Code Online (Sandbox Code Playgroud)

编辑#2:布鲁克斯的建议之后我做了

AmazonS3Client s3Client = new AmazonS3Client(new InstanceProfileCredentialsProvider());
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

Unable to load credentials from Amazon EC2 metadata service
Run Code Online (Sandbox Code Playgroud)

编辑#3:
分配给Lambda函数的内存为256MB,当我分配1024MB时,需要3-4秒,这仍然太慢(从我的计算机本地测试时需要大约1-2秒).

amazon-s3 amazon-web-services aws-lambda

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

重新使用/ tmp时如何扩展Lambda?

我有一个lambda函数,它从DynamoDB读取并在/ tmp中创建一个最终上传到s3的大文件(~500M).上传后,lambda将清除/ tmp中的文件(因为实例很可能被重用)

即使您忽略了延迟,此功能也需要大约1分钟才能执行.

在这种情况下,当我尝试再次调用该函数时,在<1m中,如果我有足够的空间写入/ tmp,我无法控制.我的功能失败了.

问题:1.在这种情况下,已知的工作是什么?(可能在/ tmp中提供更多空间或确保为每次新执行提供干净/ tmp)2.有关Lambda中文件创建和管理的最佳实践是什么?3.我可以将另一个EBS或其他存储附加到Lambda执行吗?4.有没有办法让文件系统像访问s3那样我的函数而不是使用/ tmp可以直接写入s3?

scalability amazon-web-services aws-lambda

14
推荐指数
3
解决办法
6851
查看次数

Cognito用户池授权程序使用无服务器框架

我需要使用aws cognito userpool授权我的API端点.我可以手动完成,但我需要使用无服务器框架自动化授权部分.

无服务器框架是否支持aws cognito?

如果是这样,我们如何设置无服务器的aws-userpool?

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

14
推荐指数
3
解决办法
7412
查看次数

如何在AWS Lambda C#实现中使用依赖注入

我使用AWS.Net SDK,.net核心版本1.0创建了Lambda函数.我想实现依赖注入.由于lambda函数在AWS环境中独立触发和运行,因此不存在类似的类Startup.如何以及在哪里可以配置我的容器来实现此实现?

c# .net-core aws-lambda

14
推荐指数
3
解决办法
5471
查看次数

AWS Lambda - 使用 Node.js 获取路径参数

在用 Node.js 编写的 AWS lambda 中,当我通过 API 网关执行 GET 调用时,我想提取 URL 的以下部分:

/devices/{id} --> {id} will be replaced by a value, and that is the value I want!
Run Code Online (Sandbox Code Playgroud)

我知道要获得 QueryStringParameters 你只需使用

event.queryStringParameters.[parameter name]
Run Code Online (Sandbox Code Playgroud)

但是我将如何对路径参数执行此操作,例如上面的 {id}。

还有什么地方可以让我全面了解在 Node.js 中为 API 编写 lambda 表达式吗?

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

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

如何从 Node.js AWS Lambda 函数运行 Python 脚本

如此处所述,可以从 Node.js Lambda 函数运行非 Node.js 可执行文件。

拥有 Node.js Lambda 函数我想使用 Node.js 的child_process命令运行 Python 脚本。

我遵循了这个AWS 教程,并在我的 .js 函数的开头包含了以下内容:

process.env[‘PATH’] = process.env[‘PATH’] + ‘:’ + process.env[‘LAMBDA_TASK_ROOT’];
Run Code Online (Sandbox Code Playgroud)

主要的 Python 脚本调用从这里开始:

const { spawn } = require('child_process');

function calculateSomething(next) {
  var script = spawn('python', ['my_python_script.py', args]);

  script.stdout.on('data', (data) => { doSomething(data); });
  script.on('error', (error) => { console.error(error); });
  script.on('exit', () => { next(); });
}
Run Code Online (Sandbox Code Playgroud)

Python 脚本使用外部库(例如 numpy)运行,因此我必须使用 pip 安装它。

现在:

  • 在 Node.js Lambda 中安装 pip 库需要做什么? …

python node.js aws-lambda

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

无法修复“提供的执行角色无权在 EC2 上调用 CreateNetworkInterface”

我尝试了此答案中的解决方案,但对我不起作用。我收到错误:

提供的执行角色无权调用 EC2 上的 CreateNetworkInterface(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;请求 ID:4c8d047c-2710-4334-86cd-51b7467c6f08)

这是与错误相关的 CloudFormation:

EventLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: !Sub ${DeveloperPrefix}event-lambda-${Environment}-${DeployPhase}
      Handler: EventHandler
      Runtime: java8
      Code:
        S3Bucket: !Ref SharedBucketName
        S3Key: !Sub ${WorkspacePrefix}/event-subscriber-${AppVersion}.jar
        S3ObjectVersion: !Ref EventLambdaS3Version
      Role: !GetAtt EventLambdaRole.Arn
      Environment:
        Variables:
          retry_event_table_name: !Sub "${DeveloperPrefix}${AppName}-${RetryEventTableName}-${Environment}-${DeployPhase}"
          test_enabled: true # TODO: Remove once endpoint provided.
      VpcConfig:
        SecurityGroupIds:
          - !Ref LambdaSecurityGroup
        SubnetIds:
          - Fn::ImportValue: !Sub ${VPCStackName}-SubnetPrivateL
          - Fn::ImportValue: !Sub ${VPCStackName}-SubnetPrivateR
      Timeout: 28
      MemorySize: 256

  EventLambdaRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Sub ${DeveloperPrefix}${AppName}-${Environment}-${DeployPhase}-EventLambdaRole
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service: …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services aws-cloudformation aws-lambda

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

如何解决:“无法解析要使用的 AWS 帐户。它必须在您定义 CDK 时或通过环境进行配置”

我正在尝试运行 CDK 命令来检查本地和远程堆栈的差异。

我正在使用以下命令。

cdk diff --profile saml
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息

Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment
Run Code Online (Sandbox Code Playgroud)

我正在寻找解决此问题的方法。

amazon-s3 amazon-web-services aws-cli aws-lambda aws-cdk

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

aws lambda:使用来自 cli 的有效负载调用

我正在尝试使用 aws cli 调用我的 lambda:

$ aws lambda invoke \
    --function-name soc-update-dynamodb-java \
    --invocation-type Event \
    --payload file://invoke-payload.json \
   response.json
Run Code Online (Sandbox Code Playgroud)

但是,我收到此消息:

调用 Invoke 操作时发生错误 (InvalidRequestContentException):无法将请求正文解析为 json:[Source: (byte[])"E?(?????U???? ?????k.....

payload.json 内容是一个类似 s3 事件的 json:

{
"Records": [
  {
    "eventVersion": "2.0",
    "eventSource": "aws:s3",
    "awsRegion": "eu-central-1",
    "eventTime": "1970-01-01T00:00:00.000Z",
    "eventName": "ObjectCreated:Put",
    "userIdentity": {
      "principalId": "EXAMPLE"
    },
    "requestParameters": {
      "sourceIPAddress": "127.0.0.1"
    },
    "responseElements": {
      "x-amz-request-id": "EXAMPLE123456789",
      "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
    },
    "s3": {
      "s3SchemaVersion": "1.0",
      "configurationId": "testConfigRule",
      "bucket": {
        "name": "soc-connect",
        "ownerIdentity": {
          "principalId": "EXAMPLE"
        },
        "arn": …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cli aws-lambda

14
推荐指数
3
解决办法
4948
查看次数