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.mzph.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、系统功能实现、代码编写、论文编写和辅导、论文…