当前位置: 首页 > news >正文

做外贸客户要求看网站运营公众号需要多少钱

做外贸客户要求看网站,运营公众号需要多少钱,企业如何做好网络推广,中国国际进口博览会上海在本文中#xff0c;我们将学习使用AWS Lambda在Go中设计#xff0c;构建和部署RESTful API。 在开始之前#xff0c;让我给您简要介绍一下AWS Lambda。 什么是AWS Lambda#xff1f; AWS Lambda是一种无服务器计算服务#xff0c;可运行我们的代码以响应事件并自动为我… 在本文中我们将学习使用AWS Lambda在Go中设计构建和部署RESTful API。 在开始之前让我给您简要介绍一下AWS Lambda。 什么是AWS Lambda AWS Lambda是一种无服务器计算服务可运行我们的代码以响应事件并自动为我们管理基础计算资源。 我们可以使用AWS Lambda通过自定义逻辑扩展其他AWS服务或者创建我们自己的后端服务这些后端服务以AWS规模性能和安全性运行。 AWS Lambda可以自动运行代码以响应多个事件例如通过Amazon API Gateway发出的HTTP请求对Amazon S3存储桶中的对象的修改Amazon DynamoDB中的表更新以及AWS Step Functions中的状态转换。 Lambda在高可用性计算基础架构上运行我们的代码并执行所有计算资源管理包括服务器和操作系统维护容量配置和自动缩放代码和安全补丁部署以及代码监视和日志记录。 我们需要做的就是提供代码。 现在让我们开始构建一个API该API将帮助本地电影租赁店管理其可用电影。 API架构 下图显示了API Gateway和Lambda如何适应API体系结构 AWS Lambda支持微服务开发。 话虽如此每个端点都会触发不同的Lambda函数。 这些功能彼此独立并且可以用不同的语言编写从而导致在功能级别上进行缩放更易于进行单元测试以及松散耦合。 来自客户端的所有请求都首先通过API网关。 然后它将传入的请求相应地路由到正确的Lambda函数。 请注意单个Lambda函数可以处理多种HTTP方法 GET POST PUT DELETE等。 建议为每个功能创建多个Lambda函数以利用微服务的功能。 但是构建单个Lambda函数来处理多个端点可能是一个不错的练习。 端点设计 现在已经定义了体系结构是时候完成上图中描述的功能的实现了。 您可以使用net / http Go包并使用内置的状态代码变量例如http.StatusOK http.StatusCreated http.StatusBadRequest http.StatusInternalServerError等 而不是对HTTP状态代码进行硬编码。 GET方法 要实现的第一个功能是列出电影。 这就是GET方法起作用的地方。 让我们从以下步骤开始 步骤1创建注册了findAll处理程序的Lambda函数。 该处理程序将电影列表转换为字符串然后返回由APIGatewayProxyResponse变量包装的字符串以及200 HTTP状态代码。 如果转换失败它也会处理错误。 处理程序的实现如下 package mainimport (encoding/jsongithub.com/aws/aws-lambda-go/eventsgithub.com/aws/aws-lambda-go/lambda )var movies []struct {ID int json:idName string json:name }{{ID: 1,Name: Avengers,},{ID: 2,Name: Ant-Man,},{ID: 3,Name: Thor,},{ID: 4,Name: Hulk,}, {ID: 5,Name: Doctor Strange,}, }func findAll() (events.APIGatewayProxyResponse, error) {response, err : json.Marshal(movies)if err ! nil {return events.APIGatewayProxyResponse{}, err}return events.APIGatewayProxyResponse{StatusCode: 200,Headers: map[string]string{Content-Type: application/json,},Body: string(response),}, nil }func main() {lambda.Start(findAll) } 您可以使用net / http Go包并使用内置的状态代码变量例如http.StatusOK http.StatusCreated http.StatusBadRequest http.StatusInternalServerError等 而不是对HTTP状态代码进行硬编码。 步骤2创建一个包含以下内容的脚本文件以构建Lambda函数部署包一个包含您的代码和任何依赖项的.zip文件如下所示 #!/bin/bashecho Build the binary GOOSlinux GOARCHamd64 go build -o main main.goecho Create a ZIP file zip deployment.zip mainecho Cleaning up rm main 步骤3执行以下命令以将部署包构建为.zip文件 $ chmod x build.sh $ ./build.sh 步骤4使用此处提到的步骤配置AWS CLI。 配置完成后按照此处提到的步骤创建一个名称为FindAllMoviesRole的AWS角色并验证是否成功创建该角色 $ aws iam get-role --role-name FindAllMoviesRole 上面的命令应给出响应如下面的屏幕快照所示 步骤5接下来使用AWS CLI创建一个新的Lambda函数如下所示 aws lambda create-function --function-name FindAllMovies \--zip-file fileb://deployment.zip \--runtime go1.x --handler main \--role arn:aws:iam::ACCOUNT_ID:role/FindAllMoviesRole \--region us-east-1 创建函数后将为我们提供与以下屏幕快照所示的输出相同的输出 步骤6 回到AWS Lambda控制台您应该看到该函数已成功创建 步骤7 创建一个带有空JSON的示例事件因为该函数不需要任何参数然后单击Test按钮 您将在上一个屏幕截图中注意到该函数以JSON格式返回预期的输出。 步骤8现在已经定义了函数您需要创建一个新的API网关来触发它 步骤9接下来从“ 操作”下拉列表中选择“ 创建资源并将其命名为电影” 步骤10通过点击Create Method在此/ movies资源上公开GET 方法 。 在“ 集成类型”部分下选择“ Lambda函数 ”然后选择“ FindAllMovies”函数 步骤11要部署API请从“ 操作”下拉列表中选择“ 部署API ”。 系统将提示您创建一个新的部署阶段 步骤12一旦创建了部署阶段就会显示一个调用URL 步骤13将浏览器指向给定的URL或使用现代的REST客户端例如Postman或Insomnia。 您可以使用cURL工具因为默认情况下它已安装在几乎所有操作系统上 curl -sX GET https://51cxzthvma.execute-api.us-east-1.amazonaws.com/staging/movies | jq . 上面的命令将以JSON格式返回电影列表 调用GET端点时请求将通过API网关这将触发findAll处理程序。 这会将API网关代理的响应以JSON格式返回给客户端。 现在已经部署了findAll函数您可以实现findOne函数以通过其ID搜索电影。 带参数的GET方法 findOne处理程序需要包含事件输入的APIGatewayProxyRequest参数。 然后它使用PathParameters方法获取影片ID并对其进行验证。 如果提供的ID无效则Atoi方法将返回错误并将500错误代码返回给客户端。 否则将根据索引获取电影并以包装在APIGatewayProxyResponse中的200 OK状态返回给客户端 ...func findOne(req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {id, err : strconv.Atoi(req.PathParameters[id])if err ! nil {return events.APIGatewayProxyResponse{StatusCode: 500,Body:       ID must be a number,}, nil}response, err : json.Marshal(movies[id-1])if err ! nil {return events.APIGatewayProxyResponse{StatusCode: 500,Body:       err.Error(),}, nil}return events.APIGatewayProxyResponse{StatusCode: 200,Headers: map[string]string{Content-Type: application/json,},Body: string(response),}, nil}func main() {lambda.Start(findOne)} 与FindAllMovies函数类似创建一个新的Lambda函数以搜索电影 aws lambda create-function --function-name FindOneMovie \--zip-file fileb://deployment.zip \--runtime go1.x --handler main \--role arn:aws:iam::ACCOUNT_ID:role/FindOneMovieRole \--region us-east-1 返回API Gateway控制台创建一个新资源公开GET方法然后将资源链接到FindOneMovie函数。 注意在路径中使用{id}占位符。 id的值将通过APIGatewayProxyResponse对象提供。 以下屏幕截图描述了这一点 重新部署API并使用以下cURL命令测试端点 curl -sX https://51cxzthvma.execute-api.us-east-1.amazonaws.com/staging/movies/1 | jq . 将返回以下JSON 使用ID调用API URL时如果存在ID对应的影片则返回该影片。 POST方法 现在您知道带有和不带有路径参数的GET方法如何工作。 下一步是通过API网关将JSON有效负载传递给Lambda函数。 该代码是不言自明的。 它将输入的请求转换为电影结构将其添加到电影列表然后以JSON格式返回新的电影列表 package mainimport (encoding/jsonstrconvgithub.com/aws/aws-lambda-go/eventsgithub.com/aws/aws-lambda-go/lambda )type Movie struct {ID int json:idName string json:name }var movies []Movie{Movie{ID: 1,Name: Avengers,},... }func insert(req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {var movie Movieerr : json.Unmarshal([]byte(req.Body), movie)if err ! nil {return events.APIGatewayProxyResponse{StatusCode: 400,Body: Invalid payload,}, nil}movies append(movies, movie)response, err : json.Marshal(movies)if err ! nil {return events.APIGatewayProxyResponse{StatusCode: 500,Body: err.Error(),}, nil}return events.APIGatewayProxyResponse{StatusCode: 200,Headers: map[string]string{Content-Type: application/json,},Body: string(response),}, nil }func main() {lambda.Start(insert) } 接下来使用以下命令为InsertMovie创建一个新的Lambda函数 aws lambda create-function --function-name InsertMovie \--zip-file fileb://deployment.zip \--runtime go1.x --handler main \--role arn:aws:iam::ACCOUNT_ID:role/InsertMovieRole \--region us-east-1 接下来在/ movies资源上创建一个POST方法并将其链接到InsertMovie函数 要对其进行测试请使用下面的cURL命令以及POST动词和-d标志后跟JSON字符串具有id和name属性 curl -sX POST -d {id:6, name: Spiderman:Homecoming} https://51cxzthvma.execute-api.us-east-1.amazonaws.com/staging/movies | jq . 上面的命令将返回以下JSON响应 如您所见新电影已成功插入。 如果再次测试它应该可以按预期工作 curl -sX POST -d {id:7, name: Iron man} https://51cxzthvma.execute-api.us-east-1.amazonaws.com/staging/movies | jq . 前面的命令将返回以下JSON响应 如您所见它成功完成并且再次按预期方式插入了影片但是如果您等待几分钟并尝试插入第三部影片怎么办 以下命令将用于再次执行它 curl -sX POST -d {id:8, name: Captain America} https://51cxzthvma.execute-api.us-east-1.amazonaws.com/staging/movies | jq . 再次将返回一个新的JSON响应 您会发现ID为6和7的电影已被删除 为什么会这样 这很简单。 Lambda函数是无状态的。 首次首次插入调用InsertMovie函数时AWS Lambda将创建一个容器并将函数有效负载部署到该容器。 然后它保持活动状态几分钟然后终止 热启动 这说明了第二个刀片通过的原因。 在第三个插件中该容器已经终止因此Lambda创建一个新容器 冷启动 以处理该插件。 这就是为什么以前的状态会丢失的原因。 下图说明了冷/热启动问题 这就解释了为什么Lambda函数应该是无状态的为什么您不应该做出任何假设将状态从一次调用保留到另一次调用的假设。 完整的源代码托管在github上 。 翻译自: https://www.javacodegeeks.com/2018/11/build-restful-api-go-using-aws-lambda.html
http://wiki.neutronadmin.com/news/154898/

相关文章:

  • 企业网站案例展示查询seo
  • 建设科技处网站博客营销
  • 什么网站收录排名最高wordpress 标题截断
  • 白银做网站网页版传奇怎么开
  • jsp可以做网站首页吗网络游戏陪玩
  • 南平网站设计网站开发和桌面开发哪个难
  • 2003访问网站提示输入用户名密码番禺网站建设优化推广
  • 百度上开个网站怎么做中国做网站最好的
  • 四川大学毕业设计网站小型教育网站的开发建设开题报告
  • 网站建设参考论文常用的网络营销推广方法有哪些
  • 如何维护企业电子商务网站建设响应式网站手机端尺寸
  • 学院网站建设的目的及定位东莞哪里有网站制作公司
  • 重庆企业网站建设哪家好网络营销网站建设存在问题
  • 上饶做网站最好的公司做网站的品牌公司
  • 玉林建设工程信息网站天津网络推广公司
  • 如何建网络营销网站上交所大宗交易平台
  • 做网站第一次见客户百度指数关键词未收录怎么办
  • 点击最多的网站h5模板免费
  • 泾川网站建设创意广告图片及文字解析
  • 网站建设添加音乐的代码网站主页模板图片
  • 宿迁网站建设排名wordpress创建表单
  • 负责网站开发的岗位服务好 售后好的网站建设
  • 宿迁哪里有做网站开发的网站成本案例
  • 做网站都需要准备什么软件社交网站开发
  • 建站吗官方网站html 网站添加悬浮二维码
  • 网站虚拟主机里的内容强制删除正规排名网站推广公司
  • 安徽城乡建设厅官网站wordpress网址插件
  • 学php网站开发多钱免费中文wordpress主题下载
  • 北京网站制作培训班如何用魔方网表做门户网站
  • 海南网站建设网站开发网站开发广东