how*_*eng 18 aws-lambda aws-api-gateway
我有一个Lambda函数,它有一个公开的API网关端点,我可以通过AWS控制台获取该URL.但是,我想通过API调用获取该URL.无论是LAMBDA API文档,也不是API Gateway文档似乎有该信息(或者也许我已经错过了它),所以这是甚至可能摆在首位?
lar*_*ers 43
我真的不明白上面的答案(也许它已经过时了?).
绝对最简单的方法:
Jur*_*gen 10
您的API网关端点URL不会通过API调用公开.但是,由于API的URL遵循某种结构,因此您可以获得所有必需的部分并在代码中创建URI.
https://API-ID.execute-api.REGION.amazonaws.com/STAGE
您可以使用apigateway:rest-apis获取您的API-ID和restapi:阶段以获取阶段对应的标识符.
我没有看到OP问题的直接答案(使用API获取端点URL)。这是一段 Python 代码,我希望它能够为您提供指导,即使您正在使用其他语言绑定或 CLI。请注意获取内部端点与获取任何关联的自定义域端点的方法的差异。
import boto3
apigw = boto3.client('apigateway')
def get_rest_api_internal_endpoint(api_id, stage_name, region=None):
if region is None:
region = apigw.meta.region_name
return f"https://{api_id}.execute-api.{region}.amazonaws.com/{stage_name}"
def get_rest_api_public_endpoints(api_id, stage_name):
endpoints = []
for item in apigw.get_domain_names().get('items',[]):
domain_name = item['domainName']
for mapping in apigw.get_base_path_mappings(domainName=domain_name).get('items', []):
if mapping['restApiId'] == api_id and mapping['stage'] == stage_name:
path = mapping['basePath']
endpoint = f"https://{domain_name}"
if path != "(none)":
endpoint += path
endpoints.append(endpoint)
return endpoints
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12616 次 |
| 最近记录: |