在亚马逊云科技AWS利用IaC(基础设施即代码)设计和搭建云原生架构(附免费学习教程和证书)

今天小李哥为大家介绍的是利用IaC(基础设施即代码)设计和搭建亚马逊云科技AWS云原生架构。本篇文章将会介绍如何在亚马逊云科技上搭建云原生Serverless服务,所使用的开发服务介绍,并展示搭建云原生架构的cdk代码。小李哥同时会给大家分享快速学习亚马逊云科技热门、前沿技术的免费学习资源,并且学完了可以领取一门证书。

亚马逊云科技上云原生Serverless架构设计

Lambda 服务介绍

AWS Lambda 是一种无服务器计算服务,允许用户运行代码而无需预置或管理服务器。用户直接上传代码并设置上游触发器即可运行服务,然后 Lambda 会在事件触发时自动执行代码,只需为代码的执行时间付费。Lambda 支持多种编程语言,如 Node.js、Python、Java 等,并可以与其他 AWS 服务(如 S3、DynamoDB、Kinesis 等)无缝集成,是构建事件驱动型应用程序的理想选择。

API Gateway 服务介绍

Amazon API Gateway 是一个全托管的服务,使开发人员能够轻松创建、发布、维护、监控和保护 API。API Gateway 支持 RESTful API 和 WebSocket API,可以与 AWS Lambda、HTTP 端点、AWS 服务和其他后端系统集成。通过 API Gateway,用户可以创建安全、可扩展的 API,并利用内置的流量控制、监控和版本管理功能,从而简化 API 管理。

SQS 服务介绍

Amazon Simple Queue Service (SQS) 是一种完全托管的消息队列服务(云端Message Queue),设计用于解耦和扩展微服务、分布式系统和无服务器应用程序。SQS 提供了标准队列和 FIFO 队列两种类型,前者保证高吞吐量但不保证消息顺序,后者保证消息严格有序和按需一次处理。通过 SQS,您可以可靠地发送、存储和接收消息,确保不同系统组件之间的松耦合和高可用性。

在了解了云原生主流服务后,我们来学习如何使用代码定义和创建亚马逊云科技云基础设施(IaC)。我们使用的工具是AWS SDK,脚本语言为AWS CDK专用语言typescript。

什么是AWS CDK?

AWS Cloud Development Kit (AWS CDK) 是一个开源软件开发框架,允许开发人员使用熟悉的编程语言来定义云基础设施。CDK的出现使得创建和管理 AWS 资源变得更加简便和高效。通过使用 AWS CDK,开发人员可以以代码的形式编写基础设施,从而实现基础设施即代码(Infrastructure as Code, IaC)的实践。

如何在本地安装AWS CDK?

安装CDK需要提前安装好一系列的依赖Node.js, npm和aws cli,安装好上述依赖后,下面上具体的步骤:

安装 AWS CDK

npm install -g aws-cdk

验证安装

cdk --version

使用AWS CDK创建EC2服务器步骤:

初始化 CDK 项目

mkdir my-cdk
cd my-cdk
cdk init app --language typescript


安装必要的 AWS CDK 模块

npm install @aws-cdk/aws-ec2 @aws-cdk/core


 创建并定义lib/my-cdk-stack.ts 文件(ts就是定义云原生架构配置文件)

主应用程序文件(app.ts)

import * as cdk from '@aws-cdk/core';
import { SqsStack } from './sqs-stack';
import { LambdaStack } from './lambda-stack';
import { ApiGatewayStack } from './api-gateway-stack';

const app = new cdk.App();

const sqsStack = new SqsStack(app, 'SqsStack');
const lambdaStack = new LambdaStack(app, 'LambdaStack', sqsStack);
new ApiGatewayStack(app, 'ApiGatewayStack', lambdaStack);

app.synth();

创建 Lambda 函数

import * as cdk from '@aws-cdk/core';
import * as lambda from '@aws-cdk/aws-lambda';

export class LambdaStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // 创建 Lambda 函数
    const myLambda = new lambda.Function(this, 'MyLambda', {
      runtime: lambda.Runtime.NODEJS_14_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset('lambda'),
    });
  }
}

创建 API Gateway

import * as cdk from '@aws-cdk/core';
import * as apigateway from '@aws-cdk/aws-apigateway';
import { LambdaStack } from './lambda-stack';

export class ApiGatewayStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, lambdaStack: LambdaStack, props?: cdk.StackProps) {
    super(scope, id, props);

    // 创建 API Gateway REST API 并与 Lambda 集成
    const api = new apigateway.RestApi(this, 'MyApi', {
      restApiName: 'My Service',
      description: 'This service serves as an example.',
    });

    const lambdaIntegration = new apigateway.LambdaIntegration(lambdaStack.myLambda, {
      requestTemplates: { 'application/json': '{ "statusCode": "200" }' }
    });

    api.root.addMethod('GET', lambdaIntegration); // GET / 触发 Lambda
  }
}

创建 SQS 队列

import * as cdk from '@aws-cdk/core';
import * as sqs from '@aws-cdk/aws-sqs';

export class SqsStack extends cdk.Stack {
  public readonly myQueue: sqs.Queue;

  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // 创建 SQS 队列
    this.myQueue = new sqs.Queue(this, 'MyQueue', {
      visibilityTimeout: cdk.Duration.seconds(300)
    });
  }
}

云原生课程介绍

本次课程和证书是关于目前云上开发最🔥的Serverless无服务器开发,Serverless服务说白了就是一台服务器,大家可以部署写好的代码,但是服务器是由AWS帮忙维护的,减轻了基础设施维护压力,而且基础设施可以根据并发请求数量自动扩容,保证系统性能。证书名字叫AWS Educate Getting Start with Serverless,内含免费课程和经典AWS实验(没听错,免费给你用AWS做实验,通过10道测试题后拿证书(5分钟就能拿到)。


小李哥同时准备了AWS全部12门证书考试题库和该证书题库,请关注下小李哥私聊获取。

1️⃣ 这张证书包括什么?

▶️ 首先介绍AWS Educate(免费教育计划) 

它是面向在校学生、AWS初学者,帮助他们学习、精通AWS的免费项目。包括包括数百小时的课程+免费实验,实验为真实AWS环境,大家不需要自己付费创建AWS资源,良心推荐。除了这张开发者证书,还有其他9张关于AWS☁️基础、Web系统开发、数据库、网络、DevOps、安全、DeepRacer(AWS 无人驾驶服务)的免费证书可以拿,快跟着小李哥一起也拿下AWS 52张认证!



▶️这张无服务器开发证书有什么?

包括目前无服务开发最热门的几个知识点

➡️ serverless服务 - AWS Lambda

➡️ 云上API管理服务 - API Gateway

➡️ 云消息通知、Pub/Sub服务- SNS

➡️ 云上Message Queue服务- SQS

2️⃣我该如何考试获取免费证书

▶️ 从主页进入课程
▶️ 进入登录界面,输入账号密码并登录


▶️ 点击图中左边栏的DashBoard,点击红框进入课程


▶️ 课程包括1个视频和1节实验(可以不做,点Next直接跳过到最后的测试)


▶️ 考过最后中的Final Assessment(10道题,70%通过)就可以获得证书了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python:sympy 求解一元五次方程式

pip install sympy 或者 本人用的 anaconda 3 自带 sympy 在北大数学训练营,韦东奕 用卡丹公式 巧妙 求解一元五次方程式: \latex $x^510*x^320*x-4 0$ from sympy import *x symbols(x) expr x**5 10*x**3 20*x -4# 用卡丹公式 尝试化简 a sym…

冒泡排序与其C语言通用连续类型排序代码

冒泡排序与其C语言通用连续类型排序代码 冒泡排序冒泡排序为交换排序的一种:动图展示:冒泡排序的特性总结:冒泡排序排整型数据参考代码(VS2022C语言环境): 冒泡排序C语言通用连续类型排序代码对比较的方式更…

MVC 控制器 中Action 不能同名,参数不一样,路由器寻找不到对应的,要加特性

//1 方法不可能完全相同,参数不同//2 那还需要特性吗?需要的,因为MVC选择方法时,不是按参数选择:http请求发送很多数据,其实没法识别,//因为mvc找方法是通过反射来的,GetMethods(nam…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(六)仿钉钉流程的转bpmn流程图

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、转bpmn流程图接口 /*** 转为bpmn xml格式* param processModel* throws IOException*/PostMapping("/ddtobpmnxml")public Result<?> ddToBpmnXml(RequestBody Proce…

int类型变量表示范围的计算原理

文章目录 1. 了解2. 为什么通常情况下int类型整数的取值范围是-2147483648 ~ 21474836473. int类型究竟占几个字节4. 推荐 1. 了解 通常情况下int类型变量占4个字节&#xff0c;1个字节有8位&#xff0c;每位都有0和1两种状态&#xff0c;所以int类型变量一共可以表示 2^32 种状…

Javascript[ECMAScript] 新特性—1

背景 JS1.1&#xff08;1997&#xff09; 第一版基于Netscape Navigator 3.0中实现的JAVASCRIPT 1.1 JS1.2&#xff08;1999&#xff09; 基于Netscape Navigator 4.0中实现的JavaScript 1.2。添加了正则表达式、更好的字符串处理、新的控制语句、Try/Catch异常处理、更严格…

Qt/C++项目积累: 2.主机监控器 - 2.2 历史功能实现

修订历史&#xff1a; 20240711&#xff1a;初始表设计&#xff0c;采用sqlite 正文&#xff1a; 关于历史数据存储&#xff0c;考虑的是用数据库来完成&#xff0c;目前考虑使用Sqlite和mysql&#xff0c;先用sqlite来实现&#xff0c;设计表过程如下&#xff1a; 机器总览…

SpringBoot 3.3 【一】手把手讲解-使用Eclipse创建第一个SpringBoot应用程序

简单动作&#xff0c;深刻联结。在这技术海洋&#xff0c;我备好舟&#xff0c;等你扬帆。启航吧&#xff01; &#x1f31f;点击【关注】&#xff0c;解锁定期的技术惊喜&#xff0c;让灵感与知识的源泉不断涌动。 &#x1f44d;一个【点赞】&#xff0c;如同心照不宣的默契&a…

FL Studio21.9.821最新中文版来啦!附带永久免费下载地址

【音乐制作新宠&#xff0c;FL Studio21中文版来啦&#xff01;&#x1f389;】 嘿&#xff0c;音乐爱好者们&#x1f3a7;&#xff0c;今天要给大家种草一个超酷炫的宝贝儿——FL Studio21中文版&#xff01;这货简直就是音乐制作界的小可爱加实力派&#xff0c;让我彻底沦陷了…

Dify中的RAG和知识库

一.RAG 基本架构 当用户提问 “美国总统是谁&#xff1f;” 时&#xff0c;系统并不是将问题直接交给大模型来回答&#xff0c;而是先将用户问题在知识库中进行向量搜索&#xff0c;通过语义相似度匹配的方式查询到相关的内容&#xff08;拜登是美国现任第46届总统…&#xff0…

2024年7月2日~2024年7月8日周报

目录 一、前言 二、完成情况 2.1 吴恩达机器学习系列课程 2.1.1 分类问题 2.1.2 假说表示 2.1.3 判定边界 2.2 学习数学表达式 2.3 论文写作情况 2.3.1 题目选取 2.3.2 摘要 2.3.3 关键词 2.3.4 引言部分 2.3.4 文献综述部分 三、下周计划 3.1 存在的问题 3.2 …

Java高级重点知识点-24-函数式接口

文章目录 函数式接口函数式编程常用函数式接口 函数式接口 有且仅有一个抽象方法的接口。 格式&#xff1a; 修饰符 interface 接口名称 {public abstract 返回值类型 方法名称(可选参数信息);// 其他非抽象方法内容 }public interface MyFunctionalInterface {void myMethod…

企事业网站需要做软件测试吗?包括哪些测试内容和好处?

在这个数字化时代&#xff0c;企事业网站已经成为宣传和交流的重要平台&#xff0c;它的稳定性、安全性和用户体验对于企业形象和业务发展至关重要。因此&#xff0c;为了确保企事业网站的良好运行&#xff0c;对其进行软件测试是至关重要的。那么网站测试具体有哪些好处?又包…

分享一款嵌入式开源LED指示灯控制代码框架cotLed

一、工程简介 cotLed是一款轻量级的LED控制软件框架&#xff0c;可以十分方便地控制及自定义LED的各种状态&#xff0c;移植方便&#xff0c;无需修改&#xff0c;只需要在初始化时实现单片机硬件GPIO初始化&#xff0c;同时为框架接口提供GPIO写函数即可。 框架代码工程地址&a…

【电子通识】无源元件与有源元件的定义和区别是什么?

当提到构成电路的电子器件时,许多人可能会想到晶体管、电容器、电感器和电阻器等器件。一般情况下,我们使用的电子器件分为两大类,即“有源元件”和“无源元件”。 有源元件是主动影响(如放大、整流、转换等)所供给电能的元件。 无源元件是对所供给的电能执行被动…

Linux编程第三篇:Linux简介,开源软件简介(Linux是否安全?参考TESEC指标)

业精于勤荒于嬉&#xff0c;行成于思毁于随。 今天这篇算是Linux的正式学习&#xff0c;废话不多说&#xff0c;我们开始吧 第三篇 一、UNIX与Linux发展史1.1、UNIX发展历史和发行版本1.2、UNIX主要发行版本1.3、Linux发展历史1.4、Linux内核版本1.5、Linux主要发行版本 二、开…

土木转行嵌入式,拿到一家初创公司的嵌入式研发offer,值得去吗

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;不论从未来行业的发展前景…

Linux 初识

目录 ​编辑 1.Linux发展史 1.1UNIX发展历史 1.2Linux发展历史 2.Linux的开源属性 2.1 开源软件的定义 2.2 Linux的开源许可证 2.3 开源社区与协作 3.Linux的企业应用现状 3.1 服务器 3.1.1 Web服务器 3.1.2 数据库服务器 3.1.3 文件服务器 3.1.4 电子邮件服务器 …

基于Android平台开发,备忘录记事本

相关视频教程在某站上面(&#x1f50d;浩宇软件开发) 1. 项目功能思维导图 2. 项目涉及到的技术点 使用CountDownTimer实现开屏页倒计时使用SQLite数据库存储数据使用BottomNavigationView实现底部导航栏使用ActivityFragment实现底部导航栏页面切换使用RecyclerViewadapter实…

uni-app/vue项目如何封装全局消息提示组件

效果图&#xff1a; 第一步&#xff1a;封装组件和方法&#xff0c;采用插件式注册&#xff01; 在项目目录下新建components文件夹&#xff0c;里面放两个文件&#xff0c;分别是index.vue和index.js. index.vue&#xff1a; <template><div class"toast&quo…