我知道这是多个问题的重复,但由于某种原因,我无法弄清楚如何将这些解决方案应用于我的问题。该函数在 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) 编辑:刚刚找到这个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) 我正在使用无服务器框架来测试我的 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 变量几乎一无所知。一个解释将不胜感激。
我试图弄清楚如何编写一个类似以下内容的if语句:
if (element contains class 1 && class 2) {
// do this
}
Run Code Online (Sandbox Code Playgroud)
如何编写if语句来检查多个类?
有没有一种方法可以让.contains方法检查多个类?
到目前为止,我发现了什么:
如何在没有jQuery的情况下检查javascript中多个类元素的类
问题是,它似乎正在返回该元素包含的所有类的数组,这不是我想要的。我需要函数来检查元素是否包含我为其提供的类。
在我看来,其中一种解决方案看起来像是在要求我们创建自己的函数来执行此操作,但是JS上是否有本机方法可以解决问题?
我对这些东西还很陌生,非常感谢你们在回答我的问题时表现出的耐心。