我想在无服务器的输出部分获取API网关的ID,然后将其转换为我的API URL“https://fgh5t4tjm2.execute-api.us-east-1.amazonaws.com/dev”在另一个无服务器中使用。
下面是我通过在无服务器脚本中创建 lambda 来设置的 api 网关。我认为这是无服务器所做的更隐藏的创作之一,只需在 lambda 上设置一个事件,它就会为您创建一个 api 网关。我不确定它是否在 serverless.yml 的输出部分输出 API 网关 ID。
这就是我的无服务器的样子。
service: my-service
provider:
name: aws
stage: ${opt:stage, 'dev'}
runtime: nodejs12.x
region: ${env:AWS_REGION}
stackName: my-stack-name
plugins:
- serverless-dotenv-plugin
functions:
GetCallHistory:
handler: lambdas/getCallHistory.GetCallHistory
environment:
CH_CW_LOG_GROUP_NAME: ${env:CH_CW_LOG_GROUP_NAME}
description: This lambda queries cloudwatch logs and retrieves the call history using a contactId.
role: GetCallHistoryRole
events:
- http:
path: callhistory/{contactId}
method: get
cors: true
authorizer:
name: CognitoPoolAuthorizer
type: COGNITO_USER_POOLS
arn: ${env:COGNITO_USER_POOL_ARN}
resources:
#Lambda Roles
- ${file(resources/lambdaRoles.yml)}
我不确定在哪里输出部分将放入我的无服务器中以及要写什么才能获取 API ID 或 URL。
很好的问题:我仍然有一个可用的 template.yml (虽然它是 JSON 格式,但只是假装它是 yml)!
只需参考您资源范围内的“ApiGateWay”
"ApiGatewayApi": {
"Type": "AWS::Serverless::Api",
"Properties": {
"StageName": { "Ref": "environment" },
"DefinitionBody": "",
"EndpointConfiguration": "REGIONAL"
}
},
下面是我如何在 url 中引用并输出资源的示例:
"Outputs" : {
"ApiURL" : {
"Description" : "API endpoint URL for ${environment} environment",
"Value" : { "Fn::Sub" : "https://${ApiGatewayApi}.execute-api.${AWS::Region}.amazonaws.com/${environment}/" }
},
"RestApiId" : {
"Value" : { "Ref" : "ApiGatewayApi" }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)