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

news2024/11/13 10:52:51

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

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

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

相关文章

第一关:Linux基础知识

Linux基础知识目录 前言LinuxInternStudio 关卡1. InternStudio开发机介绍2. SSH及端口映射2.1 什么是SSH?2.2 如何使用SSH远程连接开发机?2.2.1 使用密码进行SSH远程连接2.2.2 配置SSH密钥进行SSH远程连接2.2.3 使用VScode进行SSH远程连接 2.3. 端口映射…

Linux 程序卡死的特殊处理

一、前言 Linux环境。 我们在日常编写的程序中,可能会出现一些细节问题,导致程序卡死,即程序没法正常运行,界面卡住,也不会闪退... 当这种问题出现在客户现场,那就是大问题了。。。 当我们暂时还无法排…

1、项目目录设计

文章目录 前言一、项目目录设计 前言 本项目我们将会完成一个Go项目开发框架,该项目不会包含具体的CRUD业务代码,而是从头搭建一个工作中实用的开发框架。让开发者能够熟悉整个项目的搭建流程,能够独立完成项目从0到1的搭建,而且…

【爬虫】解析爬取的数据

目录 一、正则表达式1、常用元字符2、量词3、Re模块4、爬取豆瓣电影 二、Xpath1、Xpath解析Ⅰ、节点选择Ⅱ、路径表达式Ⅲ、常用函数 2、爬取豆瓣电影 解析数据,除了前面的BeautifulSoup库,还有正则表达式和Xpath两种方法。 一、正则表达式 正则表达式…

Pandas数学函数大揭秘:让数据处理变得如此简单高效,轻松玩转数据分析新纪元!

1.导包 # 导包 import numpy as np import pandas as pd2.聚合函数 df pd.DataFrame(datanp.random.randint(0,100,size(5,3))) df01203550281552376231419335895434679917 # 列非空元素的数量 df.count()0 5 1 5 2 5 dtype: int64# 行非空元素的数量 df.count(ax…

tableau范围-线图与倾斜图绘制 - 14

范围-线图与倾斜图 1.范围-线图1.1 含义1.2 范围-线图1.2.1 折线图绘制1.2.2 设置计算字段1.2.3 添加详细信息1.2.4 添加参考线1.2.5 结果 2. 倾斜图2.1 含义2.2 倾斜图绘制2.2.1 数据导入2.2.2 创建计算字段2.2.3 排名编辑表计算2.2.4 显示标签2.2.5 标签格式设置2.2.6 修改排…

系统服务综合作业01

题目: 现有主机 node01 和 node02,完成如下需求: 1、在 node01 主机上提供 DNS 和 WEB 服务 2、dns 服务提供本实验所有主机名解析 3、web服务提供 www.rhce.com 虚拟主机 4、该虚拟主机的documentroot目录在 /nfs/rhce 目录 5、该目录由 no…

RK3568平台开发系列讲解(内存篇)Linux进程内存的消耗统计

🚀返回专栏总目录 文章目录 一、VSS(Virtual Set Size)二、RSS(Resident Set Size)三、PSS(Proportional Set Size)四、USS(Unique Set Size)五、其他工具Linux 提供了多种进程内存占用的度量指标, 它们反映了不同的内存使用特征: VSS 反映进程虚拟内存总需求, 包括未…

启航IT之旅:为新生绘制的学习路线图

随着七月的热浪悄悄席卷而来,各地高考成绩陆续放榜,对于刚迈过高考这座独木桥的你们,这不仅仅是一个故事的终章,更是另一段冒险的序曲。特别是那些心中有一团IT火焰燃烧的少年们,暑假的钟声已经敲响,是时候…

多目标螳螂搜索算法MOMSA求解无人机三维路径规划,可以自行修改障碍物位置(MATLAB代码)

无人机路径规划多目标优化求解是一个复杂的过程,涉及到多个目标的考量和优化算法的应用。以下是一些关键点和相关算法的概述: 1. **多目标优化策略**:在无人机路径规划中,需要同时考虑多个目标,如路径长度、安全性、飞…

初学SpringMVC之接收请求参数及数据回显

pom.xml 文件导入 lombok 的依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version></dependency> Controller 表示这是一个控制器 RequestParam 表示从前端接收…

SD卡讲解

SD 卡 (Secure Digital Memory Card) 在我们生活中已经非常普遍了&#xff0c;控制器对 SD 卡进行读写通信 操作一般有两种通信接口可选&#xff0c;一种是 SPI 接口&#xff0c;另外一种就是 SDIO 接口。SDIO 全称是安全数 字输入/输出接口&#xff0c;多媒体卡 (MMC)、SD 卡、…

Elon Musk开源Grok

转载自&#xff1a;AILab基地 早在6天前&#xff0c;马斯克就发文称xAI将开源Grok 图片 13小时前&#xff0c;马斯克开源了旗下公司X的Grok训练模型&#xff0c;并喊话OpenAI&#xff0c;你名字里的Open到底在哪里 图片 下面是xai-org的GitHub开源地址[https://github.com/x…

HTTP-概述

概念 :Hyper Text Transfer Protocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 原始数据格式 特点 1. 基于TCP协议:面向连接&#xff0c;安全&#xff08;三次握手&#xff09; 2. 基于请求-响应模型的:一次请求对应一次响应&#xf…

无障碍全免费上手智能体:Autogen Studio结合Deepseek Coder打造一款AI旅游规划师

本文的唯一目的是通过打造一款AI旅游规划师&#xff0c;通俗易懂、深入浅出的讲清楚AI应用的大方向-智能体-的原理。 无需科学上网&#xff0c;无需付费API&#xff0c;无需编程能力&#xff0c;一小时即可部署、搭建一款复杂的、多代理交互的AI智能体-旅游规划师&#xff0c;…

LeetCode之最长回文子串

1.题目链接 5. 最长回文子串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/longest-palindromic-substring/description/ 2.题目解析 对于这道题目我们可以使用动态规划的思路来求解&#xff0c;具体思路是&#xff0c;对于一个长度大于2的子串&…

EXSI 实用指南 2024 -编译环境 Ubuntu 安装篇(二)

1. 引言 在当今的虚拟化领域&#xff0c;VMware ESXi 是备受推崇的虚拟化平台&#xff0c;广泛应用于企业和个人用户中。它以卓越的性能、稳定的运行环境和丰富的功能&#xff0c;为用户提供了高效的硬件资源管理和简化的 IT 基础设施维护。然而&#xff0c;如何在不同操作系统…

Socks5代理为何比HTTP代理快?

在网络世界中&#xff0c;代理服务器扮演着重要的角色&#xff0c;它们能够帮助我们访问被限制的网站、提高网络安全性以及优化网络性能。其中&#xff0c;Socks5代理和HTTP代理是两种常见的代理类型。然而&#xff0c;很多用户发现&#xff0c;相较于HTTP代理&#xff0c;Sock…

JavaScript(9)——作用域的一些问题

如果在函数内部&#xff0c;变量没有声明直接赋值&#xff0c;也会当做全局变量看。强烈不推荐&#xff01;&#xff01; function op() {num 80}op()console.log(num) 在不同作用域下&#xff0c;可能存在变量命名冲突的情况&#xff1a; let num 10 function fn(){let num…

使用 Google 的 Generative AI 服务时,请求没有包含足够的认证范围(scopes)

题意&#xff1a; Google generativeai 403 Request had insufficient authentication scopes. [reason: "ACCESS_TOKEN_SCOPE_INSUFFICIENT" 问题背景&#xff1a; I have tried the simple POC for generativeai on its own to do generate_content and it works…