小编Ent*_*ord的帖子

格式错误的 Lambda 代理响应 - Python

我知道这是多个问题的重复,但由于某种原因,我无法弄清楚如何将这些解决方案应用于我的问题。该函数在 Lambda 测试中运行良好,但在通过 API Gateway 测试时失败。

import boto3
import json
import decimal
from boto3.dynamodb.conditions import Key, Attr

def lambda_handler(event, context):
    dynamodb = boto3.resource('dynamodb')

    table = dynamodb.Table('some_table')

    result = table.scan()

    response = {
        "status code": 200,
        "body": result["Items"]
    }

    return response
Run Code Online (Sandbox Code Playgroud)

这是错误日志

Execution log for request 
Tue Dec 31 22:47:10 UTC 2019 : Starting execution for request: 
Tue Dec 31 22:47:10 UTC 2019 : HTTP Method: GET, Resource Path: /notes
Tue Dec 31 22:47:10 UTC 2019 : Method request path: {} …
Run Code Online (Sandbox Code Playgroud)

python aws-lambda aws-api-gateway

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

如何在无服务器框架编写的 AWS Step Functions 中引用动态 lambda ARN?

编辑:刚刚找到这个https://github.com/serverless-operations/serverless-step-functions/issues/209基本上就是这个例子,但我不想对 ARN 进行硬编码,而是想使用输入变量(如果有意义的话)。

这是上下文:

使用 Serverless 的错误目标,错误负载会发送到 SQS,SQS 会触发 lambda,启动状态机来执行重试。

例如,如果 Lambda A 失败,该故障将发送到 SQS -> Lambda B,这会触发状态机重试 Lambda A。

我在 Serverless.yml 中定义我的状态机,如下所示(这是我迄今为止一直在尝试的):

stepFunctions:
  stateMachines:
    MyStateMachine:
      name: RetryLambdaMachine
      definition:
        Comment: Example to test retries
        StartAt: StepOne
        States:
          StepOne:
            Type: Task
            Resource: arn:aws:states:::lambda:invoke
            Parameters:
            - FunctionName.$: $$.lambdaArn 
            #### ^^ This is where I need Lambda A to be referenced ####
            Retry:
            - ErrorEquals: 
              - States.ALL
              MaxAttempts: 2
            Catch:
            - ErrorEquals: ["States.ALL"]
              Next: CatchAllFallback
            End: true
          CatchAllFallback:
            Type: Task
            Resource: …
Run Code Online (Sandbox Code Playgroud)

serverless-framework aws-step-functions

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

如何从 AWS Lambda 函数访问 YAML 文件中的变量?

我正在使用无服务器框架来测试我的 lamdba 函数,但它要求我访问我的 yaml 文件以获取特定变量。为了清楚起见,我将添加文件和下面的代码:

我需要访问的 YAML 变量是 tableName

environment:
  tableName: notes_project
Run Code Online (Sandbox Code Playgroud)

这是 lambda 函数:

import json
import boto3
import uuid

dynamodb = boto3.resource('dynamodb')

table = dynamodb.Table('notes_project')

def lambda_handler(event, context):

    data = json.loads(event['body'])

    item = {
        'user_id': event['requestContext']['identity']['cognitoIdentityId'],
        'note_id': str(uuid.uuid1()),
        'note_text': data
    }

    table.put_item( Item = item)
Run Code Online (Sandbox Code Playgroud)

目前,您可以看到表名是硬编码的,但我想避免这种情况。

到目前为止我尝试过的:

我已经查看了在 python获取 yaml 键值和其他涉及 os.environ 的建议,但如果我要将代码部署到 AWS,我不确定这些是否是正确的选项。我对 lambda 代码在部署后如何访问这些 yaml 变量几乎一无所知。一个解释将不胜感激。

python aws-lambda serverless-framework

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

如何使用香草JS检查元素是否具有多个类

我试图弄清楚如何编写一个类似以下内容的if语句:

if (element contains class 1 && class 2) {
   // do this
}
Run Code Online (Sandbox Code Playgroud)

如何编写if语句来检查多个类?

有没有一种方法可以让.contains方法检查多个类?

到目前为止,我发现了什么:

如何在没有jQuery的情况下检查javascript中多个类元素的类

问题是,它似乎正在返回该元素包含的所有类的数组,这不是我想要的。我需要函数来检查元素是否包含我为其提供的类。

在我看来,其中一种解决方案看起来像是在要求我们创建自己的函数来执行此操作,但是JS上是否有本机方法可以解决问题?

我对这些东西还很陌生,非常感谢你们在回答我的问题时表现出的耐心。

javascript

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