小编Erm*_*ary的帖子

如何跟踪异步 AWS Lambda 调用的进度/状态?

我有一个 API,用于触发 AWS Lambda 作业。根据请求,API 使用InvocationType='Event'. 此后,我想定期轮询 AWS Lambda 作业是否已完成。

最适合我的架构的方法是将 Lambda 作业的标识符存储在数据库中,并定期检查作业是否完成及其输出是什么。但是,我无法找到如何做到这一点。

如何定期轮询 AWS Lambda 作业的结果,并在完成后查看输出?

我已经研究过使用InvocationType='RequestResponse',但这需要我存储未来,这是我无法在数据库中做到的。

boto amazon-web-services boto3 aws-lambda

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

为什么在尝试使用 Java 连接到 RDS PostgreSQL 数据库时会收到 SocketTimeoutException?

我有一个 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)

java postgresql amazon-ec2 amazon-web-services amazon-rds

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

Azure 存储队列与 Azure 服务总线的有害消息和 DLQ

Azure 队列存储和 Azure 服务在死信队列和有害消息方面有什么区别?

我如何从这些队列中读取消息?

c# azure azureservicebus azure-storage-queues

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

如何使用 AWS Step Functions 将失败任务的输入和错误传递给回退任务?

我正在尝试向我的步骤函数状态机添加一些错误处理,并且我在特定情况下遇到了问题,例如,如果我在某个步骤上失败,我有一个捕获将其发送到另一个函数,但是在该函数我需要使用最后一步输入数据(失败的数据)执行逻辑,但是,我刚刚收到一个错误,有没有办法传递带有错误的输入数据?

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)

error-handling amazon-web-services aws-step-functions

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

AWS Lambda 是否会自动删除 /tmp 中的文件?

AWS会/tmp自动清除目录吗?

有某种flush()功能吗?如果没有,如何从文件夹中删除/删除所有文件/tmp

我有一个 AWS Lambda 函数,可以将文件下载到我的/tmp文件夹中。我解压压缩文件并对所有单个文件进行 gzip 压缩。所有这些都发生在/tmp目录内,然后我再次将 gzip 压缩的文件上传到 S3。

之后,我不再需要文件夹中的文件/tmp并想清除该目录。

如果我/tmp从本地 macOS 计算机打开,我根本看不到任何相关文件,因此我不确定如何检查它们是否已成功删除。

python amazon-web-services tmp aws-lambda

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

为什么我收到“zip 内容不是有效的 UTF-8;” 在 Terraform 中使用 filebase64sha256 时?

我正在尝试使用 Terraform 创建一个 AWS lambda 函数,如下所示

\n
resource "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}\n
Run Code Online (Sandbox Code Playgroud)\n

但它会抛出一个错误:

\n
Call 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.\n
Run Code Online (Sandbox Code Playgroud)\n

我也尝试过"${base64sha256(file("lambda.zip"))}",但仍然遇到同样的错误。

\n

amazon-web-services aws-lambda terraform

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

如何导入导出到 S3 的 DynamoDB 表 JSON?

我已使用 AWS 控制台中的导出到 S3 导出了 DynamoDB 表。格式为 DynamoDB JSON,文件包含 250 个项目。

我想将数据导入到另一个表中。

由于 AWS 控制台中没有导入功能,我想使用 AWS CLI,但这似乎需要另一种格式并且仅限于 25 个项目的批次。

有没有办法在 AWS CLI 中简单地实现这一点?

将数据导入另一个表的最佳方法是什么?

我认为由于 AWS 控制台允许您执行导出,因此必须有一些简单的方法来导入此数据。

注意:由于我所在的区域不支持 AWS Data Pipeline,因此我无法使用它。

amazon-s3 amazon-web-services amazon-dynamodb aws-cli

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

为什么 AWS Bedrock Cohere 模型的 InvokeModelCommand 返回数字而不是文本?

我有一个在 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)

这应该如何解释或使用?

amazon-web-services aws-lambda aws-sdk-js amazon-bedrock

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

使用 PostGIS 时,为什么英国县的几何图形会出现在几内亚湾?

我在 AWS Postgres 服务器中有两个表(我正在使用 DBeaver 进行查询)。

  • 表 1 是我从名为 的 S3 存储桶导入的 shapefile uk_counties,其中列出了英国所有县的几何图形(SRID = 27700 - shapefile 可以在此处找到)。

  • 表 2 被称为demand_origin并 包含字段origin_city(英国的地点)和两个字段latitudelongitude(其中包含 中地点的纬度和经度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

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

为什么我的 Lambda 函数在一次调用中发送了两次 SQS 消息?

我只需通过一次调用将一条消息传递到标准(不是 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

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