标签: aws-lambda

我们如何在 AWS 控制台中按“最新”对 CloudWatch 流日志进行排序?

有没有办法在 AWS 控制台中按“最近”到最旧来过滤 CloudWatch 日志流?我不得不向下滚动得难以置信的远才能看到我最近的日志消息。

我尝试过按 30 秒 - 5 分钟进行过滤,现在可以使用,我只是认为可能有一种更简单的方法来列出所有日志流,这些日志流从最近的顶部而不是最旧的开始。

amazon-web-services aws-lambda amazon-cloudwatchlogs

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

Lambda 服务抛出错误执行角色无权在 SQS 上调用 receiveMessage

我有一个 SQS 队列,我想在消息到达队列时触发 lambda 函数。我已经编写了 lambda 函数,当我单击“测试”按钮时它可以成功运行。当我转到 SQS 并尝试将其配置为 lambda 触发器时,我看到以下错误消息。

我使用相同的用户和角色创建了 SQS 队列和 lambda 函数,并且 lambda 函数对同一角色具有执行权限。

我还添加了 SQS receiveMessage 权限,但它似乎没有什么区别,除非我在设置时做错了什么。

什么可能导致问题?

谢谢你的帮助

在此处输入图片说明

amazon-sqs amazon-web-services aws-lambda

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

AWS Lambda@Edge 不记录

我已将查看器请求和源响应 Lambda 函数部署到 CloudFront 分配,这些函数正在触发,但未记录到 CloudWatch。我花了大量时间研究这个主题,并浏览了其他帖子的所有建议,包括:

  • 检查所有区域的日志,因为我知道它们 CloudWatch 日志将在 labmda@edge 函数运行的区域中创建。没有登录任何一个。
  • 我已检查 AWSServiceRoleForCloudFrontLogger 角色是否存在。

有趣的是,当我故意将错误编码到一个 Lambda 函数中时,我确实在一个名为/aws/cloudfront/LambdaEdge/<cloudfront distribution id>包含错误日志的组中创建了日志,但是这里的 console.log 语句没有输出。

在我的一生中,我无法弄清楚如何将所有请求(成功和失败)记录到 CloudWatch,其中包含使用 console.log() 的调试语句。

AWSServiceRoleForCloudFrontLogger 包含一个策略AWSCloudFrontLogger:

    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:/aws/cloudfront/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

编辑:

以下是 AWS 支持建议的 AWS 角色。我可以确认这有效并解决了问题。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:*"
            ]
        }
    ]
}```
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudfront aws-lambda aws-lambda-edge

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

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

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

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

提前致谢

java amazon-web-services aws-lambda

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

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 - 使用 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
查看次数