aws(学习笔记第十八课) 使用aws cdk(python)进行部署

aws(学习笔记第十八课)

  • 使用aws cdk(python)进行部署

学习内容:

  • 使用aws cdk(python)进行部署
  • 整体代码(python的通常工程)
  • 代码动作

1. 使用aws cdk(python)进行部署

  • aws cdk的整体架构
    前面使用了cloudformation进行了jsonaws的各种组件的定义和使用,但是对于熟悉开发语言程序员,不能进行灵活的使用开发语言(python,nodejs,java等等)进行灵活的aws组件的定义部署,实在是不能接受的,aws cdk满足了这方面的要求。
    使用aws cdk,可以使用各种熟悉的语言就行aws的部署,另外还避免了aws cloudformation的复杂json的代码编写。但是,底层来说,aws cdk还是会将写出的aws配置,最终转换成cloudformation,进行部署。在这里插入图片描述

2. 整体代码(python的通常工程)

python为基础语言,开始开发aws cdk

  1. 环境准备
    需要以下的软件准备。

    • AWS CLI #最终执行的aws cdk的底层命令
    • AWS Account and User #最终执行的aws cdk的用户
    • Node.js #使用Node.js安装cdk
    • IDE for your programming language # 一般使用vs code
    • AWS CDK Toolkit # cdk的命令安装
    • Python # cdk的开发语言
  2. 各种软件安装详细

    • aws cli
      aws cli可以使用installer来安装。 在这里插入图片描述

    aws cli installer

    • AWS Account and User
      这里需要创建用户,用来执行cdk
      在这里插入图片描述

    • Node.js
      nodejs
      在这里插入图片描述

    • IDE for your programming language # 一般使用vs code
      这个比较通用,省略安装步骤。

    • AWS CDK Toolkit # cdk的安装

      npm install -g aws-cdk
      

      在这里插入图片描述

    • Python # cdk的开发语言
      安装开发语言Python
      python downloads

  3. 开始简单的aws cdk程序开发

    • 程序文件夹作成(使用git bash中执行)
      注意,没有特殊说明,执行的命令都是在项目的文件夹下
      mkdir finlay_20241215 && cd finlay_20241215
      
    • 激活virtual environment venv
      python -m venv .venv
      source .venv/Scripts/activate
      
    • 作成cdk的工程
      cdk init app --language python
      
    • pipdownload url指向aliyun阿里云
      pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
      pip config set install.trusted-host mirrors.aliyun.com
      
    • 编写cdkpython代码(finlay_20241215/app.py)
      #!/usr/bin/env python3
      import os
      import aws_cdk as cdk
      from aws_cdk import (aws_ec2 as ec2,Stack
      )
      from constructs import Construct
      from finlay_20241215.finlay_20241215_stack import Finlay20241215Stack
      app = cdk.App()
      class Finlay20241215Stack(Stack):def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:super().__init__(scope, construct_id, **kwargs)# VPCmy_vpc = ec2.Vpc(self,id="my-vpc",cidr="192.168.0.0/16",nat_gateways=0, # NatGatewayを作成しない指定subnet_configuration=[ec2.SubnetConfiguration(name="my-public-subnet",subnet_type=ec2.SubnetType.PUBLIC,cidr_mask=24)])# security groupmy_ec2_security_group = ec2.SecurityGroup(self,id="my-ec2-sg",vpc=my_vpc,allow_all_outbound=True,security_group_name="my-ec2-sg")# add ingress rulemy_ec2_security_group.add_ingress_rule(peer=ec2.Peer.ipv4("0.0.0.0/0"),connection=ec2.Port.tcp(22),description="allow ssh access")#  set amiamzn_linux = ec2.MachineImage.latest_amazon_linux(generation=ec2.AmazonLinuxGeneration.AMAZON_LINUX,edition=ec2.AmazonLinuxEdition.STANDARD,virtualization=ec2.AmazonLinuxVirt.HVM,storage=ec2.AmazonLinuxStorage.GENERAL_PURPOSE,cpu_type=ec2.AmazonLinuxCpuType.X86_64)# launch ec2 instancemy_ec2_instance = ec2.Instance(self,id="my-ec2-instance",instance_type=ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2,ec2.InstanceSize.MICRO),machine_image=amzn_linux,vpc=my_vpc,vpc_subnets=ec2.SubnetSelection(subnet_type=ec2.SubnetType.PUBLIC),instance_name="my-ec2-instance",security_group=my_ec2_security_group)
      Finlay20241215Stack(app, "Finlay20241215Stack")
      app.synth()
      
    • pip导入必须要的cdk依赖包
      pip install -r requirements.txt
      
    • 执行cdk diff查看将要进行的cdk执行的差分
      cdk diff
      

    在这里插入图片描述

3. 代码动作

  1. 执行cdk bootstrap
    默认aws下,是没有执行cdk所需要的role的,第一次需要执行cdk bootstrap
    cdk bootstrap
    
    在这里插入图片描述
    之后检查awsrole作成情况。
    在这里插入图片描述
  2. aws cli的用户附上权限
    这里,虽然已经自动生成了role来表示能够执行cdk,但是aws cli的执行用户还是没有能够sts:AssumeRoleassume这些role的权限。需要继续准备。
    • 选择aws cli用户,添加权限
      在这里插入图片描述
      这里,选择创建内联权限
      在这里插入图片描述
      选择JSON直接进行编辑
      在这里插入图片描述
      权限JSON代码
      {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["sts:AssumeRole"],"Resource": ["arn:aws:iam::*:role/cdk-*"]}]
      }
      

在这里插入图片描述
至此,aws cli的当前用户就能够执行cdk-开头的role,有权限执行aws cdk

  1. 执行deploy
    cdk --require-approval never deploy
    
    默认需要承认(approval),会导致不执行部署,这里设置成--require-approval never

在这里插入图片描述
可以看到,这里还是通过cloudformation底层来实现aws服务的部署。
在这里插入图片描述
进入cloudformation之后,看到会出现stack
在这里插入图片描述
检查ec2 instance
在这里插入图片描述
最后清理cloudformation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeBSD vs Linux:哪个开源操作系统更强大

FreeBSD 和 Linux,哪一个更强大?这个问题没那么简单。它们各有春秋,不能一概而论。 来自我们 A-Team Systems 的专家们有数十年这两个系统的使用经验,所以,我们将详细阐述这两个系统的优势和劣势,供你选择…

网络基础 - TCP/IP 五层模型

文章目录 一、OSI 参考模型中各个分层的作用1、应用层2、表示层3、会话层4、传输层5、网络层6、数据链路层7、物理层 二、OSI 参考模型通信处理示例 一、OSI 参考模型中各个分层的作用 1、应用层 2、表示层 负责设备固有数据格式和网络标准数据格式间的转换 实际生活中&#…

C++中的接口继承和实现继承以及多态性与性能的平衡处理

接口继承 接口继承是指子类只继承基类的纯虚函数,即只继承基类的接口,而不继承基类的实现。子类必须实现基类中的所有纯虚函数,否则子类也将成为抽象类。在 C 中,接口继承主要通过抽象类来实现。抽象类是包含至少一个纯虚函数的类…

大数据相关标准——GB/T 38676-2020信息技术 大数据 存储与处理系统功能测试要求(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 大数据相关标准…

Mysql基础操作(1)

目录 简介 1. 数据库的创建与删除 1.1 创建数据库 1.2 删除数据库 2. 表的创建与删除 2.1 创建表 2.2 删除表 3. 数据插入 4. 数据查询 4.1 基本查询 4.2 条件查询 4.3 多条件查询 4.4 排序查询 4.5 分页查询 5. 数据更新 6. 数据删除 7. 总结 简介 MySQL 是一…

查看服务器或系统架构(amd64、arm64...)

要确定您的服务器或系统是基于i386、armhf、amd64还是arm64架构,可以通过一系列命令行工具来获取相关信息。以下是具体的方法和步骤: 1. 使用 uname 命令 uname -m 是最常用的方法之一,它可以快速地显示系统的硬件架构。根据输出的不同字符…

MySQL 调优技巧|索引什么时候失效?为什么?

写在前面 优化慢SQL,这是在工作或者面试中都不可避免的问题。这篇文章我们就来讲讲慢SQL的优化的一些方法! 1. 升配 最简单的一步就是升配!!当然在降本增效的当下,很难能将这种单子审批下来了! 2. 索引…

有线通信与无线通信技术的深度剖析与比较

有线通信与无线通信技术的深度剖析与比较 摘要: 本文详细阐述了有线通信技术和无线通信技术的原理、特点、应用场景、技术标准以及发展趋势等方面的内容,并对二者进行了深入的比较分析。通过全面探讨,旨在使读者清晰地理解这两种通信技术的差…

ARM/Linux嵌入式面经(五五):未岚大陆

文章目录 0、项目中既有flash又有E2,为什么不只使用一个?问题回答:1、uart通信与i2c通讯的硬件区别;2、说说你理解的pid算法;问题回答3、串口转usb怎么实现的?问题回答:4、软件采集的adc数据有没有滤波;问题回答5、是否使用过boot?你觉得使用boot的注意事项是什么?问…

《封装继承与多态》封装的优势

文章目录 封装在面向对象编程中的优势1. 提高代码的可读性和可维护性2. 提高代码的安全性3. 降低代码的复杂性案例举例 封装在敏捷开发和团队合作中的优势1. 促进敏捷开发2. 促进团队合作案例举例 封装在面向对象编程中的优势 封装是面向对象编程(Object-Oriented …

高级Python游戏开发:创建一款多人对战坦克大战

在本教程中,我们将用Python的Pygame库开发一款高级的坦克大战游戏。这款游戏支持多人对战、碰撞检测、子弹射击以及地图障碍生成,适合作为学习Python高级游戏开发的练习项目。 一、游戏功能概述 多人对战模式:玩家可以操作坦克,在同一屏幕上互相攻击。子弹射击:坦克可以发…

【芯片设计- RTL 数字逻辑设计入门 番外篇 7.1 -- 基于ATE的IC测试原理】

文章目录 ATE 测试概述Opens/Shorts测试Leakage测试AC测试转自:漫谈大千世界 漫谈大千世界 2024年10月23日 23:17 湖北 ATE 测试概述 ATE(Automatic Test Equipment)是用于检测集成电路(IC)功能完整性的自动测试设备。它在半导体产业中扮演着至关重要的角色,主要用于检…

WPF+MVVM案例实战与特效(三十九)- 深度剖析一个弧形进度条的实现

文章目录 1、使用 Path 结合 ArcSegment 绘制圆弧1、属性解读2、静态圆弧3、动态圆弧4、运行效果5、圆弧两端点的形状2、总结1、使用 Path 结合 ArcSegment 绘制圆弧 1、属性解读 Path 是 WPF 中的一个标记元素,用于绘制复杂的几何路径形状,而 ArcSegment 用于描述 Path 中…

YOLOv5-Backbone模块实现

YOLOv5-Backbone模块实现 🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍖 原作者:K同学啊 电脑系统:Windows11 显卡型号:NVIDIA Quadro P620 语言环境:python 3.9.7 编译器&#xff1a…

软件需求规格说明书文档,系统需求规格说明书下载,软件工程需求规格案例模板参考(word原件)

1 范围 1.1 系统概述 1.2 文档概述 1.3 术语及缩略语 2 引用文档 3 需求 3.1 要求的状态和方式 3.2 系统能力需求 3.3 系统外部接口需求 3.3.1 管理接口 3.3.2 业务接口 3.4 系统内部接口需求 3.5 系统内部数据需求 3.6 适应性需求 3.7 安全性需求 3.8 保密性需求 3.9 环境需求…

青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序

青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序 课题摘要:一、Web应用程序二、Web服务器(一)什么是Web服务器(二)Web服务器配置1. 选择服务器软件2. 安装服务器软件3. 配置服务器4. 安全设置5. 部署网站内容6. 测试服…

Linux - MySQL迁移至一主一从

Linux - MySQL迁移至一主一从 迁移准备安装MySQL ibd文件迁移原服务器操作目标服务器操作 一主一从增量同步异常解决结尾 首先部分单独安装MySQL,请参考Linux - MySQL安装,迁移数据量比较大约400G左右且网络不通故使用文件迁移,需开启一段时间…

29. Three.js案例-自定义平面图形

29. Three.js案例-自定义平面图形 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它利用 WebGL 技术在浏览器中渲染 3D 图形。 构造器 THREE.WebGLRenderer(parameters : object) 参数类型描述parametersobject可选参数对象&…

SpringBoot开发——集成Java审计日志工具Spring Data Envers

文章目录 一、Spring Data Envers是什么二、集成步骤1、添加依赖2、然后在启动类上添加启用注解3、创建一个审计实体4、使用审计仓库5、高级功能 三、总结 一、Spring Data Envers是什么 Spring Data Envers是Spring Data家族中专门负责数据审计的成员。它基于Hibernate Enver…

大模型运用-Prompt Engineering(提示工程)

什么是提示工程 提示工程 提示工程也叫指令工程,涉及到如何设计、优化和管理这些Prompt,以确保AI模型能够准确、高效地执行用户的指令,如:讲个笑话、java写个排序算法等 使用目的 1.获得具体问题的具体结果。(如&…