文章目录

  • 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”数据库适用于日常的简单学习和练习,但对于新的项目,将项目数据与练习数据混用会带来诸多不便,例如查询效率…