簡體   English   中英

AWS CDK:獲取另一個堆棧中定義的給定 api 的 HttpRoute

[英]AWS CDK: Get HttpRoute of given api defined in another stack

我有兩個堆棧,堆棧 A 定義了一個帶有路由“/convert”的 HTTP Api。 現在我想在堆棧 B 中導入這條路線。

我設法從堆棧 A 導入 http api,但現在似乎有辦法從這個 API 訪問路由。

const httpApiId = cdk.Fn.importValue("CurrencyApiId");
    const api = HttpApi.fromHttpApiAttributes(this, "api", { httpApiId });

// const convertRoute: HttpRoute = ????

CDK 構造(用於定義資源的實際類)被定義為 L1、L2 或 L3 構造。 L1 是非常基礎的方法。 通常以cfn為前綴,它們只是基本的 cloudformation 模板創建。

同時,L2 和 L3 構造利用 OOP 和它們下面的 L1 的抽象來創建用於交互的各種鈎子。 例如,當您將 lambda 函數對象提供給 apigateway 集成時,這是使用 L3 構造將 lambda “掛鈎”到 api 網關,並且所有必要的雲形成部分都在后端為您完成。

不幸的是,許多這些事情只有在堆棧控制所有部分時才有可能 - 當您導入(使用各種from前綴方法)時,CDK 只是使用 SDK(或 aws cli)命令從您的帳戶中檢索信息。 有些事情無法使用這些from方法處理,因為它們可能會在模板的 Synth 和部署之間發生變化,或者它們是短暫的,或者許多其他原因。 因此,很多時候由from方法創建的“構造”對象缺少很多東西。

通過將此值傳遞到第二個堆棧中,您會得到更好的服務。 最好將兩者都作為嵌套堆棧,位於它們上方的公共應用程序堆棧中

(下面是python偽代碼,因為那是我比較熟悉的,但它適用於CDK的所有語言)

class CommonMainStack(cdk.Stack):
    api_stack = ApiStack()
    stack_that_uses_methods = OtherStack(api_stack.http_methods)

class ApiStack(cdk.NestedStack):
    api = HttpApi()
    self.http_methods = api.http_methods

class OtherStack(cdk.NestedStack):

    whatever_needed_for(imported_methods)

這將允許您立即使用所有 L2/L3 構造掛鈎

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM