<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ 云计算 - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ freeCodeCamp 是一个免费学习编程的开发者社区，涵盖 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等，还有活跃的技术论坛和丰富的社区活动，在你学习编程和找工作时为你提供建议和帮助。 ]]>
        </description>
        <link>https://www.freecodecamp.org/chinese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ 云计算 - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/chinese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 26 May 2026 16:03:48 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/chinese/news/tag/cloud-computing/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ 云计算概述：初学者入门指南 ]]>
                </title>
                <description>
                    <![CDATA[ 随着数字化领域和科技的不断发展，云计算仍然是一个重要议题，值得开发人员学习。 你可能会在岗位招聘中遇到关于“云”的相关需求，可能会在对话中听到关于“云”的相关讨论，可能会在云服务商发布的广告中看到关于“云”的相关宣传，现在你对“云”充满好奇，想要知道更多。 在这篇文章中，我会将复杂的概念分成简单易懂的小模块，让你更加容易理解“云”。 这是本文中涉及的主要内容：  * 云计算出现前的世界  * 云计算是什么  * 云服务供应商  * 云服务类型  * 云计算助力解决的难题  * 云计算是如何帮助我们的  * 云计算部署模式 让我们从学习云计算的基础内容开始，然后你可以在云计算这个持续发展的领域深入学习。 云计算出现前的世界 要理解云计算，必须先理解云计算试图解决的问题。这将有助于你了解云计算的历史，并感激它为技术世界带来的便利。 “云”出现以前，部署网络服务曾是一个昂贵的过程。为了部署一套网络应用程序，首先需要采购符合存储要求的服务器，然后找到合适的空间存放，搭建好服务器后才能使用服务器托管应用程序。 除了服务器的购置费，为了维持服务器不间断运行并持续在线，后续还会有很多 ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/what-is-cloud-computing/</link>
                <guid isPermaLink="false">6603efb86f02f80413b53a43</guid>
                
                    <category>
                        <![CDATA[ 云计算 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ JunoWei ]]>
                </dc:creator>
                <pubDate>Wed, 27 Mar 2024 10:33:45 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2024/03/cloud-sky.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文：</strong> <a href="https://www.freecodecamp.org/news/what-is-cloud-computing/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">What is Cloud Computing? Introduction to the Cloud for Beginners</a>
      </p><!--kg-card-begin: markdown--><p>随着数字化领域和科技的不断发展，云计算仍然是一个重要议题，值得开发人员学习。</p>
<p>你可能会在岗位招聘中遇到关于“云”的相关需求，可能会在对话中听到关于“云”的相关讨论，可能会在云服务商发布的广告中看到关于“云”的相关宣传，现在你对“云”充满好奇，想要知道更多。</p>
<p>在这篇文章中，我会将复杂的概念分成简单易懂的小模块，让你更加容易理解“云”。</p>
<p>这是本文中涉及的主要内容：</p>
<ul>
<li><a href="#the-world-before-cloud-computing">云计算出现前的世界</a></li>
<li><a href="#what-is-cloud-computing">云计算是什么</a></li>
<li><a href="#cloud-service-providers">云服务供应商</a></li>
<li><a href="#different-cloud-services">云服务类型</a></li>
<li><a href="#challenges-that-cloud-computing-helps-solve">云计算助力解决的难题</a></li>
<li><a href="#how-can-cloud-computing-help-you">云计算是如何帮助我们的</a></li>
<li><a href="#cloud-deployment-models">云计算部署模式</a></li>
</ul>
<p>让我们从学习云计算的基础内容开始，然后你可以在云计算这个持续发展的领域深入学习。</p>
<h2 id="the-world-before-cloud-computing">云计算出现前的世界</h2>
<p>要理解云计算，必须先理解云计算试图解决的问题。这将有助于你了解云计算的历史，并感激它为技术世界带来的便利。</p>
<p>“云”出现以前，部署网络服务曾是一个昂贵的过程。为了部署一套网络应用程序，首先需要采购符合存储要求的服务器，然后找到合适的空间存放，搭建好服务器后才能使用服务器托管应用程序。</p>
<p>除了服务器的购置费，为了维持服务器不间断运行并持续在线，后续还会有很多额外支出，譬如电费和保持服务器启动和在线所需的数据。同时还有安全问题，需要避免服务器遭到恶意破坏和盗取信息。</p>
<p>除此之外，大多数的开发人员都不是精通服务器的专家，所以要么培养开发人员做系统管理者，要么招聘系统管理的专职人员，负责搭建配置服务器保证应用程序的稳定运行。而安装部署一套新的应用程序，需要重复整个过程并产生新的费用。</p>
<p>扩展是指购买更多的服务器（或者是购买更好地服务器替换已有的服务器），配置符合现有配置的环境，然后将应用程序部署在新的服务器上。“云”时代之前，扩展应用程序并没有很方便，如果一开始控制成本，没有购入足够多的服务器或者是招聘足够多的系统工程师，最终可能导致算力不充足而需要扩展。</p>
<p>这些都是云计算出现以前我们面对的问题，或许你现在困惑“云计算是怎么解决这些问题”，请看下文讲解。</p>
<h2 id="what-is-cloud-computing">云计算是什么</h2>
<blockquote>
<p><strong>云计算</strong>是一种按需提供的计算系统资源，例如数据存储（云存储）、算力等，且不需要用户直接主动管理。<br>
云计算通过资源共享获取一致性，采用按使用量付费的模式，协助降低固定资产费用，同时可能需要用户支付超出预期的营业费用。– <a href="https://en.wikipedia.org/wiki/Cloud_computing">维基百科</a></p>
</blockquote>
<p>想象一下，云计算和在网吧中使用电脑类似。网吧中准备好了电脑，当你走进网吧时，只需要支付期望使用时间对应的费用，然后在这个时间段内就可以随便使用电脑。</p>
<p>而云计算呢，你不需要购入、运维服务器，也不用承担运行成本，你也不用担心软件问题或者这些服务器缺少特定的软件，因为这些都由云服务供应商负责。云计算体验感最佳的地方就在于，你只需要付费订购需要使用的服务器以及服务时间段。</p>
<p>进一步而言，当部署一套网络应用程序时，不用考虑很多事情，只用找到一个云服务供应商，选择符合程序要求的服务器，选择操作系统，然后就可以部署应用了。</p>
<p>用简单易懂的话解释，云计算就是让别人来管理你的计算需求。当需要上线网站、手机APP或其他类似应用时，不再需要购置实体的服务器进行部署，只要使用他人已经准备好的服务器，上传代码文件即可。这和租房子类似，而现在做的就是在另外一台电脑中租用了计算空间。</p>
<h2 id="cloud-service-providers">云服务供应商</h2>
<p>云服务供应商是指提供云服务的公司。这些公司通常有很多服务器和系统工程师，会提供全流程服务，用户无需担心类似服务器成本和运行费用等问题，他们会给用户提供一个用于连接服务器的用户界面，当用户需要时使用即可。</p>
<p>目前最受欢迎的云服务供应商是谷歌云、亚马逊（AWS）和微软（Azure），这些公司提供的服务都比较类似，但是定价模式、特点等各有不同。</p>
<p>以下是这些公司的提供内容的简介：</p>
<h3 id="">谷歌</h3>
<p>谷歌提供基础架构即服务IaaS（Compute Engine），容器即服务CaaS（Kubernetes Engine）以及平台即服务PaaS（App Engine）等服务，同时提供数据存储服务，如Cloud Storage, Cloud SQL以及Bigtable等产品。</p>
<h3 id="">亚马逊</h3>
<p>亚马逊是第一家提供云服务的公司，提供基础架构即服务IaaS（Elastic Compute, EC2），容器即服务CaaS（Elastic Kubernetes Service, EKS）以及平台即服务PaaS（Elastic Beanstalk）等产品，同时提供数据存储服务，如Amazon S3、 DynamoDb等产品。</p>
<h3 id="">微软</h3>
<p>微软提供基础架构即服务IaaS（Virtual Machine），容器即服务CaaS（Kubernetes Service, AKS）以及平台即服务PaaS（App Service）等产品，同时提供数据存储服务，如Cosmos DB等产品。</p>
<p>云服务供应商通常为了资源利用最大化会让用户共享服务器，但用户无需知道这方面的内容，也不用担心。接下来我们讲解一下以上提到的一些云服务类型，以便于更好理解这些云服务内容。</p>
<h2 id="different-cloud-services">云服务类型</h2>
<p>云服务供应商可以提供很多云服务类型，以下是最常见的服务类型：</p>
<h3 id="saas">SaaS（软件即服务）</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/05/saas-778x445.jpeg" alt="saas-778x445" width="600" height="400" loading="lazy"></p>
<p><a href="https://www.google.com/url?sa=i&amp;url=https%3A%2F%2Fgeeksuper.com%2Fadvantages-of-saas-platforms-for-online-courses%2F&amp;psig=AOvVaw0J54lC0WsxXAoS0L2czE27&amp;ust=1652833369985000&amp;source=images&amp;cd=vfe&amp;ved=0CA0QjhxqFwoTCIDvwOio5fcCFQAAAAAdAAAAABAO">Geek Super</a></p>
<p>这项服务是指用户直接使用一些软件应用，不用关心源代码、托管环境或者开发细节等事情。只是使用软件，并且相信软件会被持续管理与升级。</p>
<h3 id="paas">平台即服务（PaaS）</h3>
<p>这项服务是指用户只需专注应用的开发，其他的事项都已经准备好了（如硬件、计算环境和需要的软件）</p>
<h3 id="iaas">基础架构即服务（IaaS）</h3>
<p>这项服务是所有云服务中最复杂的类型，用户对订购的服务拥有最大的自主权，可以按照用户自己的想法适配和修改，但用户没有服务器的所属权。云服务供应商为用户提供所需的基础架构，用户负责搭建计算环境，安装运行应用程序所需的软件。这个方式与购买硬件非常类似，唯一的区别是用户租用并且虚拟拥有（没有实物）。</p>
<h2 id="challenges-that-cloud-computing-helps-solve">云计算助力解决的难题</h2>
<p>云计算可以避免每次开发新的应用时就需要购置并现场搭建物理服务器，最大的优势就是可以帮助公司降低成本，包括服务器费用和搭建配置服务器的人工费。</p>
<p>扩展服务器因为需要有大量的搭建和配置工作，所以通常都不是简单的事情。譬如，一个应用程序需要更多的存储空间，一般情况下可以通过给现有服务器外置一个数据存储来解决，但这种方法往往有局限性。</p>
<p>这时就会想到购置一个配置更好的服务器或者再购置一个服务器，无论是哪种方法，旧服务器上安装的与应用运行相关的所有软件，都需要在新的服务器上再安装一遍，并且还有把应用的文件转移到新服务器等操作。</p>
<p>通常情况下，这些服务器资源也不会被应用程序充分利用。从商业角度出发，这是一种损失。这个问题最初的解决方案是虚拟化，在服务器中安装虚拟环境，并在虚拟环境中安装应用运行需要的所有软件，应用就可以在虚拟环境中运行起来了。这个方案虽然实现了资源最大化利用，但并不完美。</p>
<h2 id="how-can-cloud-computing-help-you">云计算有什么好处</h2>
<p>云计算有很多好处，一些突出优势如下：</p>
<ul>
<li>相比于建立一个完整的数据中心，付费订购更加划算，只需要计划好需要使用的配置。</li>
<li>云服务供应商负责扩展和运维服务器。</li>
<li>搭建方便，开发人员只需要专注于代码编写，所有的服务器搭建配置都能通过云服务供应商提供的用户界面操作完成，可以缩短开发时间，应用程序交付速度也更快。</li>
<li>可访问性，云服务供应商一般在全球有多个数据中心，确保应用的使用者可以快速地连接到服务器。</li>
<li>数据安全，因为数据不再存储在物理服务器上，所以更不容易被恶意攻击或者盗取数据信息。</li>
</ul>
<h2 id="cloud-deployment-models">云计算部署模式</h2>
<p>云计算部署模式决定了数据（以及应用）存储位置和用户与服务器交互方式。</p>
<h3 id="">公有云</h3>
<p>公有云的所有事项都由云服务供应商负责，这是最受欢迎的模式。选择使用公有云，就不需要关心服务器的运维，并且有高可靠性和无限扩展的可能性，但通常也意味着需要和他人共享服务器。</p>
<p>这也是最便宜的模式，公司一般会采用按使用量付费的方式（所以无需过早提前支付）。</p>
<p>但这个模式有一个潜在弊端，因为所有事项由云服务供应商负责，意味着用户几乎没有服务器的控制权。</p>
<h3 id="">私有云</h3>
<p>私有云模式与传统托管应用程序的方式类似，需要有自己的数据中心，只有用户自己可以使用服务器，意味着用户拥有服务器的最高控制权限。</p>
<p>不同的是，用户可以给服务器的使用者——通常是用户公司的开发人员，提供一个私有的服务界面。用户仍然需要管理这些物理服务器，需要自行负责运维和扩展。</p>
<p>这个模式让用户可以自行控制并且尽可能地搭建安全性环境，所以比公有云更安全。如果基于合规要求必须保证数据不会被泄露，这种模式就最符合要求。</p>
<p>不过这种模式是高额成本的模式，虽然现在有了固定价格模型，但服务器和硬件依然很昂贵，同时还需要额外费用招人运维，而且扩展也需要每次购置新的设备。</p>
<h3 id="">混合云</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/05/What-is-Hybrid-Cloud.jpeg" alt="What-is-Hybrid-Cloud" width="600" height="400" loading="lazy"></p>
<p>混合云 | <a href="https://www.google.com/url?sa=i&amp;url=https%3A%2F%2Fw3codemasters.in%2Fwhat-is-hybrid-cloud-benefits-of-a-unified-hybrid-cloud-platform%2F&amp;psig=AOvVaw3ekfLv5gwNG2kjXGoFfWA4&amp;ust=1652833178148000&amp;source=images&amp;cd=vfe&amp;ved=0CA0QjhxqFwoTCPj5qKKp5fcCFQAAAAAdAAAAABAI">W3Codemasters</a></p>
<p>混合云是将公有云和私有云混合起来的模式，更具有灵活性。在使用公有云的同时，也可以按需搭建私有云。需要符合监管要求的数据可以存储在你自己的服务器上，云服务供应商则可以使访问更方便。当机构需要模式转换时，这种模式是最佳的选择，在转移过渡期间依然能够被使用维持商业运行。</p>
<p>举个例子，应用程序托管在公有云上，再连接安装在安全的私有云上的数据库。</p>
<p>这个模式因为需要一些自有服务器，所以定价比公有云更贵；而且因为数据和应用分散分布于多个服务器，比公有云也更为复杂。</p>
<h3 id="">如何选择部署模式</h3>
<p>基于用户的特殊需求决定使用公有云、私有云还是混合云。</p>
<ul>
<li>公有云定价合理获取便利</li>
<li>私有云提供更可靠的安全性和更高的控制权</li>
<li>混合云更加灵活，是介于公有云与私有云之间的方式</li>
</ul>
<p>一些重要因素，如安全需求、合规要求、可扩展性、IT架构中对控制权限的要求等，最终决定部署模式</p>
<h2 id="">总结</h2>
<p>学习了基础知识后，你现在可以开始深入学习云计算了。如果你有任何问题或者相关建议，请联系并转述给我。你可以通过<a href="https://www.linkedin.com/in/idris-aweda-zubair-5433121a3/">LinkedIn</a>、<a href="https://twitter.com/AwedaIdris">Twitter</a>、<a href="https://github.com/Zubs">Github</a>阅读更多我的文章或者关注我的工作，快速方便并且是免费的！</p>
<!--kg-card-end: markdown--> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 如何使用 AWS API Gateway 向用户提供自定义 API ]]>
                </title>
                <description>
                    <![CDATA[ 在云计算领域和 serverless 架构中，AWS API Gateway 是一款强大的工具，能帮助您搭建强大、安全且可拓展的 API。 在本教程中，首先我将介绍 API 网关是什么，并解释使用 API 网关的好处。接下来，我将展示如何创建、部署一个 Rest API, 并创建使用计划以提供 API 密钥。那么，我们现在就开始吧！ 什么是 API 网关？ AWS API Gateway 是 Amazon Web Services (AWS) 提供的一项全托管服务，可帮助您轻松搭建、部署和管理任意规模的 API。 它充当应用程序的前门，允许您创建充当客户端和后端服务之间桥梁的 API，以便实现安全有效的通信。 为什么需要 API 网关？ AWS API Gateway 可为企业和开发者提供诸多好处，下方列出了一些使用 API 网关的好处。 可拓展性和高可用性 借助 AWS API Gateway，您可以更轻松地进行 API 拓展。通过底层基础设施自动拓展， AWS API ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/how-to-offer-custom-apis-to-your-users-aws-api-gateway/</link>
                <guid isPermaLink="false">64af9123486c7406702c8ed7</guid>
                
                    <category>
                        <![CDATA[ 云计算 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ AWS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ API ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Rhea Xiao ]]>
                </dc:creator>
                <pubDate>Thu, 13 Jul 2023 06:13:58 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2023/07/AWS-API-Gateway-Banner-3.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文：</strong> <a href="https://www.freecodecamp.org/news/how-to-offer-custom-apis-to-your-users-aws-api-gateway/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Offer Custom APIs to Your Users with AWS API Gateway</a>
      </p><!--kg-card-begin: markdown--><p>在云计算领域和 serverless 架构中，AWS API Gateway 是一款强大的工具，能帮助您搭建强大、安全且可拓展的 API。</p>
<p>在本教程中，首先我将介绍 API 网关是什么，并解释使用 API 网关的好处。接下来，我将展示如何创建、部署一个 Rest API, 并创建使用计划以提供 API 密钥。那么，我们现在就开始吧！</p>
<h2 id="api">什么是 API 网关？</h2>
<p>AWS API Gateway 是 Amazon Web Services (AWS) 提供的一项全托管服务，可帮助您轻松搭建、部署和管理任意规模的 API。</p>
<p>它充当应用程序的前门，允许您创建充当客户端和后端服务之间桥梁的 API，以便实现安全有效的通信。</p>
<h2 id="api">为什么需要 API 网关？</h2>
<p>AWS API Gateway 可为企业和开发者提供诸多好处，下方列出了一些使用 API 网关的好处。</p>
<h3 id="">可拓展性和高可用性</h3>
<p>借助 AWS API Gateway，您可以更轻松地进行 API 拓展。通过底层基础设施自动拓展， AWS API Gateway 可以无缝处理流量高峰，以确保高可用性并避免服务中断。</p>
<h3 id="">安全与认证</h3>
<p>API 网关提供强大的安全功能，包括内置的身份验证和授权机制。</p>
<p>它支持通过 IAM 角色对内部应用程序进行用户身份验证，通过 Cognito 对外部应用程序进行身份验证，并且支持自定义授权者。</p>
<h3 id="aws">与其他 AWS 服务集成</h3>
<p>作为 AWS 生态系统的一部分， API 网关与一系列其他 AWS 服务无缝集成，这意味着您能利用 AWS Lambda 函数、用于用户管理的 AWS Cognito，以及用于监管和日志记录的 AWS CloudWatch 等其他功能。</p>
<h3 id="api">API 生命周期管理</h3>
<p>利用 API 网关，您能轻松对不同阶段的 API 进行版本控制、部署及管理。这简化了发布更新、测试新功能以及管理不同环境（比如开发、预生产和生产）的过程。</p>
<p>我希望现在您已经了解了 API 网关是什么以及它为何如此重要。接下来让我们一起来创建自己的 API 网关吧！</p>
<h2 id="awsapigateway">如何创建 AWS API Gateway</h2>
<p>在本节中，我们将：</p>
<ul>
<li>采用 GET 方法创建 Rest API</li>
<li>将其与简单的 hello world lambda 函数集成并进行部署</li>
</ul>
<p>让我们从创建 lambda 函数开始吧</p>
<h2 id="awslambda">如何创建 AWS Lambda 函数</h2>
<p>登录 AWS Management <a href="https://console.aws.amazon.com/">控制台</a> 并在控制台搜索栏中搜索 "Lambda"。然后，单击 Create Function 按钮。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-145.png" alt="导航至 AWS Lambda 控制台" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>导航至 AWS Lambda 控制台</figcaption>
</figure>
<p>选择 "Author from scratch" 选项，输入 lambda 函数名称，选择 "Python" Runtime，然后单击右下方的 Create Function 按钮。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-146.png" alt="创建一个 AWS Lambda Function" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>创建一个 AWS Lambda Function</figcaption>
</figure>
<p>函数创建成功后，请更新下方代码并部署更改：</p>
<pre><code class="language-Python">import json

def lambda_handler(event, context):
    body = "Hello from 5minslearn!"
    statusCode = 200
    return {
        "statusCode": statusCode,
        "body": json.dumps(body),
        "headers": {
            "Content-Type": "application/json"
        }
    }
</code></pre>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-147.png" alt="部署 Lambda Function" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>部署 Lambda Function</figcaption>
</figure>
<p>恭喜! 您已成功创建 AWS Lambda 函数，接下来让我们来创建 Rest API。</p>
<h2 id="restapiawslambda">如何创建 Rest API 并将其与 AWS Lambda 集成</h2>
<p>在搜索栏搜索 API Gateway，然后在 REST API 版块中单击 Build 按钮。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-183.png" alt="创建 Rest API" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>创建 Rest API</figcaption>
</figure>
<p>选择协议为 Rest，并在 Create new API 选项中选择 New API。在设置选项中输入您选择的 API 名称，并保留 Endpoint Type 的默认选项。然后，单击 Create API 按钮。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-148.png" alt="配置创建 Rest API" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>配置创建 Rest API</figcaption>
</figure>
<p>首先单击左上方的 Actions 按钮，然后单击 Method 并选择 GET 方法，再单击勾选图标。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-149.png" alt="创建 Method" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>创建 Method</figcaption>
</figure>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-150.png" alt="选择 " get"="" 方法"="" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>选择 "GET" 方法</figcaption>
</figure>
<p>选择 Lambda Function 作为 Integration type，并输入已创建的 Lambda 函数名称。然后，保存此函数。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-151.png" alt="选择 Method 配置" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>选择 Method 配置</figcaption>
</figure>
<p>单击保存后， 屏幕中将弹出 "Add Permission to Lambda Function"消息提示确认，这就意味着您将允许 API Gateway 调用 Lambda 函数（在本例中指的就是 "DemoFunction" Lambda 函数）。请同意确认，并继续下一步。</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/image-152.png" alt="image-152" width="600" height="400" loading="lazy"></p>
<p>同意授权通过 API 网关调用 Lambda Function</p>
<p>单击 Test，您将来到一个新页面。单击 "Test" 按钮，此时您能在右侧面板上看到 Lambda 函数做出的响应。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-153.png" alt="我们的 API 架构" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>我们的 API 架构</figcaption>
</figure>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-184.png" alt="测试我们的 API 网关" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>测试我们的 API 网关</figcaption>
</figure>
<p>在成功测试 API 后，您就能部署 API 了。要部署 API，请再次单击 Actions 按钮，然后单击 Deploy API。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-185.png" alt="部署 API 网关" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>部署 API 网关</figcaption>
</figure>
<p>此时屏幕上将弹出 Deploy API 的对话框，请选择 New Stage 作为 Deployment stage，并对其进行命名。然后，单击 Deploy 按钮。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-155.png" alt="配置 API 网关部署" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>配置 API 网关部署</figcaption>
</figure>
<p>单击页面顶部的 Invoke URL，您将看到 Lambda 做出的响应。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-156.png" alt="API 网关创建成功" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>API 网关创建成功</figcaption>
</figure>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-186.png" alt="测试我们的 API" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>测试我们的 API</figcaption>
</figure>
<p>真棒! 我们已经成功创建了 Rest API，将其与 Lambda 函数集成并进行了部署。</p>
<p>但是，您可以通过市场中提供的多种服务来实现这个目标，那为什么要选择 AWS API Gateway 呢？</p>
<p>嗯，这是一个有趣的问题。首先，您可以利用 AWS API Gateway 为自己的 API 配置使用计划，而其中最突出的一点就是您无需为此编写任何代码。</p>
<p>现在就让我们来创建一个使用计划，生成一个 API 密钥，并仅通过在标头中传递 API 密钥来访问 Rest API。</p>
<h2 id="apigateway">如何创建 API Gateway 使用计划</h2>
<p>在左侧边栏中单击 Usage Plans，然后单击 Create 按钮。输入您的计划名称，这里我选择了 "Basic"。根据您的需求在 Throttling 和 Quota 选项中输入相应数值，然后单击 Next。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-159.png" alt="创建 AWS API Gateway 使用计划" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>创建 AWS API Gateway 使用计划</figcaption>
</figure>
<p>单击 Add API Stage 按钮，并选择相应的 API 及其 Stage。然后，单击右上角的勾选图标，并选择 Next。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/Screenshot-from-2023-06-19-10-46-19.png" alt="为我们的 API 创建一个 Stage" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>为我们的 API 创建一个 Stage</figcaption>
</figure>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-164.png" alt="为我们的 API 创建一个 Stage" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>为我们的 API 创建一个 Stage</figcaption>
</figure>
<p>单击 "Create API Key and add to Usage Plan"，屏幕上将弹出一个对话框，请输入 API 密钥名称。而关于 API 密钥，我这里选择了 Auto Generate （自动生成），当然您也可以进行自定义。然后，单击 Save 按钮。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-160.png" alt="创建 API 密钥以访问服务" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>创建 API 密钥以访问服务</figcaption>
</figure>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-161.png" alt="配置 API 密钥" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>配置 API 密钥</figcaption>
</figure>
<p>从侧边栏选择 Resources，单击已创建的 GET API，然后单击 Method Request。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-162.png" alt="选择方法" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>选择方法</figcaption>
</figure>
<p>在设置选项中，将 API Key Required 字段更新为 "true" 并单击勾选图标。更新后，务必点击 Actions 下拉菜单以部署更改。否则，变更将不会更新。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-187.png" alt="启用 API Key Required 字段" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>启用 API Key Required 字段</figcaption>
</figure>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-165.png" alt="部署 API" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>部署 API</figcaption>
</figure>
<p>现在点击相同的 URL，你会发现神奇的事发生了。</p>
<p>Forbidden （禁止访问）！</p>
<p>因为现在我们的 API 层已受保护，您必须在标头中传递 API 密钥才能访问数据。</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/image-163.png" alt="image-163" width="600" height="400" loading="lazy"></p>
<p>若未提供 API 密钥，则禁止访问。</p>
<p>现在单击侧边栏中的 Usage Plans，选择您的计划并导航至 API 密钥选项卡。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-166.png" alt="访问您的 API 密钥" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>访问您的 API 密钥</figcaption>
</figure>
<p>单击您在步骤 3 中创建的 API 密钥，然后单击 Show， 并复制此 API 密钥。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-188.png" alt="API 密钥列表" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>API 密钥列表</figcaption>
</figure>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2023/06/image-167.png" alt="显示您的 API 密钥" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>显示您的 API 密钥</figcaption>
</figure>
<p>您必须在 'x-api-key' 标头中传递密钥。现在，让我们切换至终端来测试一下。</p>
<p>首先，测试一下在不传递 API 密钥的情况下 Rest API 的响应。打开终端，然后输入下方的 curl 命令。此时，您将再次看到“禁止访问”的消息。</p>
<pre><code class="language-bash">curl --location --request GET '[enter your invoke url]'
--header 'Content-Type: application/json
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/image-189.png" alt="image-189" width="600" height="400" loading="lazy"></p>
<p>终端中未提供 API 密钥的情况下禁止访问</p>
<p>现在再进行一次测试，在标头中传递 API 密钥，并运行下方 curl 命令：</p>
<pre><code class="language-bash">curl --location --request GET '[your invoke url]' \
--header 'x-api-key: [your api key]' \
--header 'Content-Type: application/json' \
--data-raw ''
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/image-190.png" alt="image-190" width="600" height="400" loading="lazy"></p>
<p>在 x-api-key 标头中传递 API 密钥时获取的数据</p>
<p>因为在标头中传递了 'x-api-key'，所以您能看到 Lambda 函数输出的结果。</p>
<p>真棒! 您已经成功创建了使用计划，生成了 API 密钥，并将其附加到 Rest API 方法中以及验证了集成。</p>
<h2 id="">总结</h2>
<p>在本教程中，您学习了 AWS API gateway 是什么，以及如何为 Rest API 创建使用计划。</p>
<p>如果您想学习更多关于 AWS Services 的知识，可以订阅我的 <a href="https://5minslearn.gogosoon.com/?ref=fcc_aws_api_gateway">email newsletter</a> (<a href="https://5minslearn.gogosoon.com/?ref=fcc_aws_api_gateway">https://5minslearn.gogosoon.com/</a>) 并在社交媒体上关注我。</p>
<!--kg-card-end: markdown--> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
