當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 智能應(yīng)用
[導(dǎo)讀]基礎(chǔ)設(shè)施作為代碼(IaC),是一種用代碼定義基礎(chǔ)設(shè)施元素的實踐。這與通過GUI(圖形用戶界面)來實現(xiàn)它相反,例如,AWS控制臺。其思想是,為了具有確定性和可重復(fù)性,云基礎(chǔ)設(shè)施必須在一個基于用編程語言表達(dá)的模型的抽象描述中被捕獲,以便允許操作的自動化,否則應(yīng)該手動執(zhí)行。

基礎(chǔ)設(shè)施作為代碼(IaC),是一種用代碼定義基礎(chǔ)設(shè)施元素的實踐。這與通過GUI(圖形用戶界面)來實現(xiàn)它相反,例如,AWS控制臺。其思想是,為了具有確定性和可重復(fù)性,云基礎(chǔ)設(shè)施必須在一個基于用編程語言表達(dá)的模型的抽象描述中被捕獲,以便允許操作的自動化,否則應(yīng)該手動執(zhí)行。

AWS提供了幾種IaC工具,如下所示:

· 云形成:一種能夠基于JSON或YAML表示法表示的模板創(chuàng)建和管理云資源的配置工具

· AWS擴展Amplify:一個開源框架,為開發(fā)人員提供任何他們需要交付連接AWS基礎(chǔ)設(shè)施元素以及web和移動組件的應(yīng)用程序

· AWSSAM(無服務(wù)器應(yīng)用程序模型):一種促進(jìn)AWS Lambda功能與API網(wǎng)關(guān)、REST API、AWS SNS/SMQ、DynamoDB等服務(wù)集成的工具。

· AWSSDK(軟件開發(fā)工具包):一個API,使用Java、Python、TypeScript等編程語言為所有AWS服務(wù)提供管理支持

·

AWS CDK(云開發(fā)工具包):這是另一個類似于SDK的API,但功能更豐富,不僅允許管理AWS服務(wù),還允許以編程方式創(chuàng)建、修改和刪除云形成堆棧,其中包含基礎(chǔ)設(shè)施元素。它支持許多編程語言,包括但不限于Java、Python、類型的Script等。

其他非亞馬遜的IaC工具也存在,如Pulumi和地形,它們提供了非常有趣的多云支持,包括但不限于AWS。例如,與AWS CDK一樣,Pulumi允許您使用通用編程語言定義云基礎(chǔ)設(shè)施,并且與云形成一樣,三元組使用專用的聲明式符號,稱為HCL(HashiCorp配置語言)。

本文是一個系列文章的第一部分,它旨在深入研究CDK作為一種面向?qū)ο蟮母呒壋橄?,通過利用編程語言的力量來定義云基礎(chǔ)設(shè)施。

AWS CDK簡介

在AWS自己的定義中,CDK是一個開源軟件開發(fā)框架,它使用通用的編程語言來定義了AWS云資源。在這里,我們將使用Java。

有趣的是,從一開始就觀察到,與其他IaC工具如云形成或地形形成不同,CDK并不僅僅被定義為一個基礎(chǔ)設(shè)施供應(yīng)框架。事實上,在AWS術(shù)語的意義,CDK不止是:一個非常多才多藝的IaC框架,釋放編程語言和編譯器管理高度復(fù)雜的AWS云基礎(chǔ)設(shè)施與代碼,相比HCL或其他基于JSON/YAML符號,更具可讀性和可擴展性。與這些其他IaC工具不同,使用CDK可以循環(huán)、映射、引用、編寫條件、使用輔助函數(shù),總之,充分利用編程語言的能力。

但是,也許CDK最重要的優(yōu)勢是它的領(lǐng)域特定語言(DSL)類似的風(fēng)格,這多虧了構(gòu)建器設(shè)計模式的廣泛實現(xiàn),它允許開發(fā)人員輕松地與AWS服務(wù)交互,而無需學(xué)習(xí)復(fù)雜的api和其他云供應(yīng)語法。此外,它還使對可重用組件、安全組、證書、負(fù)載平衡器、vpc(虛擬私有云)等組件的強大管理和定制成為可能。

CDK是基于將構(gòu)造作為其基本構(gòu)建塊的概念。這是一個強大的概念,它允許我們抽象出公共云基礎(chǔ)設(shè)施模式的細(xì)節(jié)。構(gòu)造對應(yīng)于一個或多個合成資源,它可以是一個只包含S3桶的小云形成堆棧,也可以是一個包含一組具有相關(guān)的AWS機器管理器參數(shù)存儲配置、安全組、證書和負(fù)載平衡器。它可以根據(jù)需要進(jìn)行初始化和重用,次數(shù)盡可能多次。

堆棧是構(gòu)造對象的邏輯組。它可以被看作是要部署的組件的圖表。它生成聲明性云形成模板、梯形配置或Kubernetes清單文件。

最后但并非最不重要的是,該應(yīng)用程序是一個CDK的概念,它對應(yīng)于一個構(gòu)造對象的樹。有一個根應(yīng)用程序,它可能包含一個或多個堆棧對象,依次包含一個或多個構(gòu)造對象,它可能包含其他構(gòu)造對象,等等。下圖描述了這種結(jié)構(gòu)。

這里有幾個例子并說明了它。它們從最簡單的,創(chuàng)建一個基本的基礎(chǔ)設(shè)施,到最復(fù)雜的,處理多區(qū)域的數(shù)據(jù)庫集群和堡壘主機。讓我們來其中一些。

CDK啟動器

讓我們從一個啟動項目開始,構(gòu)建一個CDK應(yīng)用程序,該應(yīng)用程序創(chuàng)建一個只包含S3桶的簡單堆棧。安裝CDK很簡單,如這里所述。一旦根據(jù)上述文檔安裝并啟動了CDK,您就可以使用其腳手架功能來快速創(chuàng)建項目骨架。運行以下命令:

Shell

$ cdk init app --language java

當(dāng)CDK腳手架生成Maven項目時,將顯示一堆文本,一旦完成,您可以檢查它的結(jié)構(gòu),如下所示:

$ tree -I target

.

├── cdk.json

├── pom.xml

├── README.md

└── src

├── main

│ └── java

│ └── com

│ └── myorg

│ ├── TestApp.java

│ └── TestStack.java

└── test

└── java

└── com

└── myorg

└── TestTest.java

9 directories, 6 files

這是由CDK腳手架創(chuàng)建的項目骨架。如您所見,有幾個Java類,以及一個測試類。它們不是很有趣,你已經(jīng)可以刪除它們,連同軟件包com.myorg一起,它可能不符合你的命名約定。但是使用CDK支架函數(shù)的真正優(yōu)點是生成了pom.xml和cdk.json文件。

第一個是驅(qū)動應(yīng)用程序構(gòu)建過程,并定義所需的依賴項和插件。打開它,你就會看到:

XML

...

software.amazon.awscdk

aws-cdk-lib

...

org.codehaus.mojo

exec-maven-plugin

fr.simplex_software.aws.iac.cdk.starter.CdkStarterApp

...

為了開發(fā)CDK應(yīng)用程序,您需要aws-cdk-lib Maven工件。這是包含所有所需資源的CDK庫。一旦構(gòu)建和部署,要運行應(yīng)用程序,還需要exec-maven插件。

如果您查看cdk init命令為您生成的cdk.json文件,您會看到:

JSON

...

"app": "mvn -e -q compile exec:java"

3

...


這是CDK在構(gòu)建應(yīng)用程序時要使用的命令。當(dāng)然,如果您不想使用支架功能,而且,如果您喜歡從頭開始,您可以提供自己的pom.xml,因為畢竟,作為一個開發(fā)人員,您必須習(xí)慣它。但是,當(dāng)涉及到cdk.jsonfile時,您最好是生成它。

所以,很好:你剛剛得到了你的項目骨架,現(xiàn)在你需要定制它以適應(yīng)你的需求。來看看代碼存儲庫中的cdk啟動程序項目。正如您所看到的,有兩個Java類,Cdk星tapp和Cdk星棧。第一個方法是通過實例化software.amazon.awscdk來創(chuàng)建一個CDK應(yīng)用程序。抽象了最基本的CDK概念的應(yīng)用程序類:應(yīng)用程序。建議一旦實例化,就可以標(biāo)記應(yīng)用程序,這樣不同的自動工具就能夠根據(jù)不同的目的來操作它。例如,我們可以想象有一個自動工具,它可以刪除所有的測試應(yīng)用程序,然后掃描它們,尋找標(biāo)簽環(huán)境:開發(fā)。

應(yīng)用程序的目標(biāo)是定義至少一個堆棧,這是我們的應(yīng)用程序通過實例化CdkStarterStack類所做的事情。這個類是一個堆棧,因為它擴展了software.amazon.awscdk。堆疊一個。在它的構(gòu)造函數(shù)中,我們將創(chuàng)建一個S3桶,如下面的代碼片段所示:

Java

Bucket bucket = Bucket.Builder.create(this, "my-bucket-id")

.bucketName("my-bucket-" + System.getenv("CDK_DEFAULT_ACCOUNT"))

.autoDeleteObjects(true).removalPolicy(RemovalPolicy.DESTROY).build();

在這里,我們創(chuàng)建了一個S3桶,具有我的-bbkem的ID和我的-bbkew的名稱,我們已經(jīng)添加了當(dāng)前用戶的默認(rèn)帳戶ID。其原因是S3的桶名在全球范圍內(nèi)必須是唯一的。

正如您所看到的,這里用于抽象Amazon簡單存儲服務(wù)的類software.amazon.awscdk.services.s3.Bucket實現(xiàn)了設(shè)計模式構(gòu)建器,它允許以類似dsl的方式定義諸如桶名、自動刪除和刪除策略等屬性。

所以這是我們的第一個簡單的CDK應(yīng)用程序。CdkStarterApp類中的以下幾行:

Java

app.synth();

…是絕對必要的,因為它產(chǎn)生(“合成”,在CDK的術(shù)語中)相關(guān)的AWS云形成堆棧模板。一旦“合成”了,它就可以被部署和使用了。這是如何做到的:

Shell

$ git clone https://github.com/nicolasduminil/cdk.git

$ cd cdk/cdk-starter

$ mvn package

$ cdk deploy --requireApproval=never

一堆文本將再次顯示,一段時間后,如果一切都好,您應(yīng)該看到堆棧成功部署的確認(rèn)。現(xiàn)在,為了檢查一切是否正常工作,您可以將已部署的堆棧列表如下:

Shell

$ aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE

關(guān)鍵是根據(jù)存在堆棧的當(dāng)前狀態(tài)(在本例中是CREATE_COMPLETE)來過濾其輸出列表,以避免檢索幾十個不相關(guān)的信息。所以,你應(yīng)該看到類似的東西:

JSON

{

"StackSummaries": [

...

{

"StackId": "arn:aws:cloudformation:eu-west-3:...:stack/CdkStarterStack/83ceb390-3232-11ef-960b-0aa19373e2a7",

"StackName": "CdkStarterStack",

"CreationTime": "2024-06-24T14:03:21.519000+00:00",

"LastUpdatedTime": "2024-06-24T14:03:27.020000+00:00",

"StackStatus": "CREATE_COMPLETE",

"DriftInformation": {

"StackDriftStatus": "NOT_CHECKED"

}

}

...

]

}


現(xiàn)在,您可以獲得關(guān)于您的特定堆棧的更詳細(xì)信息:

Shell

$ aws cloudformation describe-stacks --stack-name CdkStarterStack

輸出將非常冗長,我們不會在這里復(fù)制它,但您應(yīng)該看到有趣的信息,如:

JSON

...

"RoleARN": "arn:aws:iam::...:role/cdk-hnb659fds-cfn-exec-role-...-eu-west-3",

"Tags": [

{

"Key": "environment",

"Value": "development"

},

{

"Key": "application",

"Value": "CdkApiGatewayApp"

},

{

"Key": "project",

"Value": "API Gateway with Quarkus"

}

],

...

當(dāng)然,您也可以檢查您的S3桶是否已經(jīng)成功創(chuàng)建:

Shell

$ aws s3api list-buckets --query "Buckets[].Name"

在這里,使用查詢“桶”的選項。名稱,您過濾輸出,以便只顯示桶名稱,您將看到:

JSON

[

...

"my-bucket-...",

...

]


如果您想查看一些屬性(例如,關(guān)聯(lián)的標(biāo)記):

Shell

$ aws s3api get-bucket-tagging --bucket my-bucket-...

{

"TagSet": [

{

"Key": "aws:cloudformation:stack-name",

"Value": "CdkStarterStack"

},

{

"Key": "environment",

"Value": "development"

},

{

"Key": "application",

"Value": "CdkStarterApp"

},

{

"Key": "project",

"Value": "The CDK Starter projet"

},

{

"Key": "aws-cdk:auto-delete-objects",

"Value": "true"

}

]

}


一切似乎都很好,你可能會得出結(jié)論,你使用CDK的第一次測試是成功的。因為您現(xiàn)在已經(jīng)部署了一個帶有S3桶的堆棧,所以您應(yīng)該能夠使用這個桶,例如,上傳文件,下載它們,等等。您可以通過使用這里所示的AWS CLI來實現(xiàn)這一點。但如果你想用CDK來做,你需要等待下一集。

在等待的同時,不要忘記清理你的AWS工作空間,以避免被開具發(fā)票!

Shell

$ cdk destroy --all

aws s3 rm s3://my-bucket-... --recursive

aws s3 rb s3://my-bucket-...

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉