零基础5分钟上手亚马逊云科技-代码创建云原生基础设施

本文主要是介绍零基础5分钟上手亚马逊云科技-代码创建云原生基础设施,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介:

欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。

我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何利在亚马逊云科技上利用AWS Serverless Application Model开发框架创建云原生基础设施,如”Amazon API Gateway, AWS Lambda, AWS CodePipeline“等,提升基础设施创建效率,简化管理。下面就是亚马逊云科技上最基础的云原生架构图:

方案所需基础知识

什么是亚马逊云科技 AWS SAM 框架?

亚马逊云科技 AWS Serverless Application Model(AWS SAM)是一种开源框架,专门用于构建无服务器应用程序。AWS SAM 提供了简化的语法,帮助开发者在 AWS 云上定义和部署无服务器资源,如 AWS Lambda 函数、API Gateway、DynamoDB 表等。通过 SAM,开发者可以使用一种类似于基础设施即代码服务 AWS CloudFormation 的方式来描述和管理整个无服务器应用程序的架构。

使用 AWS SAM 创建云原生基础设施的优势

简化无服务器应用开发

AWS SAM 提供了一种简洁的语法,可以显著减少编写基础设施代码的复杂性。开发者只需在代码中进行较少的配置,即可定义和部署复杂的无服务器架构,简化了开发过程,提高了生产效率。

通过本地环境开发和测试

AWS SAM 在本地环境即可代码调试和测试,允许开发者在本地环境中模拟 AWS Lambda、API Gateway 等服务的运行。这使得开发者能够在部署到云端前就进行调试和测试,从而减少错误和提升应用质量。

无缝集成 CI/CD

AWS SAM 与亚马逊云科技上的 DevOps 工具链紧密集成,支持自动化的持续集成和持续部署(CI/CD)。通过 SAM框架,开发者们可以轻松将无服务器应用程序集成到现有的 CI/CD 管道中,实现快速迭代和高效部署。

本方案包括的内容

1. 通过亚马逊云科技云端开发环境(IDE)Cloud9服务开发代码和AWS SAM脚本

2. 通过命令行一键部署云端应用和基础设施

3. 通过部署的云原生API访问云端应用服务获取API响应

项目搭建具体步骤

1. 打开亚马逊云科技控制台,进入到cloud9服务

2. 点击Open打开云端IDE

3. 我们创建一个空白Python文件”app.y“,复制以下内容,用于通过API获取S3桶内的网页资源

import boto3
s3 = boto3.client('s3')def lambda_handler(event, context):obj = s3.get_object(Bucket='sourcefiles-us-west-2-444987022', Key='object1')contents = "These are not the contents you are looking for."return {"result": contents}

同时我们需要安装必要依赖”boto3“ SDK

pip install boto3

4. 接下来我们创建空白的SAM脚本文件"template.yaml",复制以下内容,用于创建云端基础设施云原生计算服务Lambda,以及API管理服务API Gateway。

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31Resources:LabFunction:Type: AWS::Serverless::FunctionProperties:Role: !Sub arn:aws:iam::${AWS::AccountId}:role/sam-lab-GetObject1FunctionRoleCodeUri: LabFunction/Handler: app.lambda_handlerRuntime: python3.9Architectures:- x86_64Policies:- S3ReadPolicy:BucketName: sourcefiles-us-west-2-444987022Events:Sum:Type: HttpApiProperties:Path: /labfunctionMethod: getApiId: !Ref HttpApiHttpApi:Type: AWS::Serverless::HttpApiProperties:StageName: "$default"Outputs:HttpApiUrl:Description: URL of your API endpointValue:Fn::Sub: 'https://${HttpApi}.execute-api.${AWS::Region}.${AWS::URLSuffix}/labfunction'

5. 接下来我们运行以下命令开始构建该AWS SAM脚本,用于下载必要依赖,编译代码和封装部署资源包

sam build

构建成功后会出现以下响应

******************************
**** This is OUTPUT ONLY. ****
******************************Building codeuri: /home/ec2-user/environment/LabFunction runtime: python3.9 metadata: {} architecture: x86_64 functions: LabFunction
Running PythonPipBuilder:ResolveDependencies
Running PythonPipBuilder:CopySourceBuild Succeeded

6. 接下来按照以下命令开始部署构建好的AWS SAM脚本

sam deploy --guided

部署成功后会收到如下响应:

******************************
**** This is OUTPUT ONLY. ****
******************************Configuring SAM deploy
======================Looking for config file [samconfig.toml] :  Not foundSetting default arguments for 'sam deploy'=========================================Stack Name [sam-app]: AWS Region [us-west-2]: #Shows you resources changes to be deployed and require a 'Y' to initiate deployConfirm changes before deploy [y/N]: #SAM needs permission to be able to create roles to connect to the resources in your templateAllow SAM CLI IAM role creation [Y/n]: #Preserves the state of previously provisioned resources when an operation failsDisable rollback [y/N]: LabFunction may not have authorization defined, Is this okay? [y/N]: ySave arguments to configuration file [Y/n]: SAM configuration file [samconfig.toml]: SAM configuration environment [default]:  Looking for resources needed for deployment:Managed S3 bucket: aws-sam-cli-managed-default-samclisourcebucket-1u3fu7o3gelcqA different default S3 bucket can be set in samconfig.tomlSaved arguments to config fileRunning 'sam deploy' for future deployments will use the parameters saved above.The above parameters can be changed by modifying samconfig.tomlLearn more about samconfig.toml syntax at https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.htmlUploading to sam-app/6ef47c0da3e463d20af67dde5dfed4ef  11580021 / 11580021  (100.00%)Deploying with following values===============================Stack name                   : sam-appRegion                       : us-west-2Confirm changeset            : FalseDisable rollback             : FalseDeployment s3 bucket         : aws-sam-cli-managed-default-samclisourcebucket-1u3fu7o3gelcqCapabilities                 : ["CAPABILITY_IAM"]Parameter overrides          : {}Signing Profiles             : {}CloudFormation outputs from deployed stack
--------------------------------------------------------
Outputs                                                                                                                                                                                                                      
--------------------------------------------------------
Key                 HttpApiUrl                                                                                                                                                                                               
Description         URL of your API endpoint                                                                                                                                                                                 
Value               https://8874ni1cuc.execute-api.us-west-2.amazonaws.com/labfunction                                                                                                                                       
--------------------------------------------------------Successfully created/updated stack - sam-app in us-west-2

 部署成功后我们可以看到该脚本返回了一个我们云原生服务的API URL(末尾HttpApiUrl的键值),该URL是亚马逊云科技上的API管理服务API Gateway暴露的公开URL,复制该URL。

7. 共有两种方法访问该API URL并进行测试

1)命令行形式:

在命令行中我们运行curl访问API获取格式化相应

echo; curl https://onw4cvuz5k.execute-api.us-west-2.amazonaws.com/labfunction; echo; echo

 我们可以得到API调用的回复如下,该API从S3中提取了网页文件对象并通过API返回。

******************************
**** This is OUTPUT ONLY. ****
******************************{"result": "Welcome to AWS Lambda!"}

2)直接在浏览器中打开,也可以得到通过调用云原生API返回的S3中的文字网页资源。

以上就是在亚马逊云科技上利用AWS SAM框架开发代码,创建云资源基础设施的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案。

这篇关于零基础5分钟上手亚马逊云科技-代码创建云原生基础设施的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120933

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例