要实现AWS API网关,每个端点使用一个具有公共和私有VPC访问权限的Lambda函数,可以按照以下步骤进行操作:
import json
def lambda_handler(event, context):
# Lambda函数的代码逻辑
response = {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
return response
import boto3
# 创建API网关
apigateway_client = boto3.client('apigateway')
api_name = 'example-api'
api_description = 'Example API'
rest_api = apigateway_client.create_rest_api(
name=api_name,
description=api_description
)
# 创建资源
resource_name = 'example-resource'
resource_description = 'Example Resource'
resource = apigateway_client.create_resource(
restApiId=rest_api['id'],
parentId=rest_api['rootResourceId'],
pathPart=resource_name,
description=resource_description
)
# 创建方法
http_method = 'GET'
method = apigateway_client.put_method(
restApiId=rest_api['id'],
resourceId=resource['id'],
httpMethod=http_method,
authorizationType='NONE'
)
# 集成Lambda函数
lambda_arn = 'arn:aws:lambda:us-east-1:123456789012:function:example-lambda'
integration = apigateway_client.put_integration(
restApiId=rest_api['id'],
resourceId=resource['id'],
httpMethod=http_method,
type='AWS_PROXY',
integrationHttpMethod=http_method,
uri=lambda_arn
)
# 部署API
deployment = apigateway_client.create_deployment(
restApiId=rest_api['id'],
stageName='prod'
)
# 获取API网关的公共和私有端点URL
stage_name = deployment['stageName']
api_id = rest_api['id']
region = boto3.session.Session().region_name
endpoint_url = f'https://{api_id}.execute-api.{region}.amazonaws.com/{stage_name}'
endpoint_url
来访问API网关的端点。请注意,上述代码示例中的一些参数值需要根据您的实际情况进行相应的更改。