aws(学习笔记第十八课)
学习内容:
- 使用aws cdk(python)举行摆设
- 团体代码(python的通常工程)
- 代码动作
1. 使用aws cdk(python)举行摆设
- aws cdk的团体架构
前面使用了cloudformation举行了json的aws的各种组件的定义和使用,但是对于熟悉开发语言程序员,不能举行灵活的使用开发语言(python,nodejs,java等等)举行灵活的aws组件的定义摆设,实在是不能担当的,aws cdk满足了这方面的要求。
使用aws cdk,可以使用各种熟悉的语言就行aws的摆设,另外还避免了aws cloudformation的复杂json的代码编写。但是,底层来说,aws cdk还是会将写出的aws配置,终极转换成cloudformation,举行摆设。
2. 团体代码(python的通常工程)
以python为底子语言,开始开发aws cdk。
- 情况准备
需要以下的软件准备。
- 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的开发语言
- 各种软件安装具体
- 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的安装
- Python # cdk的开发语言
安装开发语言Python
python downloads
- 开始简单的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
复制代码 - 将pip的download url指向aliyun阿里云
- pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
- pip config set install.trusted-host mirrors.aliyun.com
复制代码 - 编写cdk的python代码(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)
- # VPC
- my_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 group
- my_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 rule
- my_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 ami
- amzn_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 instance
- my_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执行的差分
3. 代码动作
- 执行cdk bootstrap
默认aws下,是没有执行cdk所需要的role的,第一次需要执行cdk bootstrap
之后查抄aws的role作成情况。
- 为aws cli的用户附上权限
这里,固然已经主动天生了role来表现能够执行cdk,但是aws cli的执行用户还是没有能够sts:AssumeRole即assume这些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。
- 执行deploy
- cdk --require-approval never deploy
复制代码 默认需要承认(approval),会导致不执行摆设,这里设置成--require-approval never
可以看到,这里还是通过cloudformation底层来实现aws服务的摆设。
进入cloudformation之后,看到会出现stack
查抄ec2 instance
末了清算cloudformation
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |