今天小李哥为大家介绍的是利用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%通过)就可以获得证书了