Я пытаюсь развернуть api лямбда-отдыха с моим собственным развертыванием, и я не хочу использовать развертывание по умолчанию, которое создается для вас, когда deploy=True
. Я сталкиваюсь со странными ошибками при попытке явно определить собственное развертывание. Вот мой стек на данный момент:
class Stack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# existing lambda with correct permissions
lambda_function = aws_lambda.Function.from_function_arn(self, "lambda",
"arn")
api_gateway = aws_apigateway.LambdaRestApi(
self,
id="APIGateway",
proxy=False,
description="poc apigateway",
rest_api_name="poc-voice-qa-api",
handler=lambda_function,
deploy=False
)
api_key = api_gateway.add_api_key(
id="ApiKey",
api_key_name="voice-qa-api-key"
)
deployment = aws_apigateway.Deployment(
self,
id="Deployment",
api=api_gateway
)
deployment.add_to_logical_id(str(api_gateway.latest_deployment))
stage = aws_apigateway.Stage(
self,
id="DeploymentStage",
deployment=deployment,
stage_name="api"
)
stage_usage_plan = aws_apigateway.UsagePlanPerApiStage(
api=api_gateway,
stage=stage
)
api_gateway.add_usage_plan(
id="UsagePlan",
api_key=api_key,
api_stages=[stage_usage_plan],
description="poc usage plan",
name="poc-voice-qa-usage-plan"
)
resource = api_gateway.root.add_resource(
path_part="qa"
)
resource = resource.add_resource(
path_part="test"
)
lambda_integration = aws_apigateway.LambdaIntegration(
handler=lambda_function,
passthrough_behavior=aws_apigateway.PassthroughBehavior.WHEN_NO_MATCH
)
resource.add_method(
"GET",
lambda_integration,
api_key_required=True
)
resource.add_method(
"POST",
lambda_integration,
api_key_required=True
)
Из других сообщений, которые я читал, я думаю, мне нужно прикрепить свой этап или развертывание к api, но нет методов с этой функциональностью. Я пытался сделать api_gateway.deployment_stage = stage
, но это не сработало. CDK довольно новый, поэтому его не так много, любая помощь будет принята с благодарностью.