Amazon web services 是否可以使用网关URL直接向DynamoDB表发出POST请求?

Amazon web services 是否可以使用网关URL直接向DynamoDB表发出POST请求?,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我有一个应用程序,它接收一个网关url,并直接向带有一些数据的url发出POST请求。我想知道是否有一个特定的url用于向DynamoDB发出POST请求 我联系了AWS支持部门,他们将我与此联系起来,但我仍然对如何做到这一点感到困惑 更多关于该应用程序的信息,并通过它发出发帖请求。我相信您发布的文章包含了您需要的信息 请求格式 DynamoDB低级API接受HTTP(S)POST请求作为输入。AWS SDK为您构建这些请求 假设您有一个名为Pets的表,其中的键模式由AnimalType(分区

我有一个应用程序,它接收一个网关url,并直接向带有一些数据的url发出POST请求。我想知道是否有一个特定的url用于向DynamoDB发出POST请求

我联系了AWS支持部门,他们将我与此联系起来,但我仍然对如何做到这一点感到困惑


更多关于该应用程序的信息,并通过它发出发帖请求。

我相信您发布的文章包含了您需要的信息

请求格式 DynamoDB低级API接受HTTP(S)POST请求作为输入。AWS SDK为您构建这些请求

假设您有一个名为Pets的表,其中的键模式由AnimalType(分区键)和Name(排序键)组成。这两个属性都是字符串类型。要从Pets检索项目,AWS SDK构造以下请求

POST / HTTP/1.1
Host: dynamodb.<region>.<domain>;
Accept-Encoding: identity
Content-Length: <PayloadSizeBytes>
User-Agent: <UserAgentString>
Content-Type: application/x-amz-json-1.0
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature>
X-Amz-Date: <Date> 
X-Amz-Target: DynamoDB_20120810.GetItem

{
    "TableName": "Pets",
    "Key": {
        "AnimalType": {"S": "Dog"},
        "Name": {"S": "Fido"}
    }
}
POST/HTTP/1.1
主持人:dynamodb..,。。;
接受编码:标识
内容长度:
用户代理:
内容类型:application/x-amz-json-1.0
授权:AWS4-HMAC-SHA256凭证=,签名头=,签名=
X-Amz-Date:
X-Amz-Target:DynamoDB_20120810.GetItem
{
“表名”:“宠物”,
“关键”:{
“AnimalType”:{“S”:“Dog”},
“名称”:{“S”:“Fido”}
}
}

您很可能无法让Ruuvi网关将数据直接发布到您的DynamoDB表中

虽然完全可以让任何可以发出HTTP请求的客户端与DynamoDB接口,但发出成功请求的一个要求是请求包含有效的AWS SigV4签名。此签名特定于每个请求,必须基于请求的内容(包括头)生成,并且必须与请求时间相关

要阅读有关如何自己生成SigV4签名的更多信息,请参阅AWS文档中的一些信息:

还有一个演练,您可以按照该演练了解所需的具体内容:

因此,除非Ruuvi网关能够代表您生成SigV4签名,否则您将需要一些中间技术来接收数据并发送到Dynamo

例如,您可以设置一个由Lambda函数支持的awsapi网关来接收数据,执行任何您想要的转换,然后发布到DynamoDB。或者,您可以启动一个小型EC2实例,部署一个Nginx反向代理,并将请求提供给您选择的一些库存(节点、Python、PHP、Java、.NET)和进程


<>你必须考虑的是如何从RuuVi网关验证这些请求,这样你就不会在系统中获取垃圾。Api网关有一些很好的功能,比如限制规则,甚至支持授权过程,但同样,不确定Ruuvi网关将如何与需要身份验证密钥的任何东西集成。也许它们至少可以在头中传递某种秘密,只要您将摄取端点作为SSL端点公开,你会得到一些保护。YMMV

为什么不请AWS支持进一步解释?您想使用API网关吗?@jellycsc是的,我会再试一次。@Mercin API网关会给我一个URL来向表发出POST请求吗?是的,看起来我必须创建一个lambda函数。