AWS CDK API Gateway - как развернуть API без создания развертывания по умолчанию (python) - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь развернуть 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 довольно новый, поэтому его не так много, любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 20 июля 2020

api_gateway.deployment_stage = stage должен создавать имя стадии «api» в соответствии с вашим кодом. ваш API_gateway создает сценическое имя "prod" ?? попробуйте удалить deployment.add_to_logical_id (str (api_gateway.latest_deployment)) это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...