aws(學習筆記第三十八課) codepipeline-build-deploy-github-manual

文章目錄

  • aws(學習筆記第三十八課) codepipeline-build-deploy-github-manual
  • 學習內容:
    • 1. 整體架構
      • 1.1 代碼鏈接
      • 1.2 全體處理架構
    • 2. 代碼分析
      • 2.1 創建`ImageRepo`,并設定給`FargateTaskDef`
      • 2.2 創建`CodeBuild project`
      • 2.3 對`CodeBuild project`賦予權限(`ECR`的`image repo`)
      • 2.4 生成`lambda`函數觸發`codebuild`的首次執行
        • 2.4.1 生成`lambda`函數觸發`codebuild`
        • 2.4.2 `lambda`函數觸發`codebuild`的代碼
        • 2.4.3 `AWS Custom Resource`的代碼
      • 2.5 創建`vpc`和`ecs cluster`
        • 2.5.1 創建`vpc`
        • 2.5.2 創建`藍綠部署`
      • 2.5 創建`Application Loader Balancer`
      • 2.6 創建`fargate service`
      • 2.6.1 創建`fargate service`
      • 2.6.1 在`fargate service`上進行`application target group`的`attach`
      • 2.7 創建`code pipeline`
        • 2.7.2 `codepipe`整體架構
        • 2.7.1 創建`pipeline artifacts`
        • 2.7.2 創建`source stage`
        • 2.7.3 創建`build stage`
        • 2.7.4 創建`deploy stage`
      • 2.8 創建`code pipeline`
        • 2.8.1 為`code build`設定`github`的`confidential`
        • 2.8.2 最終創建`pipeline`
    • 3 執行`CDK`
      • 3.1 將`application`提前部署到`github`
      • 3.2 在`github`創建`PAT Person Access Tocken`
      • 3.3 執行命令將`github`的`PAT`創建到`AWS Secret Manager`上
      • 3.4 修改`codepipeline_build_deploy_stack.py`中的`todo`
      • 3.4 執行`cdk`
      • 3.5 訪問`Application Loader Balancer`

aws(學習筆記第三十八課) codepipeline-build-deploy-github-manual

  • 使用codepipeline-build-deploy

學習內容:

  • 使用codepipeline,★代碼庫不采用codecommit,而是github
  • 使用codebuild
  • 使用codedeploy

1. 整體架構

1.1 代碼鏈接

  • 代碼鏈接(codepipeline-build-deploy-github-manual)
  • 同時可以參照aws(學習筆記第二十課) codecommit以及codedeploy進行開發

1.2 全體處理架構

在這里插入圖片描述

2. 代碼分析

2.1 創建ImageRepo,并設定給FargateTaskDef

        # Creates an Elastic Container Registry (ECR) image repositoryimage_repo = ecr.Repository(self, "ImageRepo")# Creates a Task Definition for the ECS Fargate servicefargate_task_def = ecs.FargateTaskDefinition(self, "FargateTaskDef")fargate_task_def.add_container("Container",container_name="web",image=ecs.ContainerImage.from_ecr_repository(image_repo),port_mappings=[{"containerPort": 80}])

注意,這里并沒有指定具體的imageURI以及tag,這里只是指定了Image Repo(ECR)。后面會在CodeBuildStage階段build出來docker image,并且接在CodeDeployStage階段將該docker image部署到Fargate Service
在這里插入圖片描述

2.2 創建CodeBuild project

# CodeBuild project that builds the Docker imagebuild_image = codebuild.Project(self, "BuildImage",build_spec=codebuild.BuildSpec.from_source_filename("buildspec.yaml"),source=codebuild.Source.git_hub(owner="bufanli",    # TODO: Replace with your GitHub usernamerepo="web_app",   # TODO: Replace with your GitHub repository namebranch_or_ref="main",),environment=codebuild.BuildEnvironment(privileged=True),environment_variables={"AWS_ACCOUNT_ID": codebuild.BuildEnvironmentVariable(value=os.getenv('CDK_DEFAULT_ACCOUNT') or ""),"REGION": codebuild.BuildEnvironmentVariable(value=os.getenv('CDK_DEFAULT_REGION') or ""),"IMAGE_TAG": codebuild.BuildEnvironmentVariable(value="latest"),"IMAGE_REPO_NAME": codebuild.BuildEnvironmentVariable(value=image_repo.repository_name),"REPOSITORY_URI": codebuild.BuildEnvironmentVariable(value=image_repo.repository_uri),"TASK_DEFINITION_ARN": codebuild.BuildEnvironmentVariable(value=fargate_task_def.task_definition_arn),"TASK_ROLE_ARN": codebuild.BuildEnvironmentVariable(value=fargate_task_def.task_role.role_arn),"EXECUTION_ROLE_ARN": codebuild.BuildEnvironmentVariable(value=fargate_task_def.execution_role.role_arn)}

在這里插入圖片描述
這里,設定build_spec文件,在app/buildspec.yml中,

  • 設定pre_build登錄ecr (?Amazon Elastic Container Registry(ECR),方便之后的向ecr進行鏡像的登錄。
        commands:- echo Logging in to Amazon ECR...- aws --version- aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com
    
  • 進行build處理
    這里的
        commands:- echo Building the Docker image...- docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .- docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901008.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901008.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901008.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在windows服務器使用Nginx反向代理云端的python實現的web應用

近日得閑,計劃將之前寫過的一些小桌面程序搬到云服務器上方便隨時隨地使用,同時也學習一些基本的網站開發和搭建知識,于是在AI的幫助下,基于niceguifastapi非常快捷地搞出來了一個前后端一體的網站程序,放在云服務器上…

全球貿易戰火重燃:50%關稅如何絞殺跨境電商低價模式?

一、政策高壓:美國對華貿易戰升級路線圖 2024年5月,美國國會《數字貿易壁壘法案》草案曝光,標志著中美貿易博弈進入新階段: ? 關稅武器精準打擊:成衣、消費電子、小家電稅率擬從10-25%躍升至50% ? 監管范圍擴大&…

0411 | 軟考高項筆記:項目立項

在軟考的項目管理知識體系中,技術可行性和經濟可行性是項目立項階段非常重要的兩個分析維度。以下是對這兩個考點的詳細解釋和記憶方法: 技術可行性分析 定義: 技術可行性分析是評估項目在現有技術條件和資源下是否能夠成功實施。它主要回答…

二分查找3:69. x 的平方根

鏈接:69. x 的平方根 - 力扣(LeetCode) 題解: 本題本質是二分查找右端點 x的算數平方根一定在1 ~ x 區間內,在1 ~ x區間內查找一個數num,num^2x,但實際上num不一定是整數,所以是n…

oracle大師認證證書有用嗎

專業能力的高度認可:OCM 是 Oracle認證的最高級別,是對數據庫從業人員技術、知識和操作技能的最高級認可,也是 IT 界頂級認證之一。它表明持證者具備處理關鍵業務數據庫系統和應用的能力,能夠解決最困難的技術難題和最復雜的系統故…

InnoDB 如何解決幻讀:深入解析與 Java 實踐

在數據庫事務管理中,幻讀(Phantom Read)是并發操作中常見的問題,可能導致數據一致性異常。MySQL 的 InnoDB 存儲引擎通過其事務隔離機制和多版本并發控制(MVCC),有效解決了幻讀問題。作為 Java …

【AI編程技術爆發:從輔助工具到生產力革命】

目錄 前言:技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解關鍵技術模塊技術選型對比 二、實戰演示環境配置要求核心代碼實現運行結果驗證 三、性能對比測試方法論量化數據對比(2023年數據)結果分析 四、最…

ICRA-2025 | 視覺預測助力機器人自主導航!NavigateDiff:視覺引導的零樣本導航助理

論文:Yiran Qin 1 , 2 ^{1,2} 1,2, Ao Sun 2 ^{2} 2, Yuze Hong 2 ^{2} 2, Benyou Wang 2 ^{2} 2, Ruimao Zhang 1 ^{1} 1單位: 1 ^{1} 1中山大學, 2 ^{2} 2香港中文大學深圳校區論文標題:NavigateDiff: Visual Predictors are Ze…

【ESP32S3】GATT Server service table傳送數據到調試助手

前言 在初步學習esp32藍牙的過程中,借鑒了官方的GATT Server Service Table Example,可以在readme中看到,此demo是采用低功耗藍牙的通用屬性服務器來創建訂閱服務和特性。如果你接觸過MQTT,你會發現GATT Server這一特性和MQTT的訂…

DeepSeek :中國 AI 如何用 “小米加步槍” 逆襲硅谷

2025 年春節前夕,人工智能領域誕生了一項重大成果 ——DeepSeek 發布DeepSeek - R1 大模型。這一模型迅速引發廣泛關注,在蘋果 AppStore 中國區免費榜登頂。 DeepSeek 采用開源策略,依據寬松的 MIT 許可證,公開了模型權重、訓練方…

關稅擾動下市場波動,如何尋找確定性的長期之錨?

近期的關稅紛爭,擾動全球資本市場下行。A股市場一度大幅下跌。但隨著各大主力下場,有關部委發布有關有力措施,A股逐步穩住陣腳。 4月8日至4月10日,大盤指數連續3天上漲,上漲120多點,展現出較強的抵御關稅壁…

NeuroImage:膝關節炎如何影響大腦?靜態與動態功能網絡變化全解析

膝骨關節炎(KOA)是導致老年人活動受限和殘疾的主要原因之一。這種疾病不僅引起關節疼痛,還會顯著影響患者的生活質量。然而,目前對于KOA患者大腦功能網絡的異常變化及其與臨床癥狀之間的關系尚不清楚。 2024年4月10日,…

【KWDB 創作者計劃】KWDB 數據庫全維度解析手冊

——從原理到實踐,構建下一代數據基礎設施 ?第一章:KWDB 設計哲學與技術全景 1.1 為什么需要 KWDB? 在數據爆炸與業務場景碎片化的今天,傳統數據庫面臨三大挑戰:?擴展性瓶頸?(單機性能天花板&#xff…

一個批量文件Dos2Unix程序(Microsoft Store,開源)

這個程序可以把整個目錄的文本文件改成UNIX格式,源碼是用C#寫的。 目錄 一、從Microsoft Store安裝 二、從github獲取源碼 三、功能介紹 3.1 運行 3.2 瀏覽 3.3 轉換 3.4 轉換(無列表) 3.5 取消 3.6 幫助 四、源碼解讀 五、討論和…

std::string` 類

以下是對 std::string 類中 修改操作 和 字符串操作 的示例代碼&#xff0c;幫助你更好地理解這些函數的使用&#xff1a; 5. 修改操作 (1) operator 用于追加字符串、C 風格字符串或字符。 #include <iostream> #include <string>int main() {std::string str …

《Spring Boot+策略模式:企業級度假訂單Excel導入系統的架構演進與技術實現》

前言 在數字化時代背景下&#xff0c;訂單管理系統的高效性與靈活性成為企業競爭力的核心要素。本文檔詳細剖析了一個基于 策略模式 的度假訂單導入系統&#xff0c;通過分層架構設計實現了多源異構數據的標準化處理。系統以 Spring Boot 為核心框架&#xff0c;結合 MyBatis …

SSRF漏洞公開報告分析

文章目錄 1. SSRF | 獲取元數據 | 賬戶接管2. AppStore | 版本上傳表單 | Blind SSRF3. HOST SSRF一、為什么HOST修改不會影響正常訪問二、案例 4. Turbonomic 的 終端節點 | SSRF 獲取元密鑰一、介紹二、漏洞分析 5. POST | Blind SSRF6. CVE-2024-40898利用 | SSRF 泄露 NTL…

告別 ifconfig:為什么現代 Linux 系統推薦使用 ip 命令

告別 ifconfig&#xff1a;為什么現代 Linux 系統推薦使用 ip 命令 ifconfig 指令已經被視為過時的工具&#xff0c;不再是查看和配置網絡接口的推薦方式。 與 netstat 被 ss 替代類似。 本文簡要介紹 ip addr 命令的使用 簡介ip ifconfig 屬于 net-tools 包&#xff0c;這個…

VLC快速制作rtsp流媒體服務器

1.安裝vlc media player工具 2.打開后點擊菜單 媒體->流 3.添加mp4視頻&#xff0c;選擇串流 4.選擇 下一個 5.新目標選擇 RTSP&#xff0c;點擊添加按鈕 6.端口和路徑隨便填寫&#xff0c;如果推流失敗就換個端口。一路操作下去 7.點擊 流 按鈕后&#xff0c;就可以看到下圖…

基于 JavaWeb 的 SSM 在線視頻教育系統設計和實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…