aws(學習筆記第四十六課) codepipeline-build-deploy

文章目錄

  • aws(學習筆記第四十六課) codepipeline-build-deploy
  • 學習內容:
    • 1. 代碼鏈接及整體架構
      • 1.1 代碼鏈接
      • 1.2 整體架構
        • 1.2.1 初始化階段的`codecommit repo`以及`codebuild project`設定
        • 1.2.2 創建`vpc`,`public alb`,`alb listener`以及`fargate service`等
        • 1.2.3 創建`source`,`build`以及`deploy`等`stage`以及`deplyment group`,將部署和`alb listener`進行關聯
    • 2. 代碼詳細分析
      • 2.1 初始化階段代碼,創建`codecommit repo`以及`codebuild project`
        • 2.1.1 創建`codecommit repo`
        • 2.1.2 創建`Elastic Container Registry (ECR) image repository`
        • 2.1.3 創建`fargate task definition`
        • 2.1.4 創建`code build project`
        • 2.1.5 對`build project`賦予權限,對`imaga repo`能夠`push image`
        • 2.1.6 初始化階段使用`lambda`進行`code build project`觸發
        • 2.1.7 在初始化階段創建`custom resource`觸發上面`lambda`
      • 2.2 創建`vpc`,`public alb`,`alb listener`以及`fargate service`等
        • 2.2.1 創建`vpc`
        • 2.2.1 創建`target group green`以及`target group blue`
        • 2.2.2 創建`application loader balancer`的`security group`以及入站規則
        • 2.2.3 創建`application loader balancer`以及`listener`
        • 2.2.4 創建`fargate service`
      • 2.3 創建`source`,`build`以及`deploy`等`stage`以及`deplyment group`,將部署和`alb listener`進行關聯
        • 2.3.1 創建`source stage`
        • 2.3.2 創建`build stage`
        • 2.3.3 創建`deployment group`
        • 2.3.4 創建`deploy stage`,并將`deployment_group`指向上面創建的`deployment group`
        • 2.3.5 將`source`,`build`,`deploy`組合成`pipeline`
    • 3. 執行`cdk`
      • 3.1 執行命令
      • 3.2 訪問`endpoint`
      • 3.3 修改代碼進行改修和自動部署
        • 3.3.1 檢查`codecommit`
        • 3.3.2 創建`IAM user`進行代碼`commit`
        • 3.3.3 為`IAM user finlay`指定公鑰(public key)
        • 3.3.4 設定用戶的`config`文件
        • 3.3.5 對代碼進行clone
        • 3.3.6 對`codecommit`進行改修,并`push`
        • 3.3.7 檢驗修改后的頁面
    • 4. cleanup

aws(學習筆記第四十六課) codepipeline-build-deploy

  • 使用codebuild
  • 嘗試codedeploy

學習內容:

  • 定義codebuild
  • 使用codedeploy

1. 代碼鏈接及整體架構

1.1 代碼鏈接

代碼連接(codepipeline-build-deploy)

1.2 整體架構

整體架構分為三個部分:

  • 初始化階段,創建codecommit repo以及codebuild project
  • 創建vpcpublic albalb listener以及fargate service
  • 創建sourcebuild以及deploystage以及deplyment group,將部署和alb listener進行關聯
1.2.1 初始化階段的codecommit repo以及codebuild project設定

在這里插入圖片描述

這里,trigger code build分為兩個階段:

  • 初期階段,通過custom resource創建 ==> trigger lambda執行 ==> trigger code build project
  • 平時運用階段,通過code commitpush ==> trigger code build project
1.2.2 創建vpcpublic albalb listener以及fargate service

這些組件都是真正運行服務的部分。
在這里插入圖片描述

  • 首先生成一個Application Loader Balancer
  • 對這個Application Loader Balancer設定listener
  • 之后生成Target Group GreenTarget Group Blue 這里實現藍綠部署
  • Application Loader Balancer Listener設定defaulttarget group,這里設定為Target Group Green
1.2.3 創建sourcebuild以及deploystage以及deplyment group,將部署和alb listener進行關聯

在這里插入圖片描述

  • 創建source stageinputcode repo
  • source stage將整個code repo生成source artifact
  • 創建build stageinputsource artifact
  • build stage對整個source artifact進行build,主要是使用buildspec.yaml
  • build stage進行完docker build之后,將生成的docker image上傳到ecr
  • build stage進行完docker build之后,生成出deploy stage需要的appspec.yaml && cat taskdef.json
  • deploy stage使用appspec.yaml && cat taskdef.json對整個deployment group進行部署

2. 代碼詳細分析

2.1 初始化階段代碼,創建codecommit repo以及codebuild project

2.1.1 創建codecommit repo
# Creates an AWS CodeCommit repositorycode_repo = codecommit.Repository(self, "CodeRepo",repository_name="simple-app-code-repo",# Copies files from app directory to the repo as the initial commitcode=codecommit.Code.from_directory("app", "main"))

在這里插入圖片描述

2.1.2 創建Elastic Container Registry (ECR) image repository
  # Creates an Elastic Container Registry (ECR) image repositoryimage_repo = ecr.Repository(self, "ImageRepo")

在這里插入圖片描述

2.1.3 創建fargate task definition
        # 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}])

這里,創建一個container(docker),并將端口映射出80
在這里插入圖片描述

2.1.4 創建code build 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.code_commit(repository=code_repo,branch_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.

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

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

相關文章

Vue 項目中的組件職責劃分評審與組件設計規范制定

在現代前端系統中,Vue(無論是 2.x 還是 3.x)提供了良好的組件化機制,為構建復雜交互系統打下了基礎。然而,隨著項目規模增長,組件職責不清、代碼重疊、維護困難等問題頻發,嚴重影響開發效率與可…

react 的過渡動畫

一、React的過渡動畫 1、react-transition-group 在開發中,我們想要給一個組件的顯示和消失,添加某種過渡動畫,可以很好的增加用戶體驗, React社區為我們提供了react-transition-group用來完成過渡動畫, React曾為…

深度學習:PyTorch人工神經網絡優化方法分享(1)

本文目錄: 一、從梯度角度入手(一)梯度下降算法回顧(二)常用優化算法1.SGD(Stochastic Gradient Descent)- 隨機梯度下降2.BGD (Batch Gradient Descent) - 批量梯度下降3.MBGD (Mini-Batch Gra…

(三)yolov5——模型訓練

一、準備數據 先準備一個MP4的視頻 1.測試一幀 使用opencv來提取每一個視頻的幀 先使用以下代碼查看一幀的內容,是否符合預期 import cv2 import matplotlib.pyplot as plt# 打開視頻文件 video cv2.VideoCapture("111.mp4") # 讀取一幀 ret, frame…

008 Linux 開發工具(下) —— make、Makefile、git和gdb

🦄 個人主頁: 小米里的大麥-CSDN博客 🎏 所屬專欄: Linux_小米里的大麥的博客-CSDN博客 🎁 GitHub主頁: 小米里的大麥的 GitHub ?? 操作環境: Visual Studio 2022 文章目錄 Linux 開發工具(下)Linux 項目自動化構建工…

前綴和題目:連續的子數組和

文章目錄 題目標題和出處難度題目描述要求示例數據范圍 解法思路和算法代碼復雜度分析 題目 標題和出處 標題:連續的子數組和 出處:523. 連續的子數組和 難度 5 級 題目描述 要求 給定一個整數數組 nums \texttt{nums} nums 和一個整數 k \tex…

隊的簡單介紹

隊列:只允許在一端進行插入數據操作,在另一端進行刪除數據操作的特殊線性表,隊列具有先進先出 FIFO(First In First Out)的特點。 入隊列:進行插入操作的一端稱為隊尾。 出隊列:進行刪除操作的一端稱為隊頭。 入隊列…

AI-Sphere-Butler之如何將豆包桌面版對接到AI全能管家~新玩法(一)

環境: AI-Sphere-Butler VBCABLE2.1.58 Win10專業版 豆包桌面版1.47.4 ubuntu22.04 英偉達4070ti 12G python3.10 問題描述: AI-Sphere-Butler之如何將豆包桌面版對接到AI全能管家~新玩法(一) 聊天視頻: AI真…

【STM32】啟動流程

1、.s啟動文件解析 STM32的啟動文件(一般是.s匯編文件,如startup_stm32f407xx.s)是STM32上電后執行的第一段代碼,承擔著“系統初始化化引導員”的角色。 它的主要作用是設置初始化棧指針(SP)、程序計數器&…

【vim】通過vim編輯器打開、修改、退出配置文件

通過vim編輯器打開任一配置文件 vim /etc/profile 英文輸入下,按i鍵進入INSERT模式,修改配置文件 完成修改后,按esc鍵退出INSERT模式 英文輸入下,輸入":wq!",即可保存并退出 :q #不保存并退出 :q! …

Effective Modern C++ 條款6:當 auto 推導類型不符合預期時,使用顯式類型初始化慣用法

在C開發中,auto關鍵字以其簡潔性和高效性被廣泛使用。然而,“自動推導”并非萬能,尤其在某些特殊場景下,auto的推導結果可能與開發者預期不符,甚至導致未定義行為。今天,我們以《Effective Modern C》條款6…

學習Linux進程凍結技術

原文:蝸窩科技Linux進程凍結技術 功耗中經常需要用到,但是linux這塊了解甚少,看到這個文章還蠻適合我閱讀的 1 什么是進程凍結 進程凍結技術(freezing of tasks)是指在系統hibernate或者suspend的時候,將…

GitHub 趨勢日報 (2025年06月22日)

📊 由 TrendForge 系統生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日獲星趨勢圖 今日獲星趨勢圖 624 LLMs-from-scratch 523 ai-engineering-hub 501 n8n 320 data-engineer-handb…

kotlin中為什么新增擴展函數功能?

在 Kotlin 中,擴展函數的本質是「不修改原有類代碼,為其新增功能」,這源自編程中「開閉原則」(對擴展開放,對修改關閉)的第一性原理。 核心需求:當需要給第三方庫的類(如 Android 的…

excel 數據透視表介紹

Excel 數據透視表(PivotTable)就是你的數據分析神器!它能幫你快速匯總、分類、比較和分析 大量數據,從看似雜亂無章的表格中一鍵提取關鍵信息 ,生成交互式的匯總報告。無需復雜公式,只需拖拽幾下,就能讓數據“開口說話”&#xff…

半導體行業中的專用標準產品ASSP是什么?

半導體行業中的專用標準產品ASSP是什么? “專用標準產品”(ASSP - Application Specific Standard Product)是半導體集成電路中的一個重要分類。 你可以把它理解為介于通用標準產品和全定制ASIC之間的一種芯片。以下是它的核心定義和特點&a…

秋招Day14 - MySQL - 鎖

MySQL中有幾種類型的鎖? 鎖粒度來分,有表鎖、頁鎖和行鎖。 加鎖機制劃分,有樂觀鎖和悲觀鎖。 按兼容性劃分,有共享鎖和排他鎖。 按鎖模式劃分,有記錄鎖,間隙鎖,next-key鎖,意向鎖…

/var/lib/docker/overlay2目錄過大怎么辦

/var/lib/docker/overlay2 是 Docker 默認用于存儲 容器鏡像和容器運行時數據 的核心目錄,基于 overlay2 存儲驅動實現。以下是其具體作用和內容的詳細解析: 1. overlay2 目錄的作用 存儲鏡像分層結構: Docker 鏡像采用分層設計,o…

JimuReport:一款免費的數據可視化報表工具

JimuReport(積木報表)是一款免費的企業級數據可視化報表軟件,提供拖拽的方式像搭建積木一樣完成在線設計,功能涵蓋數據報表、打印設計、圖表報表、門戶設計、大屏設計等。 數據源 JimuReport 支持 30 多種數據源,包括…

Neo4j.5.X社區版創建數據庫和切換數據庫

在使用Neo4j數據庫(版本:neo4j-community-5.22.0)時,系統自帶的“neo4j”和“system”數據庫適用于日常的簡單學習和練習,但對于新的項目,將項目數據與練習數據混用會帶來諸多不便,例如查詢效率…