在本文中,我们将带你了解处理JavaAWSLambda的关闭在这篇文章中,我们将为您详细介绍处理JavaAWSLambda的关闭的方方面面,并解答awscognitojava常见的疑惑,同时我们还将给
在本文中,我们将带你了解处理 Java AWS Lambda 的关闭在这篇文章中,我们将为您详细介绍处理 Java AWS Lambda 的关闭的方方面面,并解答aws cognito java常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的@aws-sdk/client-lambda] - 调用 Lambda - Unit8Array 中的有效负载响应 - 转换为字符串、AWS API 网关 + SQS + Lambda + 将响应从 Lambda 返回到 API、AWS CDK - 自定义 aws-lambda-nodejs 和 aws-lambda-python 使用的 Dockerfile、AWS Kinesis Lambda DynamoDB我正在尝试使用以下代码通过 Lambda 函数从 Kinesis 摄取数据 DynamoDB。
本文目录一览:- 处理 Java AWS Lambda 的关闭(aws cognito java)
- @aws-sdk/client-lambda] - 调用 Lambda - Unit8Array 中的有效负载响应 - 转换为字符串
- AWS API 网关 + SQS + Lambda + 将响应从 Lambda 返回到 API
- AWS CDK - 自定义 aws-lambda-nodejs 和 aws-lambda-python 使用的 Dockerfile
- AWS Kinesis Lambda DynamoDB我正在尝试使用以下代码通过 Lambda 函数从 Kinesis 摄取数据 DynamoDB
处理 Java AWS Lambda 的关闭(aws cognito java)
如何解决处理 Java AWS Lambda 的关闭
有没有办法挂钩 Lambda 的关闭?我正在打开一个数据库连接并想让它保持打开状态,但我想确保它在 Lambda 终止时关闭。
解决方法
不,您不能挂钩 Lambda 执行上下文的关闭。
Lambda 自行处理并决定是否以及何时重用或销毁执行上下文。
您可能不得不依靠连接自行超时。
,您可能对 Lambda 实例被终止而不是单个调用结束时引发的事件感兴趣,对吗?虽然您有两种选择,但我怀疑它们是否会帮助您..
您可以使用上下文方法 getRemainingTimeInMillis()
(指向 Node.js 的链接,但在其他编程语言中类似)来查明 Lambda 函数的当前调用何时超时。这可能有助于清理事物或充分利用 Lambda 函数的时间。我不建议在每次调用结束时清理您的数据库连接,因为这样您就不会在以后的调用中重用它们,这会降低您的 Lambda 函数的速度。但是,如果您对此感到满意,那就去做吧。请记住,这仅在您的函数正在运行时才有效。一旦您返回响应,您就无法执行任何清理操作,因为您的 Lambda 函数将进入“睡眠模式”。您需要在退货之前执行此操作。
或者,您可以使用 Extensions API。它提供一个关闭阶段,并通过 Shutdown
事件触发扩展。但是,由于扩展位于之外你的函数(而不是你的函数代码中),我不确定你是否有机会用这种方法清理任何数据库连接......另见{ {3}} 了解更多信息。
@aws-sdk/client-lambda] - 调用 Lambda - Unit8Array 中的有效负载响应 - 转换为字符串
如何解决@aws-sdk/client-lambda] - 调用 Lambda - Unit8Array 中的有效负载响应 - 转换为字符串
我正在使用 @aws-sdk/client-lambda
npm 包来调用 lambda。我有两个 Lambda。 Lambda A 和 Lambda B。Lambda A 正在尝试调用 Lambda B。
Lambda A 通过运行以下代码调用 Lambda B:
const { LambdaClient,InvokeCommand } = require(''@aws-sdk/client-lambda'');
module.exports = {
getGitHubToken: async () => {
const client = new LambdaClient({ region: process.env.REGION });
const params = {
FunctionName: process.env.GITHUB_TOKEN_FUNCTION,LogType: ''Tail'',Payload: '''',};
const command = new InvokeCommand(params);
try {
const { Payload } = await client.send(command);
console.log(Payload);
return Payload;
} catch (error) {
console.error(error.message);
throw error;
}
},};
来自 Lambda B 的预期响应应如下所示:
{
statusCode: 200,body: JSON.stringify({
token: ''123'',}),};
但是,Payload 看起来是从 console.log(Payload);
行返回的:
我查看了 AWS SDK Website,它看起来像 Payload
返回一个 Uint8Array
。我猜这是因为它来自一个承诺?
我曾尝试执行 Payload.toString()
,但是它返回的只是 Unit8Array
中的值的字符串。例如:
2021-04-13T14:32:04.874Z worker:success Payload: 123,34,115,116,97,117,67,111,100,101,58,50,48,44,98,121,123,92,107,110,103,104,95,114,51,65,109,99,122,86,85,74,66,52,90,68,57,118,119,71,75,79,69,72,125,125
我的问题:
如何将 Unit8Array
中的数据解析为我期望从 Lambda 响应中获得的数据?哪个是 JSON 对象?
我已通过转到 CloudWatch 确认请求的 Lambda(在本例中为 Lambda B)正确返回数据。谢谢。
解决方法
好的,我找到了让这个工作的方法。
您必须指定一个文本编码器:
const asciiDecoder = new TextDecoder(''ascii'');
然后解码它看起来像这样:
const data = asciiDecoder.decode(Payload);
我在他们的存储库中记录了一个 issue,询问为什么模块中没有包含它。我将发布有关此方面任何动向的最新消息。
AWS API 网关 + SQS + Lambda + 将响应从 Lambda 返回到 API
如何解决AWS API 网关 + SQS + Lambda + 将响应从 Lambda 返回到 API
我想使用 API Gateway 向 SQS 发送消息,然后需要触发 Lambda。在 Lambda 中完成计算后,我需要将结果传回 API Gateway。换句话说,是这样的:
Get request --> Gateway API --> SQS --> Lambda --> (back to the same SQS?) --> Gateway API
我已经设置了所有必要的权限,这意味着我可以调用网关 API 并向 SQS 发送消息,然后 SQS 将其发送给 Lambda(我可以在 Cloudwatch 中看到 Lambda 收到了消息)。但是,我无法将 Lambda 响应返回给网关 API...
有人对此有一些建议/教程/博客文章吗?我观看了各种 YouTube 视频并搜索了 SO 上的帖子,但没有找到解决我的问题的方法。
解决方法
AWS Lambda 可以处理大量并发调用。默认值为 1000(一千),可以通过支持票 to "Hundreds of thousands" 增加。
如果您想使用 SQS 来平滑间歇性请求峰值,那么 Lambda 函数调用将与调用方/客户端的 API 网关调用异步,您需要使用其他方式来反馈向 API 网关调用方/客户端发送 Lambda 调用结果。
其中一种可能是回调 URL,您的 Lambda 在处理调用后将在调用方/客户端调用该 URL。或者您可以将 lambda 调用结果存储在某处(例如 S3 或 DynamoDB),调用方/客户端可以使用轮询定期询问调用结果(检查它是否准备好,如果准备好,则检索它)。
无论哪种方式,一旦您使用 SQS 将 API 网关调用与您的 Lambda 函数通过 SQS 消息对这些调用的处理分离,那么对 Lambda 调用的处理将异步 到 API 网关调用方/客户端请求。因此,API Gateway 调用方/客户端的 HTTP 请求将立即返回,无需等待 Lambda 调用结果。
AWS CDK - 自定义 aws-lambda-nodejs 和 aws-lambda-python 使用的 Dockerfile
如何解决AWS CDK - 自定义 aws-lambda-nodejs 和 aws-lambda-python 使用的 Dockerfile
是否可以将包 Dockerfile
使用的 aws-lambda-nodejs/aws-lambda-python
更改为包依赖项?
我目前的问题是我们在 CI/CD 服务器上使用 aws-lambda-python
,其中 RUN pip install --upgrade pip
由于服务器上的配置错误而失败。我们对服务器几乎没有控制,所以想单独构建我们自己的镜像来规避这个问题。
AWS Kinesis Lambda DynamoDB我正在尝试使用以下代码通过 Lambda 函数从 Kinesis 摄取数据 DynamoDB
如何解决AWS Kinesis Lambda DynamoDB我正在尝试使用以下代码通过 Lambda 函数从 Kinesis 摄取数据 DynamoDB?
AWS Kinesis Lambda DynamoDB。我正在尝试使用以下代码通过 Lambda 函数从 Kinesis 流中将数据摄取到 DynamoDB。 但是数据没有在 DynamoDB 中被摄取,执行后在 lambda 函数中没有得到异常。 Lambda 函数已在 Kinesis Stream 上触发。
任何人都可以提出建议。
import boto3
import datetime
import base64
import json
def lambda_handler(event,context):
try:
dynamo_db = boto3.resource(''dynamodb'')
table = dynamo_db.Table(''table'')
for record in event["Records"]:
encoded = record["kinesis"]["data"]
decoded = json.loads(base64.b64decode(encoded).decode("utf-8"))
for i in decoded:
record = i["demo-stream"]
for j in record:
data = {
''timestamp'': ["timestamp"],''name'': ["name"],''age'': ["age"]
}
# table.put_item(Item=data)
with table.batch_writer() as batch_writer:
batch_writer.put_item(Item=data)
except Exception as e:
print(str(e))
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
今天关于处理 Java AWS Lambda 的关闭和aws cognito java的介绍到此结束,谢谢您的阅读,有关@aws-sdk/client-lambda] - 调用 Lambda - Unit8Array 中的有效负载响应 - 转换为字符串、AWS API 网关 + SQS + Lambda + 将响应从 Lambda 返回到 API、AWS CDK - 自定义 aws-lambda-nodejs 和 aws-lambda-python 使用的 Dockerfile、AWS Kinesis Lambda DynamoDB我正在尝试使用以下代码通过 Lambda 函数从 Kinesis 摄取数据 DynamoDB等更多相关知识的信息可以在本站进行查询。
本文标签: