【问题标题】:How to get the name of the api gateway invoking aws lambda using java如何使用java获取调用aws lambda的api网关的名称
【发布时间】:2018-05-18 05:40:43
【问题描述】:

我正在尝试在我的 Lambda 代码中检索 apigateway 名称。我在 AWS http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html 上引用了以下文档。

我知道我们可以使用上下文变量检索 API ID。但是我有兴趣检索创建的 API 的实际名称。有没有办法得到它?

提前致谢。

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-sdk aws-api-gateway serverless


    【解决方案1】:

    据我所知,您无法直接获取 API 网关 name,但可以获取 API 网关 Id

    同时传入一个事件和上下文。在事件中,有一个键叫做“requestContext”。在请求上下文中是“apiId”键。

    然后,如果需要,您可以使用 API 密钥 ID 来查找名称。

    【讨论】:

    • 嗨,Jason,感谢您的建议,但我正在寻找方法来获取创建 API 的名称。 API id 看起来像 AWS 分配的唯一字母数字字符串。我想知道如何获取名称,或者有什么方法可以将 API id 与名称映射?使其更具可读性。
    • 您可以使用 get_api_key() 来获取您的 ApiKey 资源的信息。例如,请参见下面的链接。 boto3.readthedocs.io/en/latest/reference/services/…
    【解决方案2】:

    很遗憾,您将无法直接从上下文中获取 API 名称,您只能获取其标识符。

    获取此信息的一种方法是根据上下文中的 ID 获取 API 信息:

    response = client.get_rest_api(
        restApiId='string'
    )
    

    然后您将收到此回复:

    {
        'id': 'string',
        'name': 'string',
        'description': 'string',
        'createdDate': datetime(2015, 1, 1),
        'version': 'string',
        'warnings': [
            'string',
        ],
        'binaryMediaTypes': [
            'string',
        ],
        'minimumCompressionSize': 123,
        'apiKeySource': 'HEADER'|'AUTHORIZER',
        'endpointConfiguration': {
            'types': [
                'REGIONAL'|'EDGE'|'PRIVATE',
            ]
        },
        'policy': 'string'
    }
    

    https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/apigateway.html#APIGateway.Client.get_rest_api

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 1970-01-01
      • 2021-05-07
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      相关资源
      最近更新 更多