AWS CDK未部署API网关更改(EDGE到REGIONAL)



我正在通过转换控制台开发的应用程序(目前只有API网关和Lambdas(来尝试AWS CDK。一切都很好——我可以访问API的资源和方法,并执行适当的lambdas。

我正在努力了解是什么触发了部署(什么不触发(。例如,如果我尝试将API的端点类型从默认(EDGE(更改为REGIONAL:

const api = new apigateway.RestApi(this, "cy-max-api", {
restApiName: "CY Max Service",
description: "CDK version of Max AWS demo app.",
endpointConfiguration: [EndpointType.REGIONAL] // <-- add only this line and deploy
});

和deploy(cdk deploy(,什么都没有部署(我检查了日志,控制台说没有堆栈更改(。我甚至试着强制部署(cdk deploy -f(——没有乐趣。

我怀疑这是预期的行为,但我想了解为什么这个更改没有触发部署(以及强制部署需要什么(。

根据@balu vyamajala的响应更新(感谢您花时间进行测试(。我使用的是CDK的1.82.0版本。以下是当唯一的更改是添加endpointConfiguration行时cdk diff的结果:

Stack CyMaxStack
Resources
[-] AWS::ApiGateway::Deployment CyMaxcymaxapiDeploymentD64E3EA0186ed2bffe1dbc3004a8457d0ce5eb28 destroy
[+] AWS::ApiGateway::Deployment CyMax/cy-max-api/Deployment CyMaxcymaxapiDeploymentD64E3EA0cd62c1e6cd1229987f977199cc5906ea
[~] AWS::ApiGateway::RestApi CyMax/cy-max-api CyMaxcymaxapi48ECF39D
└─ [+] EndpointConfiguration
└─ {}
[~] AWS::ApiGateway::Stage CyMax/cy-max-api/DeploymentStage.prod CyMaxcymaxapiDeploymentStageprod5291AAF0
└─ [~] DeploymentId
└─ [~] .Ref:
├─ [-] CyMaxcymaxapiDeploymentD64E3EA0186ed2bffe1dbc3004a8457d0ce5eb28
└─ [+] CyMaxcymaxapiDeploymentD64E3EA0cd62c1e6cd1229987f977199cc5906ea

下面是cdk deploy所说的:

CyMaxStack: deploying...
[0%] start: Publishing 6280a7c7fbc87dd62aeb85e098d6de2f0b644eea442dcbfc67063a56c08ce151:current
[100%] success: Published 6280a7c7fbc87dd62aeb85e098d6de2f0b644eea442dcbfc67063a56c08ce151:current
CyMaxStack: creating CloudFormation changeset...
[█████████████████████████████·····························] (5/10)

✅  CyMaxStack
Outputs:
CyMaxStack.CyMaxcymaxapiEndpoint52D905B0 = https://...my URL...
Stack ARN:
arn:aws:cloudformation:us-west-1:...my ARN...

当我检查控制台时,API尚未更新到REGIONAL。此外,endpointConfiguration丢失,或者cdk.out/tree.json中的{}丢失。我从未在那个文件中看到{REGIONAL}

我猜您是在询问对AWS::ApiGateway::Deployment的更新,这不会自动发生,cdk会生成一个方法和资源的哈希,并将其附加到资源名称中以强制部署。但在您的情况下,EndpointConfiguration是AWS::ApiGateway::RestApi的属性,它在AWS::ApiGateway::Deployment中直接引用。无论是否有任何其他更改,它都必须触发新的部署。

您正在使用哪个版本的cdk?

我刚刚用1.80.0测试了它,它确实触发了三个资源的更改AWS::ApiGateway::Deployment、AWS::ApiGateway::Stage和AWS::ApiGateway::RestApi。

请尝试cdk-synth,并在编译更改之前和之后观察为资源AWS::ApiGateway::RestApi生成的CloudFormation

相关内容

  • 没有找到相关文章

最新更新