amazon-web-services - 部署 lambda 函数时如何从无服务器获取 API 网关 ID 作为输出部分

标签 amazon-web-services aws-api-gateway serverless

我想在无服务器的输出部分获取 API 网关的 ID,然后将其转换为 API URL“https://fgh5t4tjm2.execute-api.us-east-1.amazonaws.com/dev”我在另一个无服务器中使用它。

下面是我通过无服务器脚本中的 lambda 创 build 置的 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" } 

关于amazon-web-services - 部署 lambda 函数时如何从无服务器获取 API 网关 ID 作为输出部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63891299/

相关文章:

amazon-web-services - AWS 中 Terraform 资源的强制标记

amazon-web-services - 从作为 API 网关的 Lambda 内部建立数据库连接

amazon-web-services - AWS API Gateway 二进制损坏

webpack - 无服务器框架功能的 AWS Lambda 文件系统路径?

amazon-web-services - 如何修改与我使用的公司集群分离的 kubernetes 配置文件以添加第二个集群?

Java:如何处理可能需要大约 10 秒的 API 调用

amazon-web-services - 将 aws 可执行文件添加到操作系统的 PATH 环境变量 : needed every time?

amazon-web-services - AWS APIGateway CloudFormation 指定方法所需的 Api key 吗?

javascript - 在本地运行SLS函数以进行单元测试,结果是 Node Mysql连接池“连接过多”

ruby - 我如何在 ruby​​ 2.5 中解码或解析 "multipart/form-data"并使用参数获取哈希值