我已经设置了我的 API 网关并将它连接到我的 lambda 函数
我将 url 设置为 {id} 并希望将此参数传递给 lambda,
然而,即使在使用默认模板和自定义模板尝试多个集成请求后,lambda 仍然无法检测到 api 网关(id)中传递的参数
我试过将 id 分配给我的节点 js lambda 函数中的不同参数,将其映射到 path.params.id 和其他变量,甚至尝试了字符串查询,但仍然没有在 lambda 中检测到任何想法?
javascript amazon-web-services node.js aws-lambda aws-api-gateway
我正在设置一个 AWS Lambda 函数来连接到我的 DynamoDB。为了访问它,我还设置了一个 API 网关。
当我测试它时,lambda 似乎工作。因此,我认为问题出在 API 网关设置中。
对于 lambda,我配置了以下测试事件:我配置了一个如下所示的测试事件:
{
"httpMethod": "GET"
}
Run Code Online (Sandbox Code Playgroud)
此测试事件给了我以下响应:
Response:
{
"statusCode": "200",
"body": "{\"Items\":[{\"id\":1,\"brand\":\"Test brand\",\"title\":\"Test product\"}],\"Count\":1,\"ScannedCount\":1}",
"headers": {
"Content-Type": "application/json"
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试在 lambda 管理控制台中自动创建 API 网关。重新创建 lambda 和 API 网关。
拉姆达函数:
console.log('Loading function');
const doc = require('dynamodb-doc');
const dynamo = new doc.DynamoDB();
/**
* Demonstrates a simple HTTP endpoint using API Gateway. You have full
* access to the request and response payload, including headers and …Run Code Online (Sandbox Code Playgroud) 我必须创建许多 AWS apigateway api。所有 api 都将使用 Lambda 函数进行调用。这些新的 api 还将包括以下常见步骤。
这是 apigateway 克隆 API 概要。
SYNOPSIS
create-rest-api
--name <value>
[--description <value>]
[--clone-from <value>]
[--binary-media-types <value>]
[--minimum-compression-size <value>]
[--api-key-source <value>]
[--endpoint-configuration <value>]
[--policy <value>]
[--api-version <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
Run Code Online (Sandbox Code Playgroud)
如何从 CLI 的现有 apigateway API 克隆 apigateway API 并避免执行上述所有重复步骤。
我有一个用例,其中将有一个网站托管在 AWS S3存储桶上,
此S3 网站将调用 API以获取要呈现的数据。
在 AWS 无服务架构的情况下,我们通常在 AWS Lambda 函数前面有一个 API 网关来处理和返回所需的数据。
AWS 去年推出了 API Gateway Private Endpoints - https://aws.amazon.com/blogs/compute/introducing-amazon-api-gateway-private-endpoints/
私有 API 网关将可以通过 VPC 端点访问,
我想知道S3 存储桶是否使用私有 API 网关端点来内部访问数据,
或者位于 VPC 之外的 S3 需要面向公共的 API 网关端点?
我找不到有关拦截所有通过 AWS API Gateway 传递的 HTTP 请求的文档。
我正在尝试为部署在 AWS API Gateway 上的后端 API 提出日志记录服务。这个想法是所有的 HTTP 请求都将通过 API 网关。如果我能够拦截通过 API Gateway 的请求,我就可以挂钩日志服务代码。
这种方法的原因是,日志代码将独立于实际的服务代码,并且服务代码不必更新以包括请求/响应的日志记录。
对此有任何解决方案吗?
我正在尝试从 AWS API Gateway 异步调用 AWS Lambda 函数。
我有一个长时间运行(2-3 分钟)的 Lambda 函数,我想从 HTTP Post 请求异步调用这个 Lambda 函数。我将 API 网关配置为 Lambda 代理集成(因为我想将未修改的主体传递给函数)这工作正常,但 30 秒后,由于 API 网关执行时间限制,我得到 504。
但是我无法调用异步函数。根据AWS docs,如果我设置haeder“X-Amz-Invocation-Type”应该是可能的,但这没有任何区别。
有人知道是否可以异步调用函数并使用代理集成?
我想创建一个 terraform (v0.12+) 模块,该模块输出一个带有 Lambda 集成的 AWS API 网关。我不太明白如何(或者甚至可能)遍历映射列表以动态输出资源。
用户应该能够像这样实例化模块:
module "api_gateway" {
source = "./apig"
endpoints = [
{
path = "example1"
method = "GET"
lambda = "some.lambda.reference"
},
{
path = "example1"
method = "POST"
lambda = "some.lambda.reference"
},
{
path = "example2"
method = "GET"
lambda = "another.lambda.reference"
}
]
}
Run Code Online (Sandbox Code Playgroud)
从endpoints界面上,我想输出三个资源:
aws_api_gateway_resource哪里path_part = endpoint[i].path aws_api_gateway_method哪里http_method = endpoint[i].methodaws_api_gateway_integration,需要一个参考
endpoint[i].lambda,等Terraform 的for_each属性似乎不足以处理这个问题。我知道 Terraform 也支持 …
正如标题所示,我试图用一种方法创建一个资源,该方法用boto3python 库触发 lambda 函数。
我在做以下事情。
首先,我创建资源
new_endpoint_response = aws_apigateway.create_resource(
restApiId = 'xxxxxxxx',
parentId = 'xxxxxxxx',
pathPart = event['Configure']
)
Run Code Online (Sandbox Code Playgroud)
然后,post方法
put_method_response = aws_apigateway.put_method(
restApiId = 'xxxxxxxxxxx',
resourceId = new_endpoint_response['id'],
httpMethod = 'POST',
authorizationType = 'NONE'
)
Run Code Online (Sandbox Code Playgroud)
最后,将 lambda 函数分配给该方法
aws_apigateway.put_integration(
restApiId = 'xxxxxxxxxx',
resourceId = new_endpoint_response['id'],
httpMethod = 'POST',
integrationHttpMethod = 'POST',
type = 'AWS',
uri = 'LAMBDA ARN'
)
Run Code Online (Sandbox Code Playgroud)
这是我遇到一些问题的地方。当我尝试做最后一步时,我总是得到
An error occurred (BadRequestException) when calling the PutIntegration operation: AWS ARN for integration must contain path or …
我正在开发将从用户接收文件然后上传到 Amazon S3 的应用程序。使用 API Gateway 访问应用程序。服务 API 网关对 WebSocket 和 REST API 的负载大小有限制。有什么方法可以通过 API Gateway 从 Internet 访问我的服务?
我目前正在尝试配置我使用 AWS Amplify 添加的 REST API。我已经配置了用户身份验证,用户可以按照身份验证文档中概述的步骤注册和登录。然后我使用api 步骤添加了一个 REST API 。
目前,我只是想从 DynamoDB 中检索项目列表。当我在 aws 控制台上测试 api 时它是成功的,但是,当我从我的 android api 进行调用时,它返回以下错误:
{"message":"Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header. Authorization=[a long string of characters]
Run Code Online (Sandbox Code Playgroud)
我知道放大会使用 AWS_IAM 自动将 API 设置为受限,我认为这就是返回上述消息的原因。我正在尝试使用我之前通过身份验证步骤设置的用户池对其进行身份验证。我的 android 应用程序中调用 API 的代码如下:
{"message":"Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. …Run Code Online (Sandbox Code Playgroud) android amazon-cognito aws-api-gateway aws-amplify aws-amplify-sdk-android
aws-api-gateway ×10
aws-lambda ×5
node.js ×2
amazon-s3 ×1
android ×1
aws-amplify ×1
boto3 ×1
java ×1
javascript ×1
logging ×1
terraform ×1