使用 AWS 开发工具包 JavaScript 删除使用计划

Ali*_*eib 1 amazon-web-services aws-sdk aws-api-gateway aws-sdk-js

我尝试通过调用deleteUsagePlan函数并传递usagePlanId参数来使用AWS SDK删除使用计划,如下所示:

  const params: AWSNXR.APIGateway.DeleteUsagePlanRequest = {
    usagePlanId: usage_plan_id,
  };

  const apigw = new AWS.APIGateway();

  const response = await apigw.deleteUsagePlan(params).promise();
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,我无法这样做,并且收到此错误:BadRequestException:无法删除使用计划 USAGE_PLAN_ID_HERE,因为有与其关联的 API 阶段,包括 API_ID_HERE:测试

重现步骤:

1-使用以下参数创建使用计划

名称:“my_usage_plan”,apiStages:[ apiId:“API_ID_HERE”,阶段:“测试”]

2-删除使用计划

使用计划 ID:USAGE_PLAN_ID

我在步骤 #2 中不断收到错误消息: BadRequestException: 无法删除使用计划 USAGE_PLAN_ID_HERE 因为有与其关联的 API 阶段,包括 API_ID_HERE:test

预期行为:

预期的行为是能够使用使用计划 ID 删除新创建的使用计划

附加内容:

我尝试解决此问题的方法: 1- 我尝试删除 API 网关上的测试阶段 2- 我使用相同的使用计划 ID 运行删除使用计划功能

使用计划已成功删除,没有任何错误,但是,我应该能够删除它,而无需删除阶段并在之后重新创建它。

小智 5

在删除使用计划之前,您必须删除 api 阶段,您可以通过调用 updateUsagePlan 来完成此操作,如下所示:

const params = {
    usagePlanId: "{usage plan id}", 
    patchOperations: [{
        op: "remove",
        path: "/apiStages",
        value: "{api gw id}:{stage name}"
    }]
 };
const apigateway = new AWS.APIGateway();

await apigateway.updateUsagePlan(params).promise();
Run Code Online (Sandbox Code Playgroud)

我找不到任何有关它的文档,只能通过跟踪浏览器中源自 aws 控制台的网络调用找到解决方案。