其实引导网站源码分享的问题并不复杂,但是又很多的朋友都不太了解好看的引导页源码,因此呢,今天小编就来为大家分享引导网站源码分享的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
APIGateway和AWSSQS之间的直接集成
大家好。上个月一直在学习CDK框架。这是不可思议和强大的。让我们来看看吧!
什么是CDK?
根据AWS页面的概述,“AWS云开发工具包(AWSCDK)是一个开源软件开发框架,可使用熟悉的编程语言定义您的云应用程序资源。”
对于开发人员来说,使用与应用程序相同的语言创建AWS的基础设施更为自然,而不是切换到JSON或YAML。
借助ConstructsProgrammingModel(CPM),您可以更轻松地开发基础架构。每个构造都是一个AWS资源,构造分为三个级别:
L1—这些是低级资源,例如CloudFormation资源。此层中的类是从AWSCloudFormation资源规范定期生成的,类的名称以Cfn前缀开头。L2—这些是AWS更高级别的资源,由L1构造创建。它们包括具有默认值、样板和实用程序的功能。建议使用这些来开始开发堆栈。L3—这些结构被称为模式。它们包括多个构造,以创建一个可供使用的构造。第三级构造的一个示例是ecs_patterns,它包括许多将创建许多资源的ECS模式。
建立一个堆栈
我想向你展示一个关于CDK工作原理的小例子。我们将使用APIGateway将元素推送到SQS队列中。我们正在尝试构建一个三级结构。
什么是直接集成?
一个关于如何创建一个在不使用lambda函数的情况下将元素推送到SQS队列的端点的小示例。
APIGateway和SQS之间的直接集成而不通过lambda函数有利于延迟、成本和您的心理健康。
好处
延迟较低,因为您不需要启动新的lambda函数(如果是第一次,则使用冷启动),因此您只有API网关的延迟和从SQS发送消息的延迟。
成本。正如我所说,您不需要lambda函数,因此成本和执行时间为零。然后,您只需支付API网关和SQS请求。我知道无服务器的成本是荒谬的,但如果你有很多电话,你可以花很多钱。使用此解决方案,您可以保持低成本。
心理健康是最重要的,因为您不需要每天更新代码、维护和更新SDK,或者检查lambda函数崩溃的原因,因为该服务完全由AWS管理。
让我们深入研究一些代码!
开始使用AWSCDK的第一步是设置CDK。您可以使用以下代码在您的环境中使用NPM(或Yarn)安装global:
npminstall-gaws-cdk
要创建您的第一个项目,您必须创建一个新文件夹,然后执行以下操作:
cdkinitapp–language=typescript
这样,CDK将使用TypeScript语言设置您的项目。在文件夹lib/中,您可以找到要部署的当前堆栈。
我做了这个堆栈是为了轻松直接集成APIGateway和SQS。
import{Stack,StackProps,Duration}from&39;;\nimport{Construct}from&39;;\nimport*asIAMfrom&39;;\nimport*assqsfrom&39;;\nimport*asApiGWfrom&39;;\n\nexportclassAwsSqsDirectIntegrationStackextendsStack{\nconstructor(scope:Construct,id:string,props?:StackProps){\nsuper(scope,id,props);\n\n//role\nconstintegrationRole=newIAM.Role(this,&39;,{\nassumedBy:newIAM.ServicePrincipal(&39;),\n});\n\n//queue\nconstqueue=newsqs.Queue(this,&39;,{\nencryption:sqs.QueueEncryption.KMS_MANAGED,\n});\n\n//grantsqs:SendMessage*toApiGatewayRole\nqueue.grantSendMessages(integrationRole);\n\n//ApiGatewayDirectIntegration\nconstsendMessageIntegration=newApiGW.AwsIntegration({\nservice:&39;,\npath:`${process.env.CDK_DEFAULT_ACCOUNT}/${queue.queueName}`,\nintegrationHttpMethod:&39;,\noptions:{\ncredentialsRole:integrationRole,\nrequestParameters:{\n&39;:`&39;`,\n},\nrequestTemplates:{\n&39;:&39;,\n},\nintegrationResponses:[\n{\nstatusCode:&39;,\n},\n{\nstatusCode:&39;,\n},\n{\nstatusCode:&39;,\n}\n]\n},\n});\n\n//RestApi\nconstapi=newApiGW.RestApi(this,&39;,{});\n\n//postmethod\napi.root.addMethod(&39;,sendMessageIntegration,{\nmethodResponses:[\n{\nstatusCode:&39;,\n},\n{\nstatusCode:&39;,\n},\n{\nstatusCode:&39;,\n}\n]\n});\n}\n}
让我解释一下这段代码:
//role\nconstintegrationRole=newIAM.Role(this,&39;,{\nassumedBy:newIAM.ServicePrincipal(&39;),\n});\n//queue\nconstqueue=newsqs.Queue(this,&39;,{\nencryption:sqs.QueueEncryption.KMS_MANAGED,\n});\n//grantsqs:SendMessage*toApiGatewayRole\nqueue.grantSendMessages(integrationRole);
在上面的代码片段中,您可以看到我创建了一个由AWS管理的加密和APIGateway角色的SQS队列。您可以看到CDK具有授予角色权限的方法。这样,您就不需要编写策略了。只需调用此方法,它就会为您执行此操作!最佳实践是使用授权方法来授予正确的权限。
//role\n//ApiGatewayDirectIntegration\nconstsendMessageIntegration=newApiGW.AwsIntegration({\nservice:&39;,\npath:`${process.env.CDK_DEFAULT_ACCOUNT}/${queue.queueName}`,\nintegrationHttpMethod:&39;,\noptions:{\ncredentialsRole:integrationRole,\nrequestParameters:{\n&39;:`&39;`,\n},\nrequestTemplates:{\n&39;:&39;,\n},\nintegrationResponses:[\n{\nstatusCode:&39;,\n},\n{\nstatusCode:&39;,\n},\n{\nstatusCode:&39;,\n}\n]\n},\n});\n\n//RestApi\nconstapi=newApiGW.RestApi(this,&39;,{});\n\n//postmethod\napi.root.addMethod(&39;,sendMessageIntegration,{\nmethodResponses:[\n{\nstatusCode:&39;,\n},\n{\nstatusCode:&39;,\n},\n{\nstatusCode:&39;,\n}\n]\n});
这是堆栈的核心。在这里,我们定义了APIGatewayRestAPI和直接集成。如您所见,我们与SQS集成,然后将端点正文作为消息发送。是的,我知道它有点脏,但对于这个例子来说它会很好。
在您的AWS账户中部署之前,您必须引导环境。环境是来自区域/帐户的一对。要引导您的环境,请执行以下操作:
cdkbootstrap
引导后,您可以使用以下命令部署堆栈:
cdkdeploy
部署完成后,您可以获取URL以调用新端点并向SQS发送消息。
AWSCDK是部署基础设施的绝佳工具。在上个月,我一直在学习它,与同事讨论它,并将它用于新项目。
这就是今天的全部内容。我希望你觉得这篇文章很有趣。
再见!
关注七爪网,获取更多APP/小程序/网站源码资源!
好了,关于引导网站源码分享和好看的引导页源码的问题到这里结束啦,希望可以解决您的问题哈!
