我有一个 API,用于触发 AWS Lambda 作业。根据请求,API 使用InvocationType='Event'. 此后,我想定期轮询 AWS Lambda 作业是否已完成。
最适合我的架构的方法是将 Lambda 作业的标识符存储在数据库中,并定期检查作业是否完成及其输出是什么。但是,我无法找到如何做到这一点。
如何定期轮询 AWS Lambda 作业的结果,并在完成后查看输出?
我已经研究过使用InvocationType='RequestResponse',但这需要我存储未来,这是我无法在数据库中做到的。
我有一个 Spring 应用程序,我试图在 AWS 上托管,几天来我一直在努力配置。
我有一个 EC2 实例,并且能够通过 SSH 连接到它。我还在 AWS 中设置了 Postgres RDS 数据库,但我无法使用 IDE 中的代码连接到它,因此我尚未将应用程序上传到 EC2 实例。
我认为问题出在我的安全组上,正如application.propertiesAWS 文档和其他指南所建议的那样。
我一直试图了解安全组的来龙去脉,但这是一场斗争。我认为在实际生产环境中精确地使用我的 SG 极其重要,但我尝试仅将此应用程序用作演示。
任何允许连接到 RDS 数据库的松散配置现在都适合我。
application.properties
spring.datasource.url=jdbc:postgresql://myEndpoint:myPort/myAppName
spring.datasource.username=myDbUsername
spring.datasource.password=myDbPassword
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgresPlusDialect
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true
spring.session.jdbc.initialize-schema=always
spring.session.store-type=jdbc
spring.session.jdbc.table-name=spring_session
server.servlet.session.timeout=30m
Run Code Online (Sandbox Code Playgroud)
我尝试了多种 SG 配置,这里有 2 个示例:
RDS 配置 1:
Public accessibility: Yes
VPC Security Groups: launch-wizard-1 (sg-id-1) / Active
Run Code Online (Sandbox Code Playgroud)
sg-id-1
Inbound rules:
rule 1 -- IP version: IPv4, Type: SSH, Protocol: TCP, Port range: MySSHPort, Source: 0.0.0.0/0 …Run Code Online (Sandbox Code Playgroud) Azure 队列存储和 Azure 服务在死信队列和有害消息方面有什么区别?
我如何从这些队列中读取消息?
我正在尝试向我的步骤函数状态机添加一些错误处理,并且我在特定情况下遇到了问题,例如,如果我在某个步骤上失败,我有一个捕获将其发送到另一个函数,但是在该函数我需要使用最后一步输入数据(失败的数据)执行逻辑,但是,我刚刚收到一个错误,有没有办法传递带有错误的输入数据?
Send Notification:
Type: Task
Resource: !GetAtt CommunicationSendCertifiedEmail.Arn
Retry:
- ErrorEquals:
- TierOneError
IntervalSeconds: 2
MaxAttempts: 9
BackoffRate: 1.5
- ErrorEquals:
- TierTwoError
IntervalSeconds: 4
MaxAttempts: 6
BackoffRate: 1.5
- ErrorEquals:
- TierThreeError
IntervalSeconds: 4
MaxAttempts: 3
BackoffRate: 2
- ErrorEquals:
- States.Timeout
- States.Runtime
- States.TaskFailed
- Lambda.ServiceException
IntervalSeconds: 4
MaxAttempts: 3
BackoffRate: 2
Catch:
- ErrorEquals:
- States.ALL
Next: Send Email Notification
Run Code Online (Sandbox Code Playgroud)
在“发送电子邮件通知”上,我需要在执行失败之前输入,但正如我之前所说,我只是得到这样的信息:
{
"Error": "Error",
"Cause": "{\"errorType\":\"Error\",\"errorMessage\":...
}
Run Code Online (Sandbox Code Playgroud)
我想要得到这样的东西:
{
"data": "{...}",
"Error": "Error",
"Cause": "{\"errorType\":\"Error\",\"errorMessage\":...
} …Run Code Online (Sandbox Code Playgroud) AWS会/tmp自动清除目录吗?
有某种flush()功能吗?如果没有,如何从文件夹中删除/删除所有文件/tmp?
我有一个 AWS Lambda 函数,可以将文件下载到我的/tmp文件夹中。我解压压缩文件并对所有单个文件进行 gzip 压缩。所有这些都发生在/tmp目录内,然后我再次将 gzip 压缩的文件上传到 S3。
之后,我不再需要文件夹中的文件/tmp并想清除该目录。
如果我/tmp从本地 macOS 计算机打开,我根本看不到任何相关文件,因此我不确定如何检查它们是否已成功删除。
我正在尝试使用 Terraform 创建一个 AWS lambda 函数,如下所示:
\nresource "aws_lambda_function" "dev" {\n role = aws_iam_role.dev.arn\n handler = var.handler\n runtime = var.runtime\n filename = "lambda.zip"\n function_name = var.function_name\n source_code_hash = filebase64sha256(file("lambda.zip"))\n}\nRun Code Online (Sandbox Code Playgroud)\n但它会抛出一个错误:
\nCall to function "file" failed: contents of lambda.zip are not valid UTF-8; use the filebase64 function to obtain the Base64 encoded contents or the other file\n\xe2\x94\x82 functions (e.g. filemd5, filesha256) to obtain file hashing results instead.\nRun Code Online (Sandbox Code Playgroud)\n我也尝试过"${base64sha256(file("lambda.zip"))}",但仍然遇到同样的错误。
我已使用 AWS 控制台中的导出到 S3 导出了 DynamoDB 表。格式为 DynamoDB JSON,文件包含 250 个项目。
我想将数据导入到另一个表中。
由于 AWS 控制台中没有导入功能,我想使用 AWS CLI,但这似乎需要另一种格式并且仅限于 25 个项目的批次。
有没有办法在 AWS CLI 中简单地实现这一点?
将数据导入另一个表的最佳方法是什么?
我认为由于 AWS 控制台允许您执行导出,因此必须有一些简单的方法来导入此数据。
注意:由于我所在的区域不支持 AWS Data Pipeline,因此我无法使用它。
我有一个在 AWS Lambda 中调用的文件,bedrock.mjs其中包含以下代码:
import {
BedrockRuntimeClient,
InvokeModelCommand,
} from "@aws-sdk/client-bedrock-runtime"
export const callBedrock = async (prompt, max_tokens, temperature) => {
const client = new BedrockRuntimeClient()
const input = {
modelId: "cohere.command-text-v14",
contentType: "application/json",
accept: "application/json",
body: JSON.stringify({
prompt,
max_tokens,
temperature
})
}
const command = new InvokeModelCommand(input)
const response = await client.send(command)
return response
}
Run Code Online (Sandbox Code Playgroud)
当我打电话时callBedrock("Respond with a nice greeting", 100, 0.2),body回复是:
{\"0\":123,\"1\":34,\"2\":103,\"3\":101,\"4\":110,\"5\":101,\"6\":114,\"7\":97,\"8\":116,\"9\":105,\"10\":111,\"11\":110,\"12\":115,\"13\":34,\"14\":58,\"15\":91,\"16\":123,\"17\":34,\"18\":105,\"19\":100,\"20\":34,\"21\":58,\"22\":34,\"23\":98,\"24\":98,\"25\":101,\"26\":54,\"27\":56,\"28\":49,\"29\":54,\"30\":101,\"31\":45,\"32\":48,\"33\":99,\"34\":49,\"35\":50,\"36\":45,\"37\":52,\"38\":50,\"39\":53,\"40\":99,\"41\":45,\"42\":56,\"43\":56,\"44\":101,\"45\":52,\"46\":45,\"47\":98,\"48\":102,\"49\":49,\"50\":51,\"51\":49,\"52\":101,\"53\":98,\"54\":56,\"55\":49,\"56\":49,\"57\":100,\"58\":50,\"59\":34,\"60\":44,\"61\":34,\"62\":116,\"63\":101,\"64\":120,\"65\":116,\"66\":34,\"67\":58,\"68\":34,\"69\":32,\"70\":72,\"71\":101,\"72\":108,\"73\":108,\"74\":111,\"75\":33,\"76\":32,\"77\":72,\"78\":111,\"79\":119,\"80\":32,\"81\":99,\"82\":97,\"83\":110,\"84\":32,\"85\":73,\"86\":32,\"87\":104,\"88\":101,\"89\":108,\"90\":112,\"91\":32,\"92\":121,\"93\":111,\"94\":117,\"95\":32,\"96\":116,\"97\":111,\"98\":100,\"99\":97,\"100\":121,\"101\":63,\"102\":34,\"103\":125,\"104\":93,\"105\":44,\"106\":34,\"107\":105,\"108\":100,\"109\":34,\"110\":58,\"111\":34,\"112\":99,\"113\":97,\"114\":100,\"115\":99,\"116\":57,\"117\":50,\"118\":102,\"119\":51,\"120\":45,\"121\":53,\"122\":50,\"123\":102,\"124\":97,\"125\":45,\"126\":52,\"127\":56,\"128\":101,\"129\":56,\"130\":45,\"131\":98,\"132\":100,\"133\":57,\"134\":54,\"135\":45,\"136\":48,\"137\":57,\"138\":57,\"139\":57,\"140\":102,\"141\":98,\"142\":55,\"143\":56,\"144\":53,\"145\":97,\"146\":101,\"147\":101,\"148\":34,\"149\":44,\"150\":34,\"151\":112,\"152\":114,\"153\":111,\"154\":109,\"155\":112,\"156\":116,\"157\":34,\"158\":58,\"159\":34,\"160\":82,\"161\":101,\"162\":115,\"163\":112,\"164\":111,\"165\":110,\"166\":100,\"167\":32,\"168\":119,\"169\":105,\"170\":116,\"171\":104,\"172\":32,\"173\":97,\"174\":32,\"175\":110,\"176\":105,\"177\":99,\"178\":101,\"179\":32,\"180\":103,\"181\":114,\"182\":101,\"183\":101,\"184\":116,\"185\":105,\"186\":110,\"187\":103,\"188\":34,\"189\":125}
Run Code Online (Sandbox Code Playgroud)
这应该如何解释或使用?
我在 AWS Postgres 服务器中有两个表(我正在使用 DBeaver 进行查询)。
表 1 是我从名为 的 S3 存储桶导入的 shapefile uk_counties,其中列出了英国所有县的几何图形(SRID = 27700 - shapefile 可以在此处找到)。
表 2 被称为demand_origin并 包含字段origin_city(英国的地点)和两个字段latitude和longitude(其中包含 中地点的纬度和经度origin_city)。
通过加入uk_counties(shapefile) 和demand_origin,我想通过查找各自的经度与县的 shapefile 相交的位置,将一个县分配给英国的各个地方。
问题是这个连接一直显示为空。经过大量调查后,shapefile 中的几何图形似乎被映射到几内亚湾(纬度 = 0,经度 = 0 及其周围)。
请参阅莱斯特的 shapefile 作为示例:
我的猜测是,几何图形使用的是北距/西距,而不是纬度/经度,因此 PostGIS 将这些形状映射到 lat=0、long=0 左右,因此可能需要重新校准。
以下是莱斯特和其他县的几何形状的片段:
| ctua23nm | 几何学 |
|---|---|
| 约克 | 多边形 ((464216.99650000036 462110.9015999995, 464266.20299999975 462093.0965999998, 464270.3008000003 462094.3962999992, 46428 9.8992999997 4 |
| 德比 | 多边形 ((434972.3005999997 341311.7999000009, 434986.3008000003 341310.40029999986, … |
postgresql postgis spatial-query amazon-web-services amazon-rds
我只需通过一次调用将一条消息传递到标准(不是 FIFO,但与问题无关)SQS 队列。
但是,下面的代码通过 1 个调用发送 2 条消息。
const AWS = require('aws-sdk')
AWS.config.update({region: process.env.AWS_REGION})
const sqs = new AWS.SQS({apiVersion: '2012-11-05'});
async function sendToSQSEvent(body,attributes=null){
var m_body
if (attributes != null)
{
m_body = {
body : body,
attributes : attributes
};
}
else{
m_body = body;
}
m_body = JSON.stringify(m_body);
var params = {
// DelaySeconds: 0, <-- i try but only delay reception
MessageAttributes: {
"Title": {
DataType: "String",
StringValue: "TIME_OUT"
},
"Author": {
DataType: "String",
StringValue: …Run Code Online (Sandbox Code Playgroud) javascript amazon-sqs amazon-web-services es6-promise aws-lambda
aws-lambda ×5
amazon-rds ×2
postgresql ×2
amazon-ec2 ×1
amazon-s3 ×1
amazon-sqs ×1
aws-cli ×1
aws-sdk-js ×1
azure ×1
boto ×1
boto3 ×1
c# ×1
es6-promise ×1
java ×1
javascript ×1
postgis ×1
python ×1
terraform ×1
tmp ×1