<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>03-计算与负载均衡 &#8211; 顶云AWS爱好者</title>
	<atom:link href="https://www.iloveaws.cn/category/%e9%80%9a%e8%bf%87aws-sap%e8%ae%a4%e8%af%81/03-%e8%ae%a1%e7%ae%97%e4%b8%8e%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1/feed" rel="self" type="application/rss+xml" />
	<link>https://www.iloveaws.cn</link>
	<description>AWS中文视频在线课程 - 打造您的云端技能 获取AWS认证 成为AWS专家</description>
	<lastBuildDate>Sat, 16 Dec 2023 12:38:04 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.iloveaws.cn/wp-content/uploads/2019/06/cropped-uugai.com_1560993984449-32x32.png</url>
	<title>03-计算与负载均衡 &#8211; 顶云AWS爱好者</title>
	<link>https://www.iloveaws.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>亚马逊API网关</title>
		<link>https://www.iloveaws.cn/5932.html</link>
					<comments>https://www.iloveaws.cn/5932.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Mon, 11 Dec 2023 09:31:31 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[通过AWS SAP认证]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=5932</guid>

					<description><![CDATA[HELLO大家好，我们这个课时讨论亚马逊 &#8230;]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/12/幻灯片1-1024x576.png" alt="" class="wp-image-5933" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片1-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片1-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片1-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片1-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片1-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片1-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>HELLO大家好，我们这个课时讨论亚马逊的API网关的内容。</p>



<p>亚马逊API网关是一个您可以使用它创建应用程序编程接口（API）的服务。 这些API实质上是连接您的业务逻辑或在AWS上运行的应用程序的前门。</p>



<p>API Gateway支持RESTful API，包括REST API和HTTP API，以及WebSocket API。 接下来让我们通过可视化的方式来看一下通过API Gateway部署的API是如何工作的。</p>



<h2 class="wp-block-heading">亚马逊API网关概述</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/12/幻灯片2-1024x576.png" alt="" class="wp-image-5934" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片2-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片2-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片2-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片2-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片2-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片2-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片2.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>这里是一个AWS Region，我们部署了某种类型的API。</p>



<p>然后这里是互联网，然后PPT左边区域有各种不同类型的客户端。</p>



<p>这些客户端可以是运行在移动设备上的应用程序，也可以是在互联网上运行的某个服务，或者是某个网站或Web应用程序。</p>



<p>而左边这些客户端需要通过互联网，访问在AWS上运行的某个业务逻辑或某个服务，它们需要通过访问这个部署的API来实现这一点。</p>



<p>然后这个API在连接到各种后端服务，比如Lambda。Lambda它可以是公有的，也可以是部署在VPC中的Lambda函数；</p>



<p>后端服务可以是负载均衡器后面的EC2实例，或者是其他的AWS服务；它也可以是一些外部服务，例如某个公有的终端节点。</p>



<p>因此，可以将这个API网关视为一个终端节点，您可以将这些各种基于互联网的服务或VPC内的服务连接到该API网关，您将它们连接到API网关后，API网关能够执行各种操作，比如修改请求中的信息以对其进行格式化，以便将其发送到它的后端类似Lambda函数等目标。</p>



<p>在API网关这里，您可以配置自己的API，也可以导入模板，例如Swagger格式或Open API 3.0定义，这些定义使用YAML或JSON格式。</p>



<h2 class="wp-block-heading">API网关部署类型</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/12/幻灯片3-1-1024x576.png" alt="" class="wp-image-5942" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片3-1-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片3-1-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片3-1-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片3-1-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片3-1-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片3-1-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片3-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>API网关支持3种不同的部署类型。</p>



<p>首先是边缘优化的API终端节点，它会为来自世界各地大部分地区的请求提供较低的访问延迟，因为它是位于Amazon CloudFront之后的，它利用了CloudFront边缘节点位置和CloudFront的CDN能力。</p>



<p>然后是区域API终端节点,非常适用于您的服务来自同一个AWS区域。您可以在前面放置CDN，并且还可以使用Web应用程序防火墙。</p>



<p>最后是私有API终端节点，这种部署方式API完全位于您的VPC内，因此可以安全地将API仅公开给VPC中的服务，或通过Direct Connect连接的应用程序。</p>



<h2 class="wp-block-heading">REST API的架构</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/12/幻灯片4-1-1024x576.png" alt="" class="wp-image-5943" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片4-1-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片4-1-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片4-1-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片4-1-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片4-1-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片4-1-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片4-1.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>接下来，我们来讨论下REST API的架构 这里有一个已发布的API和一个连接到这个API的互联网Web应用程序。在API这里，我们可以配置一个叫做“方法请求”的内容。它定义了我们允许使用API的方法,必须在请求中发送的参数和正文，以及如何进行集成，也就是将“方法请求”映射到“集成请求”。</p>



<p>这些方法method与您在HTTP方法中看到的非常相似，比如有DELETE，GET，POST和PUT。每个method可以映射到一个集成请求，然后就可以将请求转发到各类的终端节点。比如可以使用Lambda或Lambda代理。</p>



<p>也就是说，我们将“方法请求”的请求参数，映射到与我们连接的后端所需的格式。这个后端可以是Lambda函数、HTTP终端节点、EC2实例或其他AWS服务。</p>



<p>“方法请求”和“集成请求”使我们在配置API时具有一定的灵活性。可以只传递方法，也可以在它们到达后端之前修改它们的某些内容。</p>



<p>然后当从终端节点的响应返回时，还会有一些选项，我们可以转换或直接传递信息。我们可以修改HTTP状态码或响应主体，将它们映射到前端所需的格式，最后这个响应返回给Web应用程序。</p>



<p>以上就是REST API的大致的架构。</p>



<p>对于HTTP API会稍有不同。</p>



<p>HTTP API不在有这个“方法请求”，取代它的是“路由”，它能够将请求发送到 AWS Lambda 函数或任何可路由的 HTTP 终端节点。</p>



<h2 class="wp-block-heading">API网关集成</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/12/幻灯片5-1-1024x576.png" alt="" class="wp-image-5944" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片5-1-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片5-1-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片5-1-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片5-1-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片5-1-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片5-1-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片5-1.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>接下来是API网关集成相关的内容，目前有几种不同的集成类型。</p>



<p>对于Lambda函数，您可以使用代理集成或自定义集成。</p>



<p>自定义集成为您提供了更大的灵活性，而代理集成只是将请求直接传递给Lambda，因此，Lambda需要知道以何种格式解释输入的信息。</p>



<p>对于HTTP终端节点，您可以使用HTTP代理或HTTP自定义集成。</p>



<p>而对于AWS服务操作，只有非代理类型。</p>



<h2 class="wp-block-heading">API网关 &#8211; 缓存</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/12/幻灯片6-1-1024x576.png" alt="" class="wp-image-5945" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片6-1-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片6-1-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片6-1-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片6-1-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片6-1-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片6-1-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片6-1.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>缓存是提高API性能的重要功能。 通过为API调用配置API Gateway缓存，您可以添加缓存，并指定大小（以千兆字节为单位）。</p>



<p>缓存允许您缓存终端节点的响应请求，它可以减少对后端的调用次数，并降低对API的请求的延迟。</p>



<p>我举个例子，假设我们有一个API，一些用户正在访问这个API，这里有一个缓存。 第一步会首先检查缓存，如果缓存中没有内容，那么请求继续进行到这里的生产阶段，这里的生产阶段是您实际部署API的地方，也就是说，您是将API部署到一个阶段中的，在这个例子，该阶段启用了缓存，大小为0.5 GB，并且进行了加密，并在其中设置了TTL为900。</p>



<p>然后第二步就是访问实际的终端节点，访问信息将被缓存。那下次访问时，后续的请求将从缓存返回，而不会到达终端节点。这将减少延迟，并可能降低成本（如果您按请求付费的话）。</p>



<h2 class="wp-block-heading">API网关 &#8211; 限流</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/12/幻灯片7-1-1024x576.png" alt="" class="wp-image-5946" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片7-1-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片7-1-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片7-1-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片7-1-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片7-1-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片7-1-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片7-1.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>我们还可以对API网关进行限流。</p>



<p>您可以针对API设置稳定状态速率和请求提交突发的限制。这些在AWS账户级别是有限制的，您还可以使用阶段在API级别上添加限制。</p>



<p>默认情况下，稳定状态请求速率限制为每秒10,000个请求，您账户中所有API的最大并发请求为5000。如果超过每秒10,000个请求或5,000个并发请求，那么将会返回429“请求过多”的错误响应</p>



<p>因此，要尽量避免这种情况。</p>



<p>您也可以在您的应用程序中添加一些处置的代码，以便在发生此情况时，您的应用程序知道如何重新提交请求，而不会超过限流限制。</p>



<h2 class="wp-block-heading">API网关 &#8211; API密钥和使用计划</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/12/幻灯片8-1-1024x576.png" alt="" class="wp-image-5947" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片8-1-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片8-1-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片8-1-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片8-1-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片8-1-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片8-1-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片8-1.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>最后，我们讨论使用计划和API密钥的内容。</p>



<p>假设我们有一个API，然后有一些普通用户在使用较低级别的计划，这些普通用户可能付的费用很少。我们还有一些高级用户，我们希望他们应该获得更好的服务。</p>



<p>这样的话我们就会配置使用计划，包括高级和基本使用计划。高级计划将获得比基本计划更高的性能。每个计划都启用了限流，但对于高级用户，有更高的限制阈值。</p>



<p>那么，我们如何知道请求来自高级用户还是基本用户呢？</p>



<p>答案是通过APIKEY，这些密钥将添加到提交到公共终端节点的请求中。</p>



<p>因此，我们可以根据API密钥进行区分。我们可以知道谁是基本用户，谁是高级用户。然后，可以配置这些用户连接到不同的阶段甚至不同的终端节点。您还可以在每个阶段上配置每个方法的限流限制。</p>



<p>以上就是API网关的核心理论的内容，希望能够给大家带来帮助。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/12/幻灯片9-1024x576.png" alt="" class="wp-image-5941" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片9-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片9-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片9-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片9-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片9-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片9-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/12/幻灯片9.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/5932.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>亚马逊EKS</title>
		<link>https://www.iloveaws.cn/5901.html</link>
					<comments>https://www.iloveaws.cn/5901.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Tue, 21 Nov 2023 03:22:43 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[通过AWS SAP认证]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=5901</guid>

					<description><![CDATA[HELLO大家好，在本课时我将介绍Amazon Elastic Kubernetes服务，也就是亚马逊的EKS服务。]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/11/幻灯片1-1024x576.png" alt="" class="wp-image-5902" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片1-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片1-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片1-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片1-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片1-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片1-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片1.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>HELLO大家好，在本课时我将介绍Amazon Elastic Kubernetes服务，也就是亚马逊的EKS服务。<br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/11/幻灯片2-1024x576.png" alt="" class="wp-image-5903" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片2-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片2-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片2-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片2-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片2-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片2-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片2.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>首先，什么是EKS呢？</p>



<p>EKS是一项托管服务，用于在AWS上或本地数据中心运行Kubernetes应用程序，而无需安装、操作或维护您自己的Kubernetes控制面板或节点。</p>



<p>Kubernetes是一个开源系统，用于自动化部署、缩放和管理容器化的应用程序。因此，如果我们想要管理和扩展在Docker上运行的容器，那么Kubernetes就是一个最佳的工具。</p>



<p>当您需要使用托管 Kubernetes 实施跨多个环境标准化容器编排时就可以使用EKS。 也就是说，如果您想使用标准化容器编排工具集，以便在AWS和您本地数据中心等不同环境中管理容器，那么您可以使用EKS。</p>



<p>EKS的一些特点，包括：</p>



<ul class="wp-block-list">
<li>混合部署，您可以跨AWS和本地数据中心管理Kubernetes集群和应用程序。</li>



<li>批处理作业，使用Kubernetes Jobs API在集群上运行顺序或批量工作负载,计划、调度和执行批处理工作负载。</li>



<li>机器学习，您可以将Kubeflow与EKS结合使用，建模您的机器学习工作流程，并使用最新的EC2 GPU加速实例，如AWS Inferentia。</li>



<li>以及运行Web应用程序，可以通过EKS构建自动缩放并跨多个可用区的高度可用的Web应用程序。</li>
</ul>



<h2 class="wp-block-heading"><br>EKS架构</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/11/幻灯片3-1024x576.png" alt="" class="wp-image-5904" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片3-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片3-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片3-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片3-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片3-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片3-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片3.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>接下来我们一起看下EKS的架构。</p>



<p>EKS是运行在AWS区域的服务，比如这里是一个AWS区域，然后一个VPC，里面有多个可用区，AWS的EKS在这里运行。亚马逊EKS服务是一个托管的Kubernetes服务运行在EC2、Fargate以及AWS Outposts，并且跨多个可用区运行。</p>



<p>EKS集群中还包括EKS控制面板，它是跨多个可用区的，高可用的，且可以根据负载自动缩放控制面板实例，且能够检测并替换运行状况不良的控制面板实例，并为其提供自动化的版本更新和修补。</p>



<p>当然还包括工作节点。、</p>



<p>EKS支持ALB、NLB以及CLB这几种负载均衡器。</p>



<p>容器组在Kubernetes中被称为Pods。</p>



<h2 class="wp-block-heading">EKS弹性伸缩<br></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/11/幻灯片4-1024x576.png" alt="" class="wp-image-5905" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片4-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片4-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片4-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片4-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片4-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片4-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片4.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>那么接下来让我们看下关于EKS弹性伸缩相关的知识点，参加考试需要了解使用EKS进行伸缩的不同机制。</p>



<p>在集群Auto Scaling部分，首先是Vertical Pod Autoscaler，它可以为pod自动调整CPU和内存预留，为应用程序调整至合适大小，它是针对pod的垂直层面的。</p>



<p>然后是Horizontal Pod Autoscaler，它可以根据资源的 CPU 利用率，自动缩放deployment, replication controller, 以及 replica set中pods的数量，前面这些都是K8S的组件。</p>



<p>这两个关键的区别在于，Vertical Pod Autoscaler它是调整CPU和内存的数量和大小，您需要了解垂直扩展的工作原理；而Horizontal Pod Autoscaler是调整基础设施中的PODS的数量，一个是垂直扩展，一个是水平扩展，可以理解吧？</p>



<p>以上是集群Auto Scaling部分。</p>



<p>然后是工作负载Auto Scaling，EKS支持两个Auto Scaling产品：</p>



<p>包括Kubernetes cluster Autoscaler ,以及Karpenter open source AutoScaling project</p>



<p>cluster Autoscaler 与AWS Scaling组一起使用，而这个Karpenter与EC2 fleet一起工作。</p>



<h2 class="wp-block-heading"><br>亚马逊EKS与ELB<br></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/11/幻灯片5-1024x576.png" alt="" class="wp-image-5906" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片5-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片5-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片5-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片5-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片5-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片5-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片5.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>那么EKS和负载均衡器是如何一起工作的呢?</p>



<p>EKS主要支持网络负载均衡器和应用程序负载均衡器，虽然对CLB也有一些支持，但CLB随着时间的推移，它正在逐渐淘汰，所以我们主要讨论NLB和ALB。</p>



<p>AWS负载均衡器控制器负责管理Kubernetes集群的负载均衡器。</p>



<p>那怎么安装这个控制器呢，可以使用Helm V3或更高版本或者通过应用Kubernetes manifest安装这个负载均衡器控制器。</p>



<p>这个控制器预置以下这些资源：</p>



<p>当您创建 Kubernetes&nbsp;<strong>Ingress</strong>&nbsp;时的 AWS 应用程序负载均衡器</p>



<p>当您创建&nbsp;<strong>LoadBalancer</strong>&nbsp;类型的 Kubernetes 服务时的 AWS 网络负载均衡器</p>



<p>在之前，以<em>实例为</em>目标使用 Kubernetes 网络负载均衡器，而&nbsp;<em>IP</em>&nbsp;目标使用 AWS 负载均衡器控制器。</p>



<p>在使用 AWS负载均衡器控制器版本&nbsp;<strong>2.3.0</strong>&nbsp;或更高版本，您可以使用任一目标类型创建网络负载均衡器</p>



<h2 class="wp-block-heading"><br>亚马逊EKS Distro<br></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/11/幻灯片6-1024x576.png" alt="" class="wp-image-5907" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片6-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片6-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片6-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片6-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片6-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片6-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片6.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>接下来，我们讨论EKS Distro的内容。</p>



<p>EKS Distro 是 亚马逊EKS在云中部署的相同开源 Kubernetes 软件和依赖项的发行版。</p>



<p>它允许你在任何地方手动运行Kubernetes集群。</p>



<p>它包括开源 Kubernetes、etcd、网络和存储插件的二进制文件和容器，并且经过兼容性测试。</p>



<p>您可以在GitHub上和访问其他开源软件一样安全访问Distro的版本，或者通过亚马逊S3以及ECR</p>



<p>EKS Distro缓解了跟踪更新、确定兼容性以及在分布各处的团队中统一使用 Kubernetes 版本的需求。</p>



<p>您可以在AWS EC2或者在您本地的硬件上使用您选择的工具创建Distro集群。</p>



<h2 class="wp-block-heading">ECS Anywhere和EKS Anywhere<br></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/11/幻灯片7-1024x576.png" alt="" class="wp-image-5908" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片7-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片7-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片7-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片7-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片7-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片7-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片7.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>最后，我们讲一下ECS Anywhere和EKS Anywhere。</p>



<p>这两个服务允许您在您管理的基础设施上运行ECS以及EKS,有AWS提供支持。这里所说的不是outposts，outposts上是肯定可以运行它们的。</p>



<p>这里所说的是您自己的硬件，比如您可以在您的本地的基础设施比如裸金属服务器上，或者也可以在Vmware vSphere上部署ECS Anywhere和EKS Anywhere。</p>



<p>好的，以上就是本课时的全部内容，感谢大家的观看，希望能够给大家带来帮助。<br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/11/幻灯片8-1024x576.png" alt="" class="wp-image-5909" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片8-1024x576.png 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片8-460x259.png 460w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片8-768x432.png 768w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片8-1536x864.png 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片8-120x68.png 120w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片8-310x174.png 310w, https://www.iloveaws.cn/wp-content/uploads/2023/11/幻灯片8.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/5901.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AWS Lambda &#8211; 函数版本，别名，API网关，CodeDeploy协同</title>
		<link>https://www.iloveaws.cn/5329.html</link>
					<comments>https://www.iloveaws.cn/5329.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Sun, 14 May 2023 12:53:08 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[通过AWS SAP认证]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=5329</guid>

					<description><![CDATA[Hello大家好，我们今天继续讨论AWS Lambda的内容]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.001-1024x576.jpeg" alt="" class="wp-image-5330" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.001-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.001-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.001-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.001-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.001-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.001-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.001.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Hello大家好，我们今天继续讨论AWS Lambda的内容。</p>



<h2 class="wp-block-heading">Lambda函数的版本</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.002-1024x576.jpeg" alt="" class="wp-image-5331" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.002-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.002-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.002-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.002-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.002-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.002-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.002.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Lambda函数的版本和别名是辅助资源，我们可以通过创建这些资源管理函数的部署和调用。</p>



<p>首先，让我们来看一下Lambda 函数版本的概念。 您可以使用版本来管理函数的部署。例如，您现在生产环境上运行了一个函数，假设是V1版本，您可以发布一个这个函数的新版本，比如发布V2版本，以用于新版本测试，而不会影响生产环境V1版本的用户。</p>



<p>这里有一个**$LATEST<strong>的概念，$LATEST您可以理解成它是最新的</strong>“未发布版本”**，当您创建和使用Lambda函数时，您就是在处理$ LATEST版本，您可以一直修改$LATEST直到您满意为止。这是一个可变函数，因为您可以对其进行修改。</p>



<p>然后当修改完成后，您需要发布来使用Lambda函数，这个时候您就需要创建一个版本，比如V1版本。您每次发布函数时，Lambda 都会为函数创建一个新版本。</p>



<p>在您发布版本后，函数的代码和大多数设置都会被锁定，也就是不可改变的了，这也是为了给该版本的用户维持一致的体验，您无法在进行修改。比如一旦发布V1版本，V1版本就无法在修改了。</p>



<p>修改函数后可以通过将其发布为新的版本以投入使用，比如V2、V3等。 每一个版本都有各自的ARN，所以您可以单独调用V1版本，也可以单独调用V2版本，或者$LATEST。</p>



<p>那函数版本都包括什么呢？**它包括您的代码以及所有关联的依赖项，调用函数的运行环境，函数的设置以及环境变量等等。**发布函数版本之后，这些都是不可变的，比如如果您想调整内存，您需要创建一个新版本如V2，然后进行发布。</p>



<p>您可以访问每个版本的Lambda函数，当您进行金丝雀测试时会非常有帮助。</p>



<h2 class="wp-block-heading">Lambda 函数别名</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.003-1024x576.jpeg" alt="" class="wp-image-5332" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.003-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.003-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.003-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.003-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.003-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.003-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.003.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>接下来我们来讨论Lambda 函数别名，aliases。</p>



<p><strong>Lambda 别名类似于指向特定函数版本的指针</strong>，您可以定义任何您想要使用的别名，比如一些比较常见的别名例子为：开发、测试、生成环境的别名。您可以定义这些别名然后分别将其指向不同的Lambda版本。</p>



<p>每个别名都有唯一的 ARN，而且别名是可以更改指向的，可以更新别名以便指向函数的新的或其他版本。</p>



<p>我们举个的例子，组织一般都会分为开发、生产、测试环境，比如对应我们的3个函数版本，LATEST、V1和V2。然后：</p>



<ul class="wp-block-list">
<li>我们可以创建一个DEV的别名，将其指向LATEST版本；</li>



<li>在创建一个TEST别名，将其指向V2版本；</li>



<li>以及创建一个PROD别名，将其指向V1版本。</li>
</ul>



<p>以上三个别名的ARN都是不同的，这样如果有用户访问DEV别名的ARN时，就会被重定向到LATEST函数版本；访问TEST别名时，就会重定向到V2版本，PROD别名同理。</p>



<p>对于用户的角度，可以访问DEV，TEST和PROD三个别名，重定向到对应的函数版本；然后我们可以更改这三个别名指向我们希望的其他的函数版本。</p>



<p>使用别名可以支持蓝绿部署，可以为Lambda函数分配权重，这样的话访问别名之后就不只是对应一个函数版本了。</p>



<p>比如访问PROD别名时，可以配置将访问的95%的流量指向V1，也就是生成环境的稳定版本；然后将5%的访问流量切到V2版本，用于测试新版本。这是通过配置权重来实现的。</p>



<h2 class="wp-block-heading">函数别名与API网关</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.004-1024x576.jpeg" alt="" class="wp-image-5333" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.004-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.004-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.004-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.004-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.004-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.004-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.004.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>我们继续。</p>



<p>一般情况下，新版本发布都会遵循三个阶段，开发阶段、测试阶段及发布至生产环境。 新版本会在开发环境做测试，如果测试确认没问题之后，会先发布到测试环境，通常测试环境会导入生成环境的部分访问流量做测试，如果测试确认没问题，在慢慢将更多的流量导入测试环境的新版本，最终完成新版本的发布。</p>



<p>接下来我们拿一个API网关的环境，来说明下针对不同的阶段函数别名的运用：</p>



<p>这里有一个开发Stage（开发阶段），指向DEV的别名，然后向$LATEST的Lambda函数路由100%的流量。 还有一个测试Stage（测试阶段），指向TEST别名，向Lambda函数的V2版本路由100%的流量。 生产Stage（生产阶段），指向PROD别名，向Lambda函数的V1版本路由100%的流量。</p>



<p>V2是我们的新版本，假设目前内部已经测试确认了，我们需要将V2版本发布到生产环境，也就是PROD别名。可以通过配置权重将生产的访问量慢慢切换到V2版本。比如配置PROD别名，将95%的流量指向V1，然后将5%的流量指向V2版本。</p>



<p>我们在这个例子中要注意的是，上面这个切换版本的步骤，是发生在Lambda别名级别，我们调整的是PROD别名；</p>



<p>在API网关这一侧，指向的别名一直没有改变，我们不必修改API网关配置。</p>



<p>所以，在上面这种或者类似的场景中，如果我们需要部署和切换不同的函数版本，使用函数别名来进行配置的话就会非常的方便；当有新的函数版本时，我们只需要通过别名配置将流量慢慢切换到新的函数版本，而不需要每次发布时调整API网关的配置。</p>



<p>通过这个例子，希望大家对于函数别名的功能和使用场景有所了解，发布新版本时，使用别名只需要调整别名的指向，而不需要调整其前面的，对于上面这个例子的API网关的配置。</p>



<h2 class="wp-block-heading">Lambda与CodeDeploy</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.005-1024x576.jpeg" alt="" class="wp-image-5334" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.005-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.005-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.005-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.005-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.005-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.005-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/26-AWS-Lambda-Part-4.005.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>最后，我们来看一下 Lambda和CodeDeploy。</p>



<p><strong>CodeDeploy可以帮助您实现自动化的Lambda别名的流量转移功能</strong>，也就是Traffic shifting功能，如果您使用SAM无服务器应用程序模型来创建，这个功能是直接内置的。</p>



<p>我们来看一下整个的流程： 这里有一个PROD别名，以及两个函数版本，V1和V2。V1是当前线上的版本，V2是您刚刚发布的新版本。</p>



<p>假设目前线上都是在访问函数的V1版本，而V2版本0%没有访问量，您希望将V1的访问量慢慢转移到新版本V2，这样完成新版本的上线使用。</p>



<p>注意这里说的不是手动一下切到V2版本，而是通过配置，自动将当前V1版本的100%的访问量，慢慢的按一定百分比转移到新版本V2上。逐步将访问量切换到新版本而不是立刻切换，也是为了当新版本有问题时将影响降到最低。</p>



<p>CodeDeploy就可以帮您实现这个过程。</p>



<p>那多久且每次转移多少百分比的访问量到新的版本呢？这就需要定义部署策略，我们来看一下都有哪些策略： <strong>第一种部署策略为线性的方式</strong>，也就是您可以定义每隔N分钟，增加10%的流量，直到100%。 比如，Linear10PercentEvery1Minute，定义每1分钟转移10%的访问量到V2版本直到100% 。 以及 Linear10PercentEvery2Minutes，定义每2分钟转移10%的访问量到V2版本直到100%， 或者配置为每3分钟以及每10分钟转移10%流量直到100%，以上这些就是线性的方式。</p>



<p><strong>第二种部署的策略为金丝雀方式</strong>，您可以选择： Canary10Percent5Minutes ，5分钟切换10%的流量，然后如果没有收到任何错误，切换剩下的所有流量到新版本V2。 Canary10Percent10Minutes，或者10分钟切换10%的流量，然后如果没有收到任何错误，切换剩下的所有流量到新版本V2。以及定义15、30分钟，切换10%的流量，然后在切换剩下的所有流量到新版本V2。</p>



<p><strong>第三种部署的策略为All-at-once</strong>，这种方式就不会在按照一定的百分比切换访问量了，而是将所有的流量从原来的版本一次性切换到新的版本。</p>



<p>最后我们可以配置Hooks挂钩,<strong>在流量转换开始到新版本之前 和 流量转换完成后运行健康检查</strong>。</p>



<p>比如我们如果配置了转移前的hook，在部署V2版本时测试此版本函数是否正常；然后当流量转移到新版本V2之后，还会运行一个流量转移后的Hook，确保一切正常，当测试时发现问题时，自动对版本进行回滚，所以这个Hooks挂钩的作用是非常大的。</p>



<p>好的，以上就是我们今天课时的内容，我们讨论了AWS Lambda &#8211; 第四部分的内容，希望能够给大家带来帮助。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1-1024x576.jpeg" alt="" class="wp-image-5335" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>希望此系列教程能为您通过AWS的认证考试带来帮助，如您有任何疑问，请联系我们：</p>



<ul class="wp-block-list">
<li>如果您想获取本课程全部课时，请扫PPT的二维码加入。</li>



<li><a href="http://xn--AWSwww-y50k01m049ahdz76jqs0a27b.iloveaws.cn">AWS爱好者的网址是www.iloveaws.cn</a>，认证视频课程，免费的认证考试仿真题以及认证课程文章，都可以在网站找得到</li>



<li>可以通过扫码加入【AWS爱好者】微信公众号，查看原创的AWS知识点相关文章。</li>



<li>加入【AWS爱好者】微信群，和其他同学一起备考，以及探讨交流AWS相关知识。</li>



<li>我们今天的视频课程就到这里，感谢大家的观看，我们下一课程再见。</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/5329.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AWS Lambda &#8211; 同步/异步调用，事件源，目标</title>
		<link>https://www.iloveaws.cn/5295.html</link>
					<comments>https://www.iloveaws.cn/5295.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Thu, 04 May 2023 02:15:20 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[通过AWS SAP认证]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=5295</guid>

					<description><![CDATA[Hello大家好，我们今天继续讨论AWS Lambda的内容]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.001-1024x576.jpeg" alt="" class="wp-image-5296" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.001-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.001-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.001-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.001-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.001-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.001-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.001.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Hello大家好，我们今天继续讨论AWS Lambda的内容。</p>



<h2 class="wp-block-heading">同步调用</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.002-1024x576.jpeg" alt="" class="wp-image-5297" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.002-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.002-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.002-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.002-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.002-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.002-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.002.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Lambda函数有三种调用方式。</p>



<p>第一种方式是同步调用。</p>



<p>当我们使用API、CLI以及API网关等调用函数时，就是同步调用。</p>



<p>当您同步调用函数时，Lambda会运行该函数并等待响应，当函数完成时将结果同步返回，所以您的代码将等待这个响应结果。</p>



<p>如果在这调用过程中需要错误控制，这是需要在您在客户侧实现的。您负责确定处理错误的策略，如可以重试、将事件发送到队列以进行调试，或者忽略该错误。</p>



<p>我们看两个例子：</p>



<ol class="wp-block-list">
<li>第一个，您的SDK要调用Lambda函数，然后Lambda函数会运行，SDK等待响应。如果响应不是您期望的结果，如返回错误时，您希望重试调用函数，这是您需要实现的。</li>



<li>第二个例子，是客户端通过API网关调用函数。客户端调用RESTAPI，API网关将请求发送给Lambda函数，函数就会执行。然后向API网关返回响应，然后您从API网关收到响应。</li>
</ol>



<p>这两个例子都是同步调用。在同步调用过程中如果出现了错误，需要您自行处理错误，如忽略、重试、发送到队列进行调试等等。</p>



<p>好，我们继续。</p>



<h2 class="wp-block-heading">异步调用</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.003-1024x576.jpeg" alt="" class="wp-image-5298" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.003-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.003-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.003-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.003-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.003-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.003-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.003.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>接下来是异步调用。</p>



<p>当事件源是S3、SNS等服务调用函数时是通过异步调用的方式。</p>



<p>在异步调用函数时，您不必等待函数代码的响应。将事件交给 Lambda，剩下的事情由Lambda 进行处理。</p>



<p>在异步调用时， Lambda 会针对函数错误重试两次。比如在上传至S3图片处理缩略图的案例中，如调用函数时发生错误，那么将会在重试两次。</p>



<p>您需要确保这个过程是幂等的，这是非常重要的。假设您的函数重试了2次写入数据库操作，对数据库做了一些更改，您要保证每次的操作结果是一致的。如果不是幂等的，重试2次产生了两次不同的更改，那么可能会出问题。</p>



<p>我们看个例子，上传一个文件到S3，然后其触发一个Lambda函数，这就是一个异步调用，当调用发生错误时会进行重试，如果所有重试都失败了，<strong>您可以通过定义一个死信队列，它可以是一个SQS队列，或者SNS主题，保存失败的的事件供近一步处理。</strong></p>



<p>对于我们的这个例子是通过SQS作为死信队列，<strong>当所有的重试都失败之后，不是丢弃这些事件，而是将失败的事件发送至死信队列，供后续处理。</strong></p>



<p>好，以上是异步调用。</p>



<h2 class="wp-block-heading">事件源映射</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.004-1024x576.jpeg" alt="" class="wp-image-5299" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.004-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.004-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.004-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.004-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.004-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.004-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.004.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>第三种调用类型称为事件源映射。</p>



<p>事件源映射是一个从事件源读取并调用 Lambda 函数的Lambda 资源。它从 Amazon SQS 队列、Amazon Kinesis 流或 Amazon DynamoDB 流中轮询批量读取项目，并将它们发送到您的函数。 所有的记录都会按照正确的顺序进行处理，除了SQS标准队列。</p>



<ul class="wp-block-list">
<li>对于SQS标准队列，项目不一定按顺序处理，函数可能会处理任意的批次，</li>



<li>对于Kinesis数据流，将按每个Shard的顺序处理记录，</li>



<li>对于SQS FIFO，将按每个消息组的顺序进行处理，</li>



<li>对于DynamoDB流，它将对DynamoDB流的每个分区进行排序处理。</li>
</ul>



<p>我们举个例子看一下事件源映射，这里是kinesis作为事件源，然后这是您的Lambda函数，Lambda事件源映射会作用在这两者之间，它会轮询kinesis，然后kinesis可能会返回一批记录，事件源映射将调用我们的Lambda函数进行处理，这就是事件源映射的工作原理。</p>



<p>如果在这个过程中您的函数返回错误，那么将重新处理整个批次直到成功，要注意这一点。</p>



<p>这也就是说，如果是Kinesis或DynamoDB Stream，他们将停止分片处理，因为它是按顺序处理的，如果第一批无法处理，将无法获得下一批，直到第一批已成功处理。</p>



<p>对于SQS FIFO，它将会停止处理，除非您定义了SQS 死信队列，在定义了死信队列的情况下，SQS会将失败的批次发送到死信队列，然后继续处理。</p>



<p>再一次强调，您需要确保的您的Lambda函数是幂等的，以防如果发生错误后两次处理同一批次事件出现问题。</p>



<h2 class="wp-block-heading">配置目标</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.005-1024x576.jpeg" alt="" class="wp-image-5300" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.005-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.005-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.005-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.005-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.005-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.005-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/25-AWS-Lambda-Part-3.005.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>目前您还可以配置您的Lambda函数将结果发送到一个称为目标destinations的地方。 目标可以配置在异步调用以及事件源映射，我们下面就来详细讨论下。</p>



<p>对于异步调用，您可以为成功和失败的事件定义目标。如果您没有定义目标，如果您的Lambda函数会返回一些信息，就无法看到，这些信息会被完全忽略。您可以配置将这些信息发送到SQS、SNS、另一个Lambda函数、或者EventBridge bus。</p>



<p>也就是说，Lambda函数从事件队列中获取事件进行异步处理时，如果返回成功，我们可以定义一个成功的目标，如SQS、SNS、Lambda等等；如果处理失败了，我们也可以将这些记录发送到定义的失败的事件目标。</p>



<p><strong>所以可以配置两种destinations，成功事件和失败事件的目标。</strong></p>



<p>好，有的学友可能会问了，那前面的死信队列和这个目标配置的功能是不是有些相似？</p>



<p>是的 ，配置失败的事件目标 和 死信队列的用途非常相似，AWS建议在异步调用您的Lambda函数时，使用目标配置来代替死信队列。当然两者有一些重叠的功能，且他们两个是可以同时使用的。使用目标配置，支持配置更多的目标类型：如SQS、SNS、Lambda、或者EventBridge bus，而死信队列只能配置为SQS和SNS。</p>



<p>接下来，对于事件源映射，只能配置失败事件的目标，用于接收处理失败的事件。如果一批事件处理失败了，则事件源映射将有关该批次的详细信息发送SQS或SNS。</p>



<p>来看一下这个图。事件源映射读取Kinesis的记录，会将其发送给Lambda函数。在这个过程中如果处理这些记录出现失败，我们可以选择将它们发送到SQS或SNS作为失败的事件目标，然后 Kinesis可以继续处理，这样的好处是当有无法处理某些记录时不会一直卡在这里。</p>



<p>如果您是处理SQS队列中的内容，当然也可以直接从SQS创建死信队列，作为上面目标的替代方案。 所以，达成的方案可能会有多种，但是作为解决方案架构师，您需要深入了解需求后，然后选择最佳方案和最佳实践。</p>



<p>好的，以上就是我们今天课时的内容，我们讨论了AWS Lambda &#8211; 第三部分的内容，希望能够给大家带来帮助。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1024x576.jpeg" alt="" class="wp-image-5301" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/05/71-Amazon-ElastiCache.001.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>希望此系列教程能为您通过AWS的认证考试带来帮助，如您有任何疑问，请联系我们：</p>



<ul class="wp-block-list">
<li>如果您想获取本课程全部课时，请扫PPT的二维码加入。</li>



<li><a href="http://xn--AWSwww-y50k01m049ahdz76jqs0a27b.iloveaws.cn">AWS爱好者的网址是www.iloveaws.cn</a>，认证视频课程，免费的认证考试仿真题以及认证课程文章，都可以在网站找得到</li>



<li>可以通过扫码加入【AWS爱好者】微信公众号，查看原创的AWS知识点相关文章。</li>



<li>加入【AWS爱好者】微信群，和其他同学一起备考，以及探讨交流AWS相关知识。</li>
</ul>



<p>我们今天的视频课程就到这里，感谢大家的观看，我们下一课程再见。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/5295.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AWS Lambda &#8211; 第二部分</title>
		<link>https://www.iloveaws.cn/5198.html</link>
					<comments>https://www.iloveaws.cn/5198.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Mon, 03 Apr 2023 01:54:30 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[通过AWS SAP认证]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=5198</guid>

					<description><![CDATA[Hello大家好，我们今天继续讨论AWS Lambda的内容。]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.001-1024x576.jpeg" alt="" class="wp-image-5199" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.001-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.001-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.001-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.001-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.001-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.001-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.001.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Hello大家好，我们今天继续讨论AWS Lambda的内容。</p>



<h2 class="wp-block-heading">Lambda的网络</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.002-1024x576.jpeg" alt="" class="wp-image-5200" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.002-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.002-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.002-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.002-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.002-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.002-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.002.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>首先，我们来讨论一下Lambda的网络，联网相关的内容。</p>



<p>在部署Lambda时，在默认情况下，Lambda函数是部署和运行在AWS的一个安全的VPC中，是在您的VPC之外的。在这种环境下，Lambda函数是可以访问Internet 外部的API，以及通过Internet和AWS的服务进行通信，比如Lambda函数可以通过DynamoDB的公有Endpoint地址与其进行通信。</p>



<p>但是，注意，在这种情况下如果您有一个VPC，且在您的VPC内私有子网有一些资源，比如只能通过私有地址访问的RDS，那么在这种情况下，您的Lambda函数是无法访问到私有子网中的资源的，比如这个RDS。因为AWS的这个安全VPC和您的私有子网之间没有相关的路由。</p>



<p>那如何解决这个问题呢？方案就是将您的Lambda函数连接到您账户中的VPC，函数在运行时就可以访问VPC内的私有资源。</p>



<p>将Lambda函数连接到了VPC时，Lambda 在函数的 VPC 配置中会为VPC的每个子网和安全组组合创建一个ENI，然后通过在安全组配置相应访问规则，Lambda函数就可以通过私有子网访问RDS。</p>



<p>那现在还有一个问题，现在Lambda函数在VPC内，之前的外部API就无法访问了。如果需要访问外部的API，就需要通过公有子网的NAT网关或者实例，然后通过internet网关 访问外部的API。</p>



<p>最后，让我们看看函数如何访问DynamoDB，当然函数同样是可以通过NAT网关或者NAT实例，然后通过internet网关访问DynamoDB。但是这种方式不是通过私有网络访问的，而且我们可能需要为NAT网关/实例以及internet网关支付费用。所以这种方式是可行的，但是不是最佳实践。</p>



<p>最佳实践是通过创建DynamoDB的网关终端节点，然后私有子网的Lambda函数通过终端节点访问DynamoDB，这样的话访问都是通过私有网络，而不通过internet，当然前提是要您配置好相应的路由表。</p>



<p>好，如果在以后遇到Lambda函数部署的问题，您需要掌握上面讲的函数部署在VPC外，以及连接至VPC后，对应函数需要访问的资源,评估并确定方案 ；以及面对不同的业务场景，选择最佳的实现方案。</p>



<p>最后，无论您的Lambda函数是部署在VPC外还是连接到了VPC，都可以与CloudWatch Logs通信。也就是说这两种情况函数都是可以发送日志到CloudWatch Logs的。 这是AWS内部实现的，不需要我们考虑两者网络的情况。</p>



<h2 class="wp-block-heading">Lambda 日志、监控以及追踪</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.003-1024x576.jpeg" alt="" class="wp-image-5201" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.003-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.003-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.003-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.003-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.003-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.003-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.003.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>好，接下来我们讨论Lambda 日志、监控以及追踪。</p>



<p>首先有CloudWatch，我们知道Lambda和CloudWatch服务集成，Lambda的执行日志都会发送并存储至Cloudwatch logs，而无论Lambda函数部署在您的VPC内还是VPC外。</p>



<p>可以通过Cloudwatch指标，查看Lambda的一些指标，如：成功调用、错误率、延迟、超时等等。</p>



<p>Lambda函数的日志写入Cloudwatch，需要分配函数执行角色，并添加相应的如写入Cloudwatch权限，这样才能够正常写入日志，这一点要注意。</p>



<p>接下来是X-Ray，X-Ray是用于分布式追踪，可以使用X-Ray来追踪Lambda函数。只需要在Lambda的配置中开启，AWS就会为您启动一个X-Ray守护进程；或者也可以在代码中使用AWS SDK添加X-Ray指针。同样，需要注意Lambda函数的执行角色要分配相应的与X-Ray访问的权限。</p>



<p>好的，以上就是我们今天课时的内容，我们讨论了AWS Lambda &#8211; 第二部分的内容，希望能够给大家带来帮助。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.004-1024x576.jpeg" alt="" class="wp-image-5202" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.004-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.004-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.004-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.004-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.004-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.004-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/04/24-AWS-Lambda-Part-2.004.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>希望此系列教程能为您通过AWS的认证考试带来帮助，如您有任何疑问，请联系我们：</p>



<ul class="wp-block-list">
<li>如果您想获取本课程全部课时，请扫PPT的二维码加入。</li>



<li><a href="http://xn--AWSwww-y50k01m049ahdz76jqs0a27b.iloveaws.cn">AWS爱好者的网址是www.iloveaws.cn</a>，认证视频课程，免费的认证考试仿真题以及认证课程文章，都可以在网站找得到</li>



<li>可以通过扫码加入【AWS爱好者】微信公众号，查看原创的AWS知识点相关文章。</li>



<li>加入【AWS爱好者】微信群，和其他同学一起备考，以及探讨交流AWS相关知识。</li>
</ul>



<p>我们今天的视频课程就到这里，感谢大家的观看，我们下一课程再见。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/5198.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AWS Lambda &#8211; 第一部分</title>
		<link>https://www.iloveaws.cn/5135.html</link>
					<comments>https://www.iloveaws.cn/5135.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Wed, 15 Mar 2023 10:16:13 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[通过AWS SAP认证]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=5135</guid>

					<description><![CDATA[SAP认证考试会涉及到很多Lambda的内容，想要通过认证考试虽然不一定非要精通开发，但需要知道Lambda的一些功能和特性、适用场景以及Lambda是如何工作的。]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.001-1024x576.jpeg" alt="" class="wp-image-5136" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.001-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.001-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.001-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.001-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.001-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.001-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.001.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Hello大家好，我们今天开始讨论AWS Lambda的内容。</p>



<p>SAP认证考试会涉及到很多Lambda的内容，想要通过认证考试虽然不一定非要精通开发，但需要知道Lambda的一些功能和特性、适用场景以及Lambda是如何工作的。</p>



<p>我们开始吧！</p>



<h2 class="wp-block-heading">Lambda与其他服务一起使用</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.002-1024x576.jpeg" alt="" class="wp-image-5137" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.002-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.002-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.002-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.002-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.002-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.002-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.002.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Lambda 可以与多个AWS服务进行集成，从而调用函数，执行一些自动化任务。比如：API网关、Kinesis、DynamoDB、S3、IOT、CloudWatch Events、CloudWatch Logs、SNS、Cognito、SQS等等，这些服务都和Lambda进行了集成，可以与其一起工作。</p>



<p>您可以配置触发器来调用函数，以响应如：资源生命周期事件、响应传入的 HTTP 请求、使用队列中的事件或按计划运行等。</p>



<p>Lambda通过与多个AWS服务的集成，可以胜任很多场景的自动化的工作。</p>



<h2 class="wp-block-heading">使用Lambda结合S3自动创建缩略图</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.003-1024x576.jpeg" alt="" class="wp-image-5138" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.003-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.003-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.003-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.003-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.003-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.003-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.003.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>接下来我们就看两个比较常见的Lambda的使用案例，他们也经常出现在考试的题目中。</p>



<p>第一个案例是为每个上传到S3存储桶的图像文件自动创建缩略图，大致流程是这样的：</p>



<ol class="wp-block-list">
<li>当有新的图像文件存储到S3存储桶中后，S3将触发我们配置的一个Lambda函数；</li>



<li>这个Lambda函数的功能为创建缩略图，且将缩略图比如存放在另外指定的S3存储桶中供使用；</li>



<li>以及将一些图像的元数据如：图像名称、大小、创建日期等推送到DynamoDB中存储。</li>
</ol>



<h2 class="wp-block-heading">使用Lambda结合CloudWatch Events 执行Cron job</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.004-1024x576.jpeg" alt="" class="wp-image-5139" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.004-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.004-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.004-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.004-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.004-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.004-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.004.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>另一个非常常见的案例是使用Lambda 结合 CloudWatch Events 执行Cron job。</p>



<p>我们在日常工作中经常会有一些定期要执行的任务，在以往一般都是通过在EC2上使用CRON来定期调用、执行相应的任务。</p>



<p>这样的话就需要启动EC2实例，尽管可能这台EC2大部分时间不工作，我们还是需要为其付费，而且还要负责维护这台EC2实例。那现在可以：</p>



<ol class="wp-block-list">
<li>通过定义CloudWatch Events</li>



<li>然后我们可以定义一个时间间隔，比如每个小时去触发我们配置的Lambda函数，执行一个最长可为15分钟的任务。</li>
</ol>



<p>这是通过无服务器架构执行Cron任务的最佳实践，CloudWatch Events和Lambda都是无服务器的，不需要我们管理任何基础设施以及为基础设施付费。</p>



<h2 class="wp-block-heading">Lambda支持的运行环境</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.005-1024x576.jpeg" alt="" class="wp-image-5140" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.005-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.005-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.005-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.005-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.005-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.005-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.005.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>我们继续，Lambda支持的运行环境。</p>



<p>Lambda运行环境支持多种语言，如：Node.js 、Python、Ruby 、Java、Go以及.NET等。</p>



<p>您也可以通过自定义运行环境来使用其他的编程语言，通过这种方式Lambda几乎支持任何语言。</p>



<p>如果在考试题目中出现Docker相关的场景，那么在大多数情况下Lambda都不是一个很好的选择。</p>



<p>如果出现Docker的场景，一般AWS想让您考虑使用ECS、Fargate，或者和Docker配合很好的批处理Batch，而不是Lambda。</p>



<p>虽然有的时候可以通过自定义运行环境来使用Lambda 执行Docker同样的工作，但是一般不推荐这么做。所以，如果看到Docker，优先考虑ECS、Fargate或者Batch，而不是Lambda。</p>



<h2 class="wp-block-heading">Lambda的使用限制</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.006-1024x576.jpeg" alt="" class="wp-image-5141" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.006-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.006-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.006-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.006-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.006-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.006-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.006.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>接下来我们讨论Lambda的使用限制。其中有一些是需要我们记住的，这样才能够判断在一些场景中是否适合使用Lambda。</p>



<ul class="wp-block-list">
<li>首先是内存，也就是提供给您的Lambda函数的内存，是在128MB到3GB之间，最高为3个G，所以如果您运行的函数如果需要超过3GB的内存，那么就无法使用Lambda。在2020年12月1日左右，AWS对外公布Lambda已经最高支持10G的内存了，比之前提高了3倍以上。</li>



<li>然后CPU，Lambda是与配置的内存成正比的方式线性分配CPU处理能力的。也就是说，您无法手动指定需要多少CPU计算能力。您指定的内存越大，那么获得的CPU计算能力越高。在内存为1792 MB 时，函数拥有相当于一个完整 vCPU的处理能力。不过也要注意您的代码是支持多线程的，否则即使分配了多vCPU也无法充分利用。</li>



<li>然后，函数的超时时间为15分钟，您的函数运行不能超过15分钟。所以如果在考试中有题目要运行任务超过15分钟的场景，那么Lambda就不是一个很好的选择。</li>



<li>Lambda函数的/tmp目录，用来下载和存储临时文件的目录，最大支持512MB存储空间。所以如果您从S3拉取比如2G的文件然后使用函数来处理的话，是做不到的，因为您的函数的最大存储空间为512MB。</li>



<li>部署程序包大小包括层最大支持250MB，您上传到AWS的程序包是不能超过250M的。所以，要注意的一点是，您需要结合/tmp来确定有多少空间来运行您的Lambda函数。</li>



<li>最后，默认情况下，最大的并发的数量是1000。也就是最高可以同时运行1000个函数实例。注意这是一个软限制，可以请求在提高限制。</li>
</ul>



<h2 class="wp-block-heading">Lambda的延迟因素</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.007-1024x576.jpeg" alt="" class="wp-image-5142" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.007-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.007-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.007-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.007-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.007-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.007-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.007.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>好的，接下来我们来讨论Lambda的延迟因素。</p>



<p>我们前面介绍了为Lambda分配内存，从而获得更高的CPU计算能力。其实要优化Lambda的性能，提高执行的效率，除了这些还需要了解并发限制、冷启动因素以及做好Lambda的相关监控，下面我们就分别来讨论：</p>



<p>首先是Lambda函数运行的并发限制，因为资源从来都不是无限的，对吧。</p>



<p>我们上一张PPT讨论过，在默认情况下，最大的并发的数量是1000，是软限制，可以提交申请增加。所以在使用Lambda时，先要评估默认的并发数是不是满足需要，如果不满足提前提交申请增加并发。</p>



<p>只增加并发数量，并不是就意味着这样就OK了，这只代表马路宽了一些，可以同时经过的车多了，但还有一个非常容易忽视的因素—冷启动时间。</p>



<p>什么是冷启动时间呢？我们看一下这个图，当我们在第一次调用Lambda函数时，它要从S3下载代码，下载所有依赖项，创建一个容器并在执行代码之前初始化运行环境，这整个持续时间（除了代码执行）就是冷启动时间。</p>



<p>如果在函数执行过程中，有新的请求调用函数，也就是出现了函数并发调用，那么会在分配一个新的实例处理该事件，新的实例在执行我们的函数代码前，同样需要下载代码，下载所有依赖项，创建一个容器，初始化运行环境等等，这样势必会增加Lambda函数的响应延迟。</p>



<p>在re:invent 2019，AWS推出了一个“预配置并发”这个功能，可以配置预热Lambda执行环境。这样的话，在调用函数时可以使用环境来立即执行代码，而无需花费时间进行冷启动。</p>



<p>最后，要优化Lambda函数的延迟，还要做好相应的监控。 知道哪里的问题才能想办法优化。 CloudWatch仅显示Lambda函数的一些指标，如果我们的使用场景是Lambda结合多个AWS服务，且需要知道下游AWS服务（例如DynamoDB，S3）对于每个lambda调用的情况的话，就可以使用X-Ray。X-Ray可以通过可视化的方式，跟踪和调试lambda函数和其他AWS服务之间的问题。</p>



<h2 class="wp-block-heading">Lambda安全相关</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.008-1024x576.jpeg" alt="" class="wp-image-5143" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.008-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.008-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.008-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.008-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.008-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.008-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/03/23-AWS-Lambda-Part-1.008.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>接下来我们讨论Lambda安全相关。</p>



<p>首先，和其他服务一样，可以使用IAM来管理对 Lambda API 和资源（如函数和层）的访问。</p>



<p>然后，Lambda 函数也具有一个策略，称为执行角色，这个执行角色的配置在很多AWS服务中也都存在，是用来向函数授予访问 AWS 服务和资源的权限，是函数被调用时代入的角色。比如您的Lambda函数需要写入DynamoDB，就需要给函数分配执行角色并提供相应的写入权限。</p>



<p>除此之外，Lambda还有一个叫作基于资源的策略，和S3的存储桶策略有点类似，使用JSON格式定义策略。</p>



<p>我们来看一个策略：</p>



<p>这个策略的大致内容是，允许这个账户下的S3的一个存储桶调用名为 my-function 的函数。 也就是通过Lambda的基于资源的策略，允许AWS服务调用Lambda函数。</p>



<p>另外要注意下，当您将这个S3或者其他AWS服务与Lambda函数建立连接时，将会创建相应的基于资源的策略，这块要注意下，考试中可能会有相应的考点。</p>



<p>因此，使用基于资源的策略可以做两件事：</p>



<ol class="wp-block-list">
<li>第一，可以允许其他的AWS账户调用或者管理Lambda函数。如果您需要跨账户调用Lambda函数，就需要使用基于资源的策略，以允许其他账户调用；</li>



<li>第二，允许AWS服务调用或管理您的Lambda函数，比如上面的这个S3存储桶的例子。</li>
</ol>



<p>好，以上是Lambda权限策略部分。</p>



<p>以上就是我们今天课时的内容，我们讨论了AWS Lambda &#8211; 第一部分的内容，希望能够给大家带来帮助。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/03/71-Amazon-ElastiCache.001-1024x576.jpeg" alt="" class="wp-image-5144" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/03/71-Amazon-ElastiCache.001-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/03/71-Amazon-ElastiCache.001-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/03/71-Amazon-ElastiCache.001-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/03/71-Amazon-ElastiCache.001-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/03/71-Amazon-ElastiCache.001-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/03/71-Amazon-ElastiCache.001-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/03/71-Amazon-ElastiCache.001.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>希望此系列教程能为您通过AWS的认证考试带来帮助，如您有任何疑问，请联系我们：</p>



<ul class="wp-block-list">
<li>如果您想获取本课程全部课时，请扫PPT的二维码加入。</li>



<li><a href="http://xn--AWSwww-y50k01m049ahdz76jqs0a27b.iloveaws.cn">AWS爱好者的网址是www.iloveaws.cn</a>，认证视频课程，免费的认证考试仿真题以及认证课程文章，都可以在网站找得到</li>



<li>可以通过扫码加入【AWS爱好者】微信公众号，查看原创的AWS知识点相关文章。</li>



<li>加入【AWS爱好者】微信群，和其他同学一起备考，以及探讨交流AWS相关知识。</li>
</ul>



<p>我们今天的视频课程就到这里，感谢大家的观看，我们下一课程再见。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/5135.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>会话状态和粘性会话</title>
		<link>https://www.iloveaws.cn/5086.html</link>
					<comments>https://www.iloveaws.cn/5086.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Thu, 23 Feb 2023 08:10:08 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[通过AWS SAP认证]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=5086</guid>

					<description><![CDATA[HELLO大家好，当我们使用弹性负载均衡器时，负载均衡器后面的EC2 实例上的应用程序通常是无状态的，无状态意味着应用程序不会在EC2实例上存储信息，即便有的场景会暂时将数据存储在实例的缓存中，但那些也不是持久化的数据。这是最佳实践]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-2-1024x576.jpeg" alt="" class="wp-image-5091" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-2-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-2-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-2-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-2-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-2-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-2-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-2.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>HELLO大家好，当我们使用弹性负载均衡器时，负载均衡器后面的EC2 实例上的应用程序通常是无状态的，无状态意味着应用程序不会在EC2实例上存储信息，即便有的场景会暂时将数据存储在实例的缓存中，但那些也不是持久化的数据。这是最佳实践。</p>



<p>为什么一般不会在EC2上存储信息呢？因为在弹性负载均衡器后面的EC2实例，通常会因为某些情况终止，并启动新的实例替代。所以终止实例上存储的信息就会丢失；另外用户访问ELB后的实例时，也要有某种技术能够保证，同一个用户访问的是同一个实例，不然用户在实例A生成了一些数据，下次访问如果被ELB轮询访问到实例B了那也会有问题。</p>



<h2 class="wp-block-heading">存储会话状态</h2>



<p>因此，我们就会使用到某些技术特性，比如如果我们确实需要存储一些会话数据，我们通常将其存储在 EC2 实例的外部，这样的话如果一个用户访问时被重定向到另一个新实例，那么这个用户也不会重新进行认证。我们还会用到粘性会话的特性，来解决上述的问题。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-2-1024x576.jpeg" alt="" class="wp-image-5092" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-2-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-2-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-2-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-2-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-2-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-2-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-2.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>我们来看下前面提到的几种技术特性，主要是使用在有弹性负载均衡器的场景。</p>



<p>第一种方式是在外部存储我们的会话状态数据，我们来一起看一下。</p>



<p>假设我们有一个负载均衡器，在其后面我们有一些实例，用户连接到其中一个实例，然后，用户会进行身份验证并获得一些可用于访问应用程序的身份验证凭据,或者用于运行在EC2实例上的WEB应用程序连接其他服务的验证凭据。那在这种情况下，这类的数据就可以存储在某些外部的服务中，比如DynamoDB就是其中之一。</p>



<p>在这种情况下，身份验证详细信息存储在 DynamoDB 表中，如果该实例出现问题，用户会被定向到另一个实例，然后就可以在DynamoDB表中检索那些身份验证凭据并继续正常访问，而不需要再次登录，从可用性的角度来看，这也是非常好的事情。</p>



<p>这类的数据，我们称之为会话状态数据，它通常用于身份验证凭据和其他各种与特定会话相关的信息。通过这种方式，该数据不会丢失或需要重新生成。</p>



<p>ElastiCache 是另一种用于存储会话状态数据的解决方案。因此，对于会话状态数据的存储，AWS 解决方案通常是 DynamoDB 表、ElastiCache，以及在某些情况下会使用Amazon S3。</p>



<h2 class="wp-block-heading">粘性会话</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-2-1024x576.jpeg" alt="" class="wp-image-5093" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-2-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-2-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-2-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-2-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-2-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-2-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-2.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>另一种技术是所谓的粘性会话，我们一起来看一下。</p>



<p>同样，假设我们有一个负载均衡器，在其后面我们有一些实例，开启粘性会话的情况下，用户连接到其中一个实例，然后生成了一个 cookie。</p>



<p>客户端的访问在cookie的整个生命周期内都会绑定到这个特定的 EC2 实例。因此，如果他们的连接由于某种原因被断开并且他们重新连接，则 cookie 将继续告诉负载均衡器将该客户端的会话发送到哪个 EC2 实例。这样的话就保证了即便在使用负载均衡器的情况下，每个客户端和EC2的连接即便中断重连，也会连接到相同的实例。</p>



<p>那如果不使用粘性会话功能呢？客户端和EC2的连接中断后，重新连接后，那就非常有可能就连接到其他的实例了，大家理解吧？</p>



<p>在这种情况下，诸如身份验证详细信息之类的会话状态数据，如果存储在EC2 实例本地，因为开启了粘性会话，会话状态在下次客户端重新连接时也不会丢失，不需要重新登录；但是，如果这个实例出现问题，那么这个用户访问就会被重新分配到其他的实例，这也就意味着这些会话状态数据将丢失。</p>



<p>因此，这不是一个完美的解决方案，但在许多场景上也会经常用到粘性会话这个特性。</p>



<p>您也可以将粘性会话与外部存储一起用于会话状态数据。通常，它们会单独使用，但您可以一起使用它们。</p>



<p>什么场景下需要同时使用两者？比如有一些数据可能会存储在实例本地，而可能有其他的一些数据可能更适合外部存储。</p>



<p>当然，对于外部存储，与其通信肯定会有一点点延迟，因此，您必须考虑这是否适合您的特定场景。</p>



<p>好的，以上就是本课时的内容，希望能给大家带来帮助。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-2-1024x576.jpeg" alt="" class="wp-image-5094" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-2-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-2-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-2-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-2-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-2-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-2-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-2.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>希望此系列教程能为您通过AWS的认证考试带来帮助，如您有任何疑问，请联系我们：</p>



<ul class="wp-block-list">
<li>如果您想获取本课程全部课时，请扫PPT的二维码加入。</li>



<li><a href="http://xn--AWSwww-y50k01m049ahdz76jqs0a27b.iloveaws.cn">AWS爱好者的网址是www.iloveaws.cn</a>，认证视频课程，免费的认证考试仿真题以及认证课程文章，都可以在网站找得到</li>



<li>可以通过扫码加入【AWS爱好者】微信公众号，查看原创的AWS知识点相关文章。</li>



<li>加入【AWS爱好者】微信群，和其他同学一起备考，以及探讨交流AWS相关知识。</li>
</ul>



<p>我们今天的视频课程就到这里，感谢大家的观看，我们下一课程再见。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/5086.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>弹性负载均衡器类型</title>
		<link>https://www.iloveaws.cn/5035.html</link>
					<comments>https://www.iloveaws.cn/5035.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Wed, 08 Feb 2023 02:21:15 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=5035</guid>

					<description><![CDATA[Hello大家好，在本课时，我们将讨论AWS不同类型的弹性负载均衡器,也就是ELB。 对于认证考试您需要了解针对不同的场景使用哪种类型的负载均衡器。]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-1024x576.jpeg" alt="" class="wp-image-5036" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片1.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Hello大家好，在本课时，我们将讨论AWS不同类型的弹性负载均衡器,也就是ELB。 对于认证考试您需要了解针对不同的场景使用哪种类型的负载均衡器。</p>



<h2 class="wp-block-heading">负载均衡器类型</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-1024x576.jpeg" alt="" class="wp-image-5037" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片2.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">应用程序负载均衡器</h3>



<p>第一个是应用程序负载均衡器，也就是ALB，<strong>ALB在请求级别进行监听,它工作在OSI的第7层</strong>。</p>



<p><strong>ALB的监听器支持HTTP或HTTPS协议</strong>，<strong>它支持基于请求的内容进行路由</strong>，基于请求的内容路由是什么意思呢?比如：</p>



<ul class="wp-block-list">
<li>支持基于路径的路由，ALB可以根据请求URL中的路径确定将请求发往什么地方,也就是将请求发往ALB后端的哪个实例组。</li>



<li>支持基于HOST的路由，可以基于域名进行路由。</li>



<li>支持基于查询字符串参数进行路由,检查URL中的查询字符串，然后根据这些信息进行路由。</li>



<li>支持基于源IP地址路由。</li>
</ul>



<p>综上,ALB支持检索上述的这些信息并根据这些信息做出路由的决策,非常的智能。</p>



<p>ALB支持将实例、IP地址、lambda 函数和容器配置为路由目标。</p>



<h3 class="wp-block-heading">网络负载均衡器</h3>



<p>接下来,网络负载均衡器,也就是NLB. ALB和NLB都是AWS新一代的负载均衡器。</p>



<p><strong>NLB运行在连接级别，它工作在OSI的第四层,通过 IP 协议数据来做出路由决策</strong>。</p>



<p><strong>NLB监听TCP、TLS、UDP、TCP_UDP</strong>, <strong>非常适合当您需要超高性能和极低延迟的场景</strong>，或者大规模TLS卸载的场景，什么是TLS卸载呢？TLS卸载就是NLB处理TLS加密连接，加密连接在到达您后端实例前的NLB上做卸载处理。因此，如果您在考试中看到有要求极低延迟的负载均衡器，则很可能是NLB。</p>



<p>针对使用场景，NLB和ALB到底用哪一个，<strong>还有一个关键的点是支持的协议</strong>，<strong>如果需要处理的是TCP、TLS、UDP协议,那么您就需要网络负载均衡器;如果您需要根据HTTP或HTTPS协议的信息进行路由，那么您就需要应用程序负载均衡器</strong>。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-1024x576.jpeg" alt="" class="wp-image-5038" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片3.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">经典负载均衡器</h3>



<p>然后,经典负载均衡器,CLB。在认证考试中关于CLB的考点应该是见不到了，但是有可能在答案选项这类的地方会看到，一般都不会是正确答案。</p>



<p>CLB是上一代的负载均衡器, 在ALB和NLB发布之前，用的会比较多；现在有了新一代的ALB和NLB，<strong>AWS不建议我们在使用CLB了</strong>，有CLB的使用场景可以选择新一代的负载均衡器。</p>



<p>CLB支持4层和7层的路由,但是它不像ALB和NLB支持那么多的特性。之前是用于&nbsp;EC2-Classic 网络。</p>



<h3 class="wp-block-heading">网关负载均衡器</h3>



<p>最后,是网关负载均衡器,GLB，这是AWS相对较新推出的，而且认证考试中会有相关的考点。</p>



<p><strong>GLB用于虚拟设备前端，比如防火墙、入侵检测和防御系统以及深度数据包检测系统</strong>.。与前面的负载均衡器不同，<strong>GLB是工作在OSI的第三层</strong>，监听所有端口的所有数据包。</p>



<p>然后它将进来的流量转发到监听器规则中的指定的目标组，与虚拟设备使用Geneve协议，6081端口交换流量。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-1024x576.jpeg" alt="" class="wp-image-5039" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片4.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">ELB使用场景</h2>



<p>接下来我们比较下ALB和NLB的特性，对于绝大多数需要使用负载均衡器的场景，您只需要在这两个负载均衡器中进行选择。</p>



<p>当然这对于考试来讲理解这些也是非常重要的。</p>



<p>首先要记住,<strong>在OSI模型中，ALB工作在第7层，NLB工作在第4层</strong>。</p>



<p>ALB转发到的目标可以是IP 地址、实例、lambda 函数或容器;而NLB转发的目标可以是一个 IP 地址或EC2实例。</p>



<p><strong>监听支持的协议,ALB支持HTTP、HTTPS以及gRPC;而NLB支持监听TCP、UDP和TLS</strong>。</p>



<p>PrivateLink的支持,ALB是不支持的，而NLB是支持的。PrivateLink是什么后面VPC相关的课时会讨论。</p>



<p><strong>ALB是不支持配置静态IP地址的，而NLB支持静态IP地址</strong>,这意味着NLB的在您子网中的实际节点是具有静态IP地址的，这对于防火墙的白名单配置等等会非常有帮助。</p>



<p><strong>基于HTTP头路由这个特性本身就是7层的，所以ALB是支持的,NLB不支持</strong>。</p>



<p>保持来源的源IP特性，ALB使用x-forwarded-for ,也就是客户端来源的IP地址信息使用x-forwarded-for头转发;NLB转发时会保持源IP地址。</p>



<p>SSL终止,可以在ALB上做；而NLB支持在NLB或目标上做SSL终止。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片5-1024x576.jpeg" alt="" class="wp-image-5040" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片5-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片5-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片5-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片5-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片5-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片5-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片5.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>本课时的最后,我们讨论ELB的使用场景。</p>



<p>当您的WEB应用程序需要7层路由特性微服务架构时,比如docker容器,或者需要配置lambda为目标时,使用ALB。</p>



<p>当您的应用程序是TCP和UDP的协议，需要超低的延迟,需要静态IP地址或者需要与VPC终端节点一起使用时需要使用NLB。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片6-1024x576.jpeg" alt="" class="wp-image-5041" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片6-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片6-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片6-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片6-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片6-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片6-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片6.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>最后，对于网关负载均衡器，您可以<strong>将其用于负载均衡虚拟设备,比如:入侵检测系统、入侵防御系统、下一代防火墙、WEB应用防火墙和分布式拒绝服务保护系统</strong>。</p>



<p>它还与auto scaling组进行了集成以获得弹性,支持网络监控和记录分析。</p>



<p>好的，以上就是本课时的内容,感谢大家的观看，希望本课时能够给大家带来帮助。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2023/02/幻灯片7-1024x576.jpeg" alt="" class="wp-image-5042" srcset="https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片7-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片7-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片7-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片7-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片7-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片7-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2023/02/幻灯片7.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>希望此系列教程能为您通过AWS的认证考试带来帮助，如您有任何疑问，请联系我们：</p>



<ul class="wp-block-list">
<li>如果您想获取本课程全部课时，请扫PPT的二维码加入。</li>



<li><a href="http://xn--AWSwww-y50k01m049ahdz76jqs0a27b.iloveaws.cn">AWS爱好者的网址是www.iloveaws.cn</a>，认证视频课程，免费的认证考试仿真题以及认证课程文章，都可以在网站找得到</li>



<li>可以通过扫码加入【AWS爱好者】微信公众号，查看原创的AWS知识点相关文章。</li>



<li>加入【AWS爱好者】微信群，和其他同学一起备考，以及探讨交流AWS相关知识。</li>
</ul>



<p>我们今天的视频课程就到这里，感谢大家的观看，我们下一课程再见。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/5035.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ECS-弹性容器服务 &#8211; Part 2</title>
		<link>https://www.iloveaws.cn/4859.html</link>
					<comments>https://www.iloveaws.cn/4859.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Mon, 26 Dec 2022 06:18:35 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[通过AWS SAP认证]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=4859</guid>

					<description><![CDATA[Hello大家好，我们今天继续ECS的内容。]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.001-1024x576.jpeg" alt="" class="wp-image-4860" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.001-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.001-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.001-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.001-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.001-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.001-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.001.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Hello大家好，我们今天继续ECS的内容。</p>



<h2 class="wp-block-heading">Service load balancing</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.002-1024x576.jpeg" alt="" class="wp-image-4861" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.002-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.002-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.002-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.002-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.002-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.002-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.002.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>之前的课时讨论过，在ECS集群上创建的ECS服务支持AWS负载均衡器，而应用程序负载均衡器和ECS服务通常是一个很好的搭配，因为<strong>应用程序负载均衡器很好的支持了容器的动态主机端口映射。</strong></p>



<p>有了这个特性，ECS集群的单台EC2实例上，就可以运行同一个ECS服务的多个任务。然后当您将ALB的目标组与您的ECS服务相关联后，ALB可以在多个任务之间进行路由流量、负载均衡，而且最最重要的是，<strong>ECS会自动在ALB目标组中注册或者注销容器。</strong></p>



<p>我举个例子帮助大家理解：</p>



<p>比如这是我们的ECS集群的其中的一个EC2实例，我们上节课讲过，这是用于运行ECS任务或者服务的对吧？</p>



<p>那现在假设要在这台EC2上运行4个Nginx容器，并对外提供服务，所以需要创建一个ECS服务，服务及任务定义的内容把容器的相关信息和数量都配置好。</p>



<p>因为是在单台EC2上运行，端口不能冲突，Nginx的容器要使用动态端口映射，所以假设我们这4个Nginx以及对应的端口分别为：</p>



<ul class="wp-block-list"><li>端口8081的Nginx的容器,</li><li>端口8082的Nginx的容器,</li><li>以及端口8034和8084这4个容器。</li></ul>



<p>所以，目前的情况是，单台EC2实例上，运行了4个Nginx容器，使用动态端口映射对外开了4个不同的端口。那这种情况下，我们如何对外提供Nginx服务呢？</p>



<p>在这种场景就可以创建一个应用程序负载均衡器和目标组，使其对外提供http或者https的访问，然后在创建这个Nginx的ECS服务时，在服务定义中指定到这个目标组。</p>



<p>这样的话，启动任务时，比如这4个Nginx容器，这些容器和端口组合会注册到这个目标组，并且外面访问的流量会从负载均衡器路由到这4个容器，而且后面新增或者停止Nginx容器时，会自动在ALB目标组中注册或者注销容器，都是自动完成的，而不需要人为干预。</p>



<p>好的，以上，**通过ALB和ECS服务，当同一台EC2实例上运行多个相同的容器提供服务时，外部访问可以通过ALB路由流量到这些容器的动态端口，实现流量的负载均衡。**这样的话：</p>



<ul class="wp-block-list"><li>即使只有单台EC2实例，也能够最大程度的增加应用的弹性；</li><li>通过增加运行的容器数量，能够最大化的利用EC2的资源；</li><li>以及当需要更新应用时，可以采用滚动升级的方式，而不会影响应用对外提供服务。</li></ul>



<h2 class="wp-block-heading">ECS安全相关和网络模式</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.003-1024x576.jpeg" alt="" class="wp-image-4862" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.003-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.003-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.003-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.003-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.003-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.003-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.003.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>好的，接下来我们讨论ECS的安全相关以及支持的网络模式的内容。</p>



<p><strong>IAM安全性</strong></p>



<p>首先，组成ECS集群的EC2实例，需要为其分配相应的IAM角色和权限。**因为EC2上运行的容器Agent要调用ECS的API，**必须要有相应的权限才能正常工作，这个是EC2实例级别的IAM角色。</p>



<p>然后，还会接触到一个IAM角色，是ECS任务的IAM角色。就是在创建ECS任务的时候，可以为这个任务创建或分配一个任务的IAM角色，从而指定任务中的容器可以使用的IAM角色。</p>



<p>注意这个任务IAM角色是基于ECS任务的。这样做的好处是，可以为不同的ECS任务指定不同的IAM角色，从而为不同的任务分配不同的权限。比如任务1的容器需要访问RDS，任务2的容器需要访问S3服务，就可以分别为两个任务分配不同的IAM角色，更精细的分配权限，实现更高的安全级别。</p>



<p>所以，**这里共有两个级别的IAM角色，**第一个是组成ECS集群的EC2实例的角色，是EC2实例级别的角色；另一个是每一个ECS任务都可以指定任务的IAM角色，是ECS任务级别的角色。</p>



<p>以上是IAM角色相关安全性。</p>



<p><strong>敏感信息安全性</strong></p>



<p>对于容器内需要用的一些配置和一些敏感的信息，使用ECS可以通过将敏感的信息或者配置存储在<strong>AWS Secrets Manager或AWS Systems Manager参数存储</strong>中，然后在容器定义中引用它们，从而将敏感数据作为环境变量注入到容器中。这样就可以避免将容器中使用的机密的信息明文定义在任务定义中。通过这种方式提升了敏感信息的安全。</p>



<p><strong>任务的网络模式</strong></p>



<p>接下来我们讨论ECS任务的网络模式，运行在ECS集群上的ECS任务容器之间联网的方式，取决于您在任务定义中定义的网络模式，有以下几种网络模式：</p>



<ul class="wp-block-list"><li>bridge桥接模式，是使用Docker的内置虚拟网络启动您的容器。</li><li>host主机模式，容器将绕过Docker的内置虚拟网络，并将容器端口直接映射到运行该任务的EC2实例的网络。因此，使用端口映射时，您无法在单台 EC2实例上运行同一任务的多个实例化。</li><li>none，这个模式任务没有外部网络连接，端口映射也是无效的。一般只用于不需要网络的环境的测试用途。</li><li>awsvpc模式，这个模式比较特别：<ul><li>它为每一个任务都分配了自己的弹性网络接口（ENI）和私有IPv4地址。这为ECS任务提供了和EC2实例相同的网络属性。</li><li>使用 awsvpc网络模式可简化容器网络连接。因为每个任务都有其自己的弹性网络接口（ENI），可以将安全组应用到ENI，为任务提供了更高的安全性。还可以为每个ENI创建VPC流日志以及利用其他的EC2网络功能，从而可以监视往返于任务的流量。</li><li>还有一点要注意，如果使用的Fargate，那么在默认情况下，分别会为每个ECS任务都提供一个具有私有IP地址的弹性网络接口（ENI）。</li></ul></li></ul>



<h2 class="wp-block-heading">ECS服务的弹性伸缩</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.004-1024x576.jpeg" alt="" class="wp-image-4863" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.004-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.004-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.004-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.004-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.004-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.004-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.004.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>ECS服务的弹性伸缩是指可根据配置的指标自动增加或减少ECS服务中的任务数量。</p>



<p>ECS会发布ECS服务的平均CPU和内存使用量的CloudWatch指标，您可以使用这些或其他CloudWatch指标配置弹性伸缩，如添加更多任务以在高峰时间处理更多的需求；或者在闲时运行更少的任务以降低利用率节省成本。</p>



<p>服务的弹性伸缩支持以下三种类型：</p>



<ul class="wp-block-list"><li>目标跟踪扩展策略，是根据配置的特定指标的目标值，增加或减少服务运行的任务数量。比如我们可以配置平均CPU使用率为70%，然后任务就会自动增加或减少，保持在配置的这个目标值。</li><li>还可以基于CloudWatch警报定义分步扩展策略，</li><li>以及定义基于日期和时间的计划的扩展。</li></ul>



<p>可以看到这和我们之前讲的EC2的autoscaling的内容基本差不多，但是一定要注意的是，ECS服务的弹性伸缩，是ECS任务级别的，扩展和缩减的是ECS的任务数量；而之前课时讨论的EC2的弹性伸缩，是基于EC2实例的，是实例级别的弹性伸缩。</p>



<p>也就是说，如果您使用的是ECS是基于EC2集群，当需要弹性伸缩时，可能除了要考虑ECS服务的弹性伸缩，还要考虑组成集群的EC2实例的弹性伸缩，这样才能够增加更多的EC2实例，并在上面运行新的 任务。</p>



<p>在这种情况下更能体现出Fargate的优势。因为如果使用Fargate的话，弹性伸缩的配置就会比较容易。因为是无服务器架构，所以我们不需要关心后端的基础架构，只要配置好ECS服务的弹性伸缩的配置，剩下的基础设施部分由AWS负责来搞定。</p>



<h2 class="wp-block-heading">ECS与Spot实例</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.005-1024x576.jpeg" alt="" class="wp-image-4864" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.005-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.005-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.005-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.005-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.005-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.005-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/62-ECS-弹性容器服务-Part-2.005.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>好的，我们继续。</p>



<p>最后，我们要了解，<strong>ECS集群是可以使用Spot实例的。</strong></p>



<p>我们先看下由EC2实例组成的ECS集群，这些EC2实例是可以由请求的Spot实例或者由ASG管理的Spot队列组成。</p>



<p>当后续Spot实例不在可用时，如果实例上启用了 ECS Spot实例的排空（DRAINING） 功能，则ECS会收到Spot实例中断通知，并将该实例置于 DRAINING状态，然后ECS将不会在这台实例上运行新的任务，且正在运行在该Spot实例的任务就会停止，并在集群中其他实例上启动。</p>



<p><strong>使用Spot实例会节省成本，但同时可能随时会中断，而影响提供服务的可靠性。</strong></p>



<p>那对于Fargate集群，目前同样支持使用Spot实例，可以将一部分任务跑在按需，也就是普通模式，满足工作负载的基准要求；然后将一些任务跑在Fargate Spot上以节省成本。当然要注意Spot同样可能随时会被AWS回收。</p>



<p>不论是普通模式还是Spot模式，因为Fargate是无服务器架构，基于定义进行扩展都是非常的容易的。</p>



<p>好的，经过我们之前和今天的讨论，Spot实例的特点想必大家已经很熟悉了。</p>



<p>虽然ECS集群可以使用Spot实例来节省成本，但是我们同样也要了解Spot可能会随时被中断的情况，可能会影响我们提供的服务的可靠性，所以要提前做好中断处理。</p>



<p>最后，如果使用的是由EC2实例组成的ECS集群，<strong>且您计划要使用相当长时间，比如1至3年，同样可以使用预留实例来节省成本。</strong></p>



<p>好的，以上就是我们今天课时的内容，我们讨论了ECS的内容，希望能够给大家带来帮助。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/71-Amazon-ElastiCache.001-2-1024x576.jpeg" alt="" class="wp-image-4865" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/71-Amazon-ElastiCache.001-2-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/71-Amazon-ElastiCache.001-2-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/71-Amazon-ElastiCache.001-2-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/71-Amazon-ElastiCache.001-2-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/71-Amazon-ElastiCache.001-2-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/71-Amazon-ElastiCache.001-2-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/71-Amazon-ElastiCache.001-2.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>希望此系列教程能为您通过 AWS解决方案架构师认证 Professional 认证考试带来帮助，如您有任何疑问，请联系我们：</p>



<ul class="wp-block-list"><li>如果您想获取本课程全部课时，请扫PPT的二维码加入。</li><li><a href="http://xn--AWSwww-y50k01m049ahdz76jqs0a27b.iloveaws.cn">AWS爱好者的网址是www.iloveaws.cn</a>，认证视频课程，免费的认证考试仿真题以及认证课程文章，都可以在网站找得到</li><li>可以通过扫码加入【AWS爱好者】微信公众号，查看原创的AWS知识点相关文章。</li><li>加入【AWS爱好者】微信群，和其他同学一起备考，以及探讨交流AWS相关知识。</li></ul>



<p>我们今天的视频课程就到这里，感谢大家的观看，我们下一课程再见。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/4859.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ECS-弹性容器服务 &#8211; Part 1</title>
		<link>https://www.iloveaws.cn/4759.html</link>
					<comments>https://www.iloveaws.cn/4759.html#respond</comments>
		
		<dc:creator><![CDATA[沉默恶魔]]></dc:creator>
		<pubDate>Mon, 19 Dec 2022 08:48:59 +0000</pubDate>
				<category><![CDATA[03-计算与负载均衡]]></category>
		<category><![CDATA[通过AWS SAP认证]]></category>
		<category><![CDATA[AWS SAP认证]]></category>
		<guid isPermaLink="false">https://www.iloveaws.cn/?p=4759</guid>

					<description><![CDATA[Hello大家好，我们今天的课时内容是ECS-AWS的弹性容器服务]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.001-1024x576.jpeg" alt="" class="wp-image-4760" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.001-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.001-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.001-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.001-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.001-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.001-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.001.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Hello大家好，我们今天的课时内容是ECS-AWS的弹性容器服务。</p>



<h2 class="wp-block-heading">ECS-AWS的弹性容器服务</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.002-1024x576.jpeg" alt="" class="wp-image-4761" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.002-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.002-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.002-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.002-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.002-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.002-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.002.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>ECS是高度可扩展的、快速的容器管理和编排服务。 使用ECS，能够将您的Docker容器运行在AWS EC2或者 Fargate管理的无服务器架构上。</p>



<p>将容器运行在AWS，会涉及很多到一些相关的内容，如：</p>



<ul class="wp-block-list"><li>ECS的EC2启动类型，可以将ECS任务运行在用户自主管理的EC2实例上；</li><li>Fargate启动类型，可以将ECS任务运行在Fargate上，将容器运行在ECS管理的无服务器基础架构上。</li><li>EKS，可以将容器运行在EKS，EKS是AWS提供的Kubernetes托管服务。</li><li>ECR，AWS的Docker镜像仓库的托管服务。</li></ul>



<p>以上涉及的内容比较多，对于SAP认证考试，会有一些使用ECS场景，如和其他的服务作为答案让您判断哪个是正确或最佳实践等等。</p>



<p>最后，ECS 非常适合于微服务架构和批处理作业。</p>



<h2 class="wp-block-heading">什么是Docker?</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.003-1024x576.jpeg" alt="" class="wp-image-4762" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.003-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.003-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.003-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.003-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.003-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.003-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.003.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>ECS是Docker容器管理和编排的工具，那接下来我们首先简单介绍下什么是Docker。</p>



<p>Docker 是一个开源的应用容器引擎，够让开发者打包他们的应用以及依赖包到一个可移植的镜像中，然后在发布到任何流行的且安装了Docker运行环境的 Linux或Windows 机器上。容器技术通过将应用程序和其运行环境、依赖关系等打包在一起，使得我们的应用程序可以以相同的运行环境，运行在任何的服务器上。</p>



<p>容器之间相互是隔离的，相互之间不会互相影响。</p>



<p>您还可以控制分配给单个容器的资源（包括CPU、内存和磁盘空间）。一个容器的应用出问题将不会使用你全部的可用资源，从而影响其他容器。</p>



<p>您还可以配置Docker容器的网络模式</p>



<p>与虚拟机相比，Docker容器的启动速度更快，资源利用率更高，性能开销更小，这也是为什么Docker容器技术这么受欢迎，现在很多组织都在使用容器来运行他们的业务。</p>



<p>而本课时讨论的ECS服务，就是在AWS上运行Docker容器的一个非常棒的平台，它是一个高度可用且可扩展的服务，可以通过ECS对运行的容器进行配置和管理。比如使用ECS能够快速扩展或者缩减您运行容器的数量，这个快速是秒级别，而虚拟机可能是分钟级别。</p>



<h2 class="wp-block-heading">ECS常见的使用场景</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.004-1024x576.jpeg" alt="" class="wp-image-4763" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.004-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.004-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.004-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.004-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.004-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.004-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.004.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>那ECS有哪些常见的使用场景呢？</p>



<p>首先，<strong>它非常适合于运行微服务架构</strong>。微服务是通过一种软件体系结构方法构建的，该方法将复杂的应用程序分解为较小的独立服务，而我们都知道容器是运行小型，分离服务的最佳选择。</p>



<ul class="wp-block-list"><li>因为都是较小的独立的服务，那就能够将多个容器运行在同一台服务器上。</li><li>如果微服务的应用负载会随着时间变化的话，ECS也支持配置根据负载变化进行横向伸缩。</li><li>ECS通过集成应用程序负载均衡器，为微服务的架构提供了大多数分布式系统的关键功能，服务发现。</li><li>也可以基于容器的微服务架构，轻松构建CI/CD过程，如监控代码库，从该来源构建Docker镜像，然后将镜像推送到ECR，最后更新ECS服务的应用程序。</li></ul>



<p>通过以上的这些提供的功能和特性，也让ECS成为了一个运行微服务的很好的一个平台之一。</p>



<p>ECS除了适合运行微服务架构，<strong>也非常适合运行一些批处理作业</strong>。</p>



<ul class="wp-block-list"><li>批处理作业通常是短暂的且并行的工作。您可以将批处理应用程序打包到Docker映像中，然后部署到 ECS任务中运行。</li><li>ECS集群可以将容器运行在按需、RI、以及Spot实例上，具体需要根据业务场景来选择。比如可以将一些如图形处理，数据处理等临时性的任务跑在Spot实例上达到更高的成本效益。</li></ul>



<p><strong>最后一个常见的ECS用例是迁移应用程序到云端</strong>。通过将运行在本地数据中心的旧的应用程序容器化，然后就可以直接迁移应用程序至ECS。</p>



<h2 class="wp-block-heading">ECS的核心概念</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.005-1024x576.jpeg" alt="" class="wp-image-4764" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.005-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.005-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.005-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.005-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.005-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.005-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.005.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>接下来我们讨论下ECS包括的一些核心的概念。</p>



<p>首先，什么是ECS集群？<strong>ECS集群是ECS任务或服务的逻辑分组</strong>，ECS任务和服务我们一会讨论。目前可以把ECS集群理解成，您可以向ECS集群注册一个或者多个EC2实例，注册的实例组成ECS集群，然后可在这些实例上运行容器（任务）。当然也可以使用Fargate提供的无服务器架构来运行容器（任务），这个我们后面讨论。</p>



<p>我们看下右侧这个图，有两台EC2实例注册到了ECS集群，就可以在EC2实例上运行容器（任务）</p>



<p>另外，ECS集群的每一个EC2实例上，都会运行一个容器的agent，也就是容器代理。<strong>代理将实例当前运行的任务信息以及资源利用率等信息发送到ECS服务</strong>；以及执行ECS服务发送的启动和停止任务的请求。</p>



<p>然后前面我们说ECS集群是ECS任务或服务的逻辑分组，那什么是ECS任务？如果要在ECS集群运行容器，<strong>您的容器首先要在”任务定义”中定义</strong>。</p>



<p>”任务定义“可以是一个JSON格式的文本，描述了构成您的应用程序的一个或多个容器（最多10个）。通过“任务定义”为您的容器的应用程序指定各种参数，比如为应用程序指定容器的信息，如容器使用的镜像，内存限制，端口映射等。然后就可以在ECS集群中运行任务。</p>



<p><strong>所以要在集群运行容器就要先进行“任务定义”，然后选择“任务定义”在ECS集群上运行任务，从而运行您配置的容器。</strong></p>



<p>所以“任务定义”是用于运行任务，以及 （注意）还用于创建ECS服务的。</p>



<p>什么是ECS服务呢？您可以<strong>将ECS任务理解成那种单一的，一次性执行的工作；而ECS服务能够指定要在集群中运行并保持多少个“任务定义”副本。</strong></p>



<p>所以像一些需要持续运行的业务或者服务，应该配置成ECS服务运行在ECS集群，这样的话任何任务失败或者终止，调度程序将会启动任务的另一个副本来替换它，能够维持您配置的指定的数量。</p>



<p>好的，以上是ECS的核心概念，我们继续。</p>



<h2 class="wp-block-heading">Fargate</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.006-1024x576.jpeg" alt="" class="wp-image-4765" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.006-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.006-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.006-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.006-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.006-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.006-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/61-ECS-弹性容器服务-Part-1.006.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>前面我们讲了可以向ECS集群注册一个或者多个EC2实例，组成ECS集群。然后可在这些集群的EC2实例上运行任务或者服务。</p>



<p>这种方式的话是要自行创建和维护EC2实例的，也就是说ECS集群如果需要5台实例，您就要创建5台EC2实例。而且如果后续您的服务的访问量上来了，您需要扩展服务时，那就需要向ECS集群添加更多的EC2实例从而增加集群的计算能力。</p>



<p>在这种情况下，我们就不得不管理越来越多的基础设施，管理任务越来越多，如实例的打安全补丁等。</p>



<p>那除此之外，在ECS上运行容器还有另外一种方式，<strong>不用在自行注册EC2实例组成ECS集群运行服务，而是使用Fargate提供的无服务器架构来运行任务或者服务。</strong></p>



<p>Fargate非常棒，使用Fargate我们不在需要创建EC2实例，也不用在管理集群的EC2实例，**由AWS来负责管理集群的基础设施，**我们甚至看不到这些基础设施。</p>



<p>我们要做的只要创建“任务定义”，然后选择FARGATE启动类型，任务就会在AWS负责管理的基础设施上运行，这些基础设施对我们是不可见的，由AWS负责管理。</p>



<p>这样的话，在后面如果需要扩展规模也会非常的容易，只需要增加任务数就搞定了。然后AWS会在其管理的基础设施上运行新的规模数量，我们不需要在新增EC2注册，在管理EC2，一切都由AWS负责搞定和管理，这就是Fargate无服务器架构的优势。</p>



<p>所以，在组织要使用ECS时，可以优先评估Fargate是否能够满足需求。</p>



<p>好的，以上就是我们今天课时的内容，我们ECS的内容的第一部分，希望能够给大家带来帮助。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://resource.iloveaws.cn/wp-content/uploads/2022/12/幻灯片9-1024x576.jpeg" alt="" class="wp-image-4768" srcset="https://www.iloveaws.cn/wp-content/uploads/2022/12/幻灯片9-1024x576.jpeg 1024w, https://www.iloveaws.cn/wp-content/uploads/2022/12/幻灯片9-460x259.jpeg 460w, https://www.iloveaws.cn/wp-content/uploads/2022/12/幻灯片9-768x432.jpeg 768w, https://www.iloveaws.cn/wp-content/uploads/2022/12/幻灯片9-1536x864.jpeg 1536w, https://www.iloveaws.cn/wp-content/uploads/2022/12/幻灯片9-120x68.jpeg 120w, https://www.iloveaws.cn/wp-content/uploads/2022/12/幻灯片9-310x174.jpeg 310w, https://www.iloveaws.cn/wp-content/uploads/2022/12/幻灯片9.jpeg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>希望此系列教程能为您通过 AWS解决方案架构师认证 Professional 认证考试带来帮助，如您有任何疑问，请联系我们：</p>



<ul class="wp-block-list"><li>如果您想获取本课程全部课时，请扫PPT的二维码加入。</li><li><a href="http://xn--AWSwww-y50k01m049ahdz76jqs0a27b.iloveaws.cn">AWS爱好者的网址是www.iloveaws.cn</a>，认证视频课程，免费的认证考试仿真题以及认证课程文章，都可以在网站找得到</li><li>可以通过扫码加入【AWS爱好者】微信公众号，查看原创的AWS知识点相关文章。</li><li>加入【AWS爱好者】微信群，和其他同学一起备考，以及探讨交流AWS相关知识。</li></ul>



<p>我们今天的视频课程就到这里，感谢大家的观看，我们下一课程再见。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iloveaws.cn/4759.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
