我正在尝试将Lambda函数的JSON输出映射到API网关调用的标头.作为示例,我们可以考虑重定向方案.所以我想Location在API网关调用的响应中添加标题.
Lambda函数的JSON输出:
{
Location: 'http://google.com'
}
Run Code Online (Sandbox Code Playgroud)
在"方法响应" - >"响应标头"中,我可以将Location标头添加到所需的HTTP状态代码中.
然后,在"整合响应" - >"页眉映射"我可以添加的映射关系对所述Location报头是什么.
现在的问题是如果这是什么东西呢?
注意:我已经尝试过integration.response.header.Location,或使用"映射模板"但到目前为止没有运气.
目前可能无法实现(https://forums.aws.amazon.com/thread.jspa?messageID=651482),但由于API Gateway/Lambda目前正在迅速发展,我将会这么快无论如何要问.
AWS API Gateway是否允许限制来自单个IP的大量请求?
我正在构建一个公共API,并且希望通过在单个IP地址(例如每分钟100个请求)中调用API的次数建立限制来防止它被滥用.
谢谢,
Serverless-1.0.0-rc.1支持部署可通过AWS API Gateway访问的API.
问题:我需要通过带有SSL证书的自定义域而不是随机分配的(URL https://qwertylgbtqert.execute-api....)来公开部署的API 吗?
可以从内部serverless.yml或无服务器框架完成吗?
这是我简单的服务serverless.yml定义:
service: my-service
provider:
name: aws
runtime: nodejs4.3
functions:
generate:
handler: handler.generate
events:
- http:
method: get
path: url
cors: true
Run Code Online (Sandbox Code Playgroud)
有一个问题与此有关:答案在这里,但没有提供适用的答案.特别是如何从serverless.yml自身内部分配自定义域.
它认为是否有可能创建AWS :: Route53资源并利用它,但我不知道如何在无服务器中执行此操作.
amazon-web-services aws-lambda aws-api-gateway serverless-framework
我正在尝试使用 serverless.com 部署 AWS API
当我做:
sls --stage=dev --aws-profile=myprofile deploy --force
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:
Configuration warning at 'functions.app.events[0]': unsupported function event
Run Code Online (Sandbox Code Playgroud)
我的 serverless.yml 包含以下部分:
functions:
app:
handler: src/index.handler
memorySize: 3008
events:
- httpApi:
method: '*'
path: '*'
authorizer:
name: serviceAuthorizer
scopes: # Optional
- user.id
- user.email
Run Code Online (Sandbox Code Playgroud)
事件部分有什么问题?
我在AWS API Gateway后面有一个API,需要使用Authorization标头进行处理.遗憾的是,我无法将其传递给后端进行处理.
我试图在我的方法请求创建授权HTTP请求报头,然后在我的集成请求创建相应的授权HTTP标(授权从method.request.header.Authorization映射在这种情况下).我记录了后端接收的所有头文件,并且从日志中,我可以看到我在集成请求中列出但未授权的其他头文件.
我还尝试使用Content-Type创建一个映射模板,application/json并将模板定义为
{
"AccountID": "$context.identity.accountId",
"Caller": "$context.identity.caller",
"User": "$context.identity.user",
"Authorization": "$input.params().header.get('Authorization')",
"UserARN": "$context.identity.userArn"
}
Run Code Online (Sandbox Code Playgroud)
然而,后端日志显示JSON主体中仍然没有Authorization标头或任何Authorization字段.我也看不到用户的ARN.我已经看到其他示例和线程,其中用户提到访问传递给Lambda函数的事件对象上的Authorization字段,但我没有使用Lambda函数.
我确保在两种情况下都部署API网关.
有谁知道我是否可以通过API网关将Authorization标头传递给我的HTTP端点?是否有其他方法可以访问API调用者的用户名或ID?
编辑 - 这是我用来访问API网关的代码片段:
String awsAccessKey = "myaccesskey";
String awsSecretKey = "mysecretkey";
URL endpointUrl;
try {
endpointUrl = new URL("https://<host>/<path>/<to>/<resource>?startDate=20151201&endDate=20151231");
} catch(Exception e) {
throw new RuntimeException("Unable to parse service endpoint: " + e.getMessage());
}
Date now = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
sdf1.setTimeZone(new SimpleTimeZone(0, "UTC"));
String dateTS = sdf1.format(now);
String headerNames = "host;x-amz-date";
String queryParameters = …Run Code Online (Sandbox Code Playgroud) 我有一个Lambda函数,它有一个公开的API网关端点,我可以通过AWS控制台获取该URL.但是,我想通过API调用获取该URL.无论是LAMBDA API文档,也不是API Gateway文档似乎有该信息(或者也许我已经错过了它),所以这是甚至可能摆在首位?
我的API Gateway/Lamdba设置返回一个http响应头:Lamdba使用回调函数将值作为json的一部分返回,Integration Response将其映射到头中(使用integration.response.body)
使用此解决方案,值将在正文和标题中发回.
如何在不重复响应正文中的值的情况下映射Lambda响应中的标头?
我想定义请求和响应模型.我在AWS中使用无服务器框架,我所看到的一切建议使用无服务器aws文档
README说我需要有这条线 custom.documentation.models.MODELNAME
schema: ${file(models/error.json)}
Run Code Online (Sandbox Code Playgroud)
但是他们没有models/error.json用作基线的示例文件.
在实际的例子中,serverless.yml有一个这样的定义:
-
name: DoSomethingRequest
contentType: "application/json"
schema:
type: array
items:
type: string
Run Code Online (Sandbox Code Playgroud)
这没有为我正在尝试做的事情提供足够的细节.
我的目标是为字符串对象,消息和状态代码数组定义模式.但是,消息和状态代码是可选的.这些也可能是其他模型的一部分,如果可能的话,我不想重复每个模型的定义.
我目前的尝试是:
-
name: ReturnArrayResponse
contentType: "application/json"
schema:
type: array
itemsArray:
type: string
message:
type: string
statusCode:
type: number
Run Code Online (Sandbox Code Playgroud)
我认为这会做我想要的,但我怎么能拥有message并可statusCode选择并在我的其他模特中重复这两个项目?
我很满意我可以放入我的serverless.yml文件或我可以引用的json文件的yml解决方案.
amazon-web-services aws-api-gateway serverless-framework serverless-plugins
我正在使用AWS API Gateway和自定义域.当我尝试访问https://www.mydomain.com时,它运行正常,但是当我尝试http://www.mydomain.com时它无法连接.
有没有办法http -> https在API网关中重定向自定义域?如果没有,有没有办法让http://链接像https://链接一样工作?
使用Node.js创建了Lambda Hello world函数,并为Get调用创建了API GateWay触发器,尝试使用URL访问Lambda函数,得到以下错误.
消息:"内部服务器错误".
(AWS新手)