<?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>Versioning &#8211; Few Steps &#8211; ก้าวสั้นๆ แต่ไปเรื่อยๆ</title>
	<atom:link href="https://myifew.com/tag/versioning/feed/" rel="self" type="application/rss+xml" />
	<link>https://myifew.com</link>
	<description></description>
	<lastBuildDate>Wed, 20 Feb 2019 12:17:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://myifew.com/wp-content/uploads/2018/07/cropped-logo6-ts-32x32.png</url>
	<title>Versioning &#8211; Few Steps &#8211; ก้าวสั้นๆ แต่ไปเรื่อยๆ</title>
	<link>https://myifew.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>4 วิธีจัดการ Versioning และ Environment ของ AWS Lambda Function โดยไม่ต้องแก้ไขโค้ด</title>
		<link>https://myifew.com/5231/4-ways-to-manage-aws-lambda-function-version-and-environment/</link>
					<comments>https://myifew.com/5231/4-ways-to-manage-aws-lambda-function-version-and-environment/#respond</comments>
		
		<dc:creator><![CDATA[iFew]]></dc:creator>
		<pubDate>Wed, 20 Feb 2019 04:23:29 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[.Net Core]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[AWS Lambda]]></category>
		<category><![CDATA[Serverless]]></category>
		<category><![CDATA[Versioning]]></category>
		<guid isPermaLink="false">https://myifew.com/?p=5231</guid>

					<description><![CDATA[เป็นเรื่องสำคัญที่เรามักมองข้ามไป ว่าจะจัดการ Lambda Function อย่างไรให้ใช้ได้กับ Environment ต่างๆ เช่น Development, UAT, Production และต้องไม่กระทบกับการใช้งานของผู้ใช้ด้วย ดังนั้น สิ่งที่ต้องดูต่อ คือ เราต้องกำหนด Lambda Function&#8230;]]></description>
										<content:encoded><![CDATA[
<p>เป็นเรื่องสำคัญที่เรามักมองข้ามไป ว่าจะจัดการ Lambda Function อย่างไรให้ใช้ได้กับ Environment ต่างๆ เช่น Development, UAT, Production และต้องไม่กระทบกับการใช้งานของผู้ใช้ด้วย ดังนั้น สิ่งที่ต้องดูต่อ คือ เราต้องกำหนด Lambda Function Version ให้แต่ละ Environment ด้วยใช่หรือไม่?</p>



<p>จากที่ผมลองเล่นดู พบอยู่ 4 วิธี ที่กำลังจะเขียนแชร์ในบล็อกนี้เอง มันมีทั้งข้อดีและข้อเสีย ซึ่งผู้อ่านคงต้องนำไปพิจารณาและตัดสินใจใช้ตามความเหมาะสมกันเอง</p>



<span id="more-5231"></span>



<p class="has-background has-very-light-gray-background-color"><strong>คำแนะนำ: วิธีการที่ผมเสนอในบล็อกนี้ จะไม่ได้พูดถึงวิธีการที่ต้องมีการแก้โค้ดนะครับ รวมไปถึง ผู้อ่านควรต้องเข้าใจเรื่อง AWS API Gateway และ AWS Lambda อยู่แล้ว</strong></p>



<h2 class="wp-block-heading">1. ปรับ Version ที่ Integration Request ใน API Gateway </h2>



<p><strong>วิธีนี้เหมาะสำหรับ</strong></p>



<ul class="wp-block-list"><li>ผู้ใช้ API Gateway เป็น Event Trigger เรียกใช้งาน Lambda Function</li><li>มี Lambda Function จำนวนน้อย</li><li>ทำไว้ใช้บน Test Environment เท่านั้น</li><li>ไม่ได้ต้องการทำ Version ให้กับ Lambda Function ทุกตัว </li><li>ถ้าใช้ AWS API Gateway วิธีการนี้ จะสามารถใช้งานสิ่งที่เราปรับเปลี่ยนได้ก็ต่อเมื่อมีการกดปุ่ม Deploy API</li></ul>



<p><strong>ปัญหาที่พบในวิธีนี้</strong></p>



<ul class="wp-block-list"><li>ถ้าไม่ใช้ API Gateway จะทำแบบนี้ไม่ได้</li><li>ถ้ามี Lambda Function จำนวนมากๆ ต้องไล่เปลี่ยนทีละตัว ก็จะเป็นงานหนักมาก</li></ul>



<p>วิธีนี้เป็นวิธี basic ที่สุดสำหรับ ผู้ใช้ API Gateway เป็น Event Trigger เรียกใช้งาน Lambda Function ซึ่งตอนผมลองเล่นแรกๆก็ทำแบบนี้แหละ</p>



<p>ในตัวอย่าง บนหน้าของ AWS API Gateway เมื่อเราสร้าง Resource และ Method แล้ว จะมีส่วนของ Integration Request</p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="1200" height="565" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-1-1200x565.png" alt="" class="wp-image-5234" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-1-1200x565.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-1-1024x482.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-1-768x362.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-1-700x330.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-1-600x283.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-1.png 2870w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>



<p>ในหน้าของ Integration Request เราสามารถแก้ไขการเรียกใช้งาน Lambda Function โดยระบุ Version ได้จากที่นี่เลย</p>



<figure class="wp-block-image"><img decoding="async" width="1200" height="797" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-2-1200x797.png" alt="" class="wp-image-5235" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-2-1200x797.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-2-1024x680.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-2-768x510.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-2-700x465.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-2-600x398.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-2.png 1684w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="wp-block-image"><img decoding="async" width="1200" height="294" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-3-1200x294.png" alt="" class="wp-image-5236" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-3-1200x294.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-3-1024x251.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-3-768x188.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-3-700x171.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-3-600x147.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-pointer-3.png 1796w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>



<h2 class="wp-block-heading">2. สร้าง Version URL ใน API Gateway</h2>



<p><strong>วิธีนี้เหมาะสำหรับ</strong></p>



<ul class="wp-block-list"><li>ผู้ใช้ API Gateway เป็น Event Trigger เรียกใช้งาน Lambda Function</li><li>ต้องการให้ผู้ใช้ API เดิมยังใช้งานได้ตามปกติ และผู้ใช้ใหม่ก็สามารถใช้ API ใหม่ได้ (หรือจะกำหนด Permission ของกลุ่มผู้ใช้เพิ่มด้วยก็ได้)</li><li>มี Lambda Function จำนวนไม่มากนัก</li><li>สามารถ Custom Lambda ในแต่ละ URL Version ได้ โดยไม่กระทบกับ URL Version อื่น</li><li>ถ้าใช้ AWS API Gateway วิธีการนี้ จะสามารถใช้งานสิ่งที่เราปรับเปลี่ยนได้ก็ต่อเมื่อมีการกดปุ่ม Deploy API</li></ul>



<p><strong>ปัญหาที่พบในวิธีนี้</strong></p>



<ul class="wp-block-list"><li>ถ้าไม่ใช้ API Gateway หรือ Middleware ที่สามารถจัดการ Router ได้ จะทำแบบนี้ไม่ได้</li><li>จะงานหนักทันที ถ้ามี Lambda Function จำนวนมากๆ และต้องสร้าง URL Gateway ใหม่อีกชุดหนึ่ง และกำหนด Version ใหม่ (แต่ใช้ Tools จำพวก <a rel="noreferrer noopener" aria-label="Infrastructure as code (opens in a new tab)" href="https://en.wikipedia.org/wiki/Infrastructure_as_code" target="_blank">Infrastructure as code</a> ช่วยปั๊มได้)</li></ul>



<p>วิธีนี้เพิ่มมิติของการทำ Versioning โดยการกำหนด URL Version ไปด้วย ทำให้แยกกลุ่มของผู้ใช้งานได้ โดยไม่กระทบกัน</p>



<p>มีหลายแบรนด์ดังที่ใช้วิธีการแบบนี้ เช่น</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1200" height="981" src="https://myifew.com/wp-content/uploads/2019/02/Screen-Shot-2562-02-20-at-12.25.05-1200x981.png" alt="" class="wp-image-5237" srcset="https://myifew.com/wp-content/uploads/2019/02/Screen-Shot-2562-02-20-at-12.25.05-1200x981.png 1200w, https://myifew.com/wp-content/uploads/2019/02/Screen-Shot-2562-02-20-at-12.25.05-1024x837.png 1024w, https://myifew.com/wp-content/uploads/2019/02/Screen-Shot-2562-02-20-at-12.25.05-768x628.png 768w, https://myifew.com/wp-content/uploads/2019/02/Screen-Shot-2562-02-20-at-12.25.05-700x572.png 700w, https://myifew.com/wp-content/uploads/2019/02/Screen-Shot-2562-02-20-at-12.25.05-600x491.png 600w, https://myifew.com/wp-content/uploads/2019/02/Screen-Shot-2562-02-20-at-12.25.05.png 1416w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /><figcaption>อ้างอิง: https://mathieu.fenniak.net/aint-nobody-got-time-for-that-api-versioning/</figcaption></figure>



<p>ในตัวอย่าง บนหน้าของ AWS API Gateway คือให้เราสร้าง Resource เป็น Version ไว้เลย</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1200" height="566" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-1-1200x566.png" alt="" class="wp-image-5238" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-1-1200x566.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-1-1024x483.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-1-768x362.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-1-700x330.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-1-600x283.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-1.png 2874w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<p>จากนั้นในแต่ละ Method ใน Resource Version ต่างๆ ให้เรากำหนด Version ใน Integration Request เหมือนเดิมแบบวิธีแรก</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1200" height="565" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-2-1200x565.png" alt="" class="wp-image-5239" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-2-1200x565.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-2-1024x482.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-2-768x362.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-2-700x330.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-2-600x282.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-gw-url-2.png 2872w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<h2 class="wp-block-heading">3. สร้าง Version และกำหนด Alias ให้กับ Lambda Function  </h2>



<p><strong>วิธีนี้เหมาะสำหรับ</strong></p>



<ul class="wp-block-list"><li>ทุกคนที่จะนำ Lambda Function ไปใช้งาน</li><li>มี Lambda Function จำนวนน้อยจนถึงมากๆ </li><li>ใช้ได้กับทุก Environment ไม่ว่าจะ Test หรือ Production</li><li>มีการกำหนด Version ให้กับ Lambda Function อยู่เสมอ</li></ul>



<p><strong>ปัญหาที่พบในวิธีนี้</strong></p>



<ul class="wp-block-list"><li>ต้องระบุ Description ใน Version ให้ดี เพื่อที่จะได้รู้ว่า แต่ละตัว มีการปรับเปลี่ยนอะไร</li><li>การเปลี่ยน Verion ใน Alias Name จะทำให้การทำงานไปใช้ Lambda Version นั้นทันที ไม่หมือนกับตอนทำกับ API Gateway ที่ทดสอบก่อนได้ แล้วค่อยกดปุ่ม Deploy API (แต่ทั้งนีก็สามารถ Rollback ได้ทันที)</li></ul>



<p>เป็นวิธีที่ซับซ้อนขึ้นอีกนิดจากข้างต้น แต่มีประสิทธิภาพ และทาง Amazon เองก็แนะนำให้ทำแบบนี้ (<a rel="noreferrer noopener" aria-label="อ้างอิง (opens in a new tab)" href="https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html" target="_blank">AWS Lambda Function Versioning and Aliases</a>)</p>



<p>โปรแกรมเมอร์เองจะต้องมีการกำหนดเวอร์ชั่นภายในทีมให้ชัดเจนว่า เมื่อไรถึงจะต้อง publish version ออกมา และนำไปลิงค์เข้าใน Alias Name เพราะการกำหนดแบบนี้จะทำให้การทำงานของ lambda เปลี่ยนทันที ไม่มีการผ่าน Deploy API</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="377" height="360" src="https://myifew.com/wp-content/uploads/2019/02/alias_intro_2_10.png" alt="" class="wp-image-5249"/><figcaption>ตัวอย่างมี 2 Environment และเมื่อทำบน Development Env. เสร็จ ต้องการนำไปใช้บน Prodution Env.<br>อ้างอิง https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html</figcaption></figure></div>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="564" height="363" src="https://myifew.com/wp-content/uploads/2019/02/alias_scenario_2_30.png" alt="" class="wp-image-5252"/><figcaption>ตัวอย่างมี 3 Environment และปรับให้มีการใช้ Lambda ร่วมกัน<br>อ้างอิง https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html</figcaption></figure></div>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="569" height="358" src="https://myifew.com/wp-content/uploads/2019/02/alias_scenario_2_40.png" alt="" class="wp-image-5253"/><figcaption>ตัวอย่างมี 3 Environment และมีการใช้ Lambda Version ของใครของมัน (การทำงานจริง น่าจะเป็นภาพนี้)<br>อ้างอิง https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html</figcaption></figure>



<p>วิธีการทำ คือ เมื่อเรามี Version ของ Lambda อยู่แล้ว ให้ทำการสร้าง Alias Name และทำการเชื่อมกันว่า ชื่อ Alias ไหน ชี้ไป Version ไหน</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="908" height="726" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-4.png" alt="" class="wp-image-5242" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-4.png 908w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-4-768x614.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-4-700x560.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-4-600x480.png 600w" sizes="auto, (max-width: 908px) 100vw, 908px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="892" height="768" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-5.png" alt="" class="wp-image-5243" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-5.png 892w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-5-768x661.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-5-700x603.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-5-600x517.png 600w" sizes="auto, (max-width: 892px) 100vw, 892px" /></figure>



<p>ถ้าต้องการเปลี่ยน Version ก็สามารถคลิกที่ชื่อ Alias แล้วเลื่อนลงมาแก้ไข Config ได้ภายหลัง, รูปนี้ตัวอย่างของ Alias ชื่อ Prod ชี้ไปหาฟังก์ชั่น simple-hello Version 1</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1200" height="777" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-6-1200x777.png" alt="" class="wp-image-5244" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-6-1200x777.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-6-1024x663.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-6-768x498.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-6-700x453.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-6-600x389.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-6.png 1908w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<p>รูปนี้ตัวอย่างของ Alias ชื่อ Dev ชี้ไปหาฟังก์ชั่น simple-hello Version $LATEST</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1200" height="817" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-7-1200x817.png" alt="" class="wp-image-5245" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-7-1200x817.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-7-1024x697.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-7-768x523.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-7-700x476.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-7-600x408.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-7.png 1860w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<p>ในตัวอย่าง บนหน้าของ AWS API Gateway คือให้เราสร้าง Resource และกำหนดให้ Integration Request ของ Method ชี้ไปหา Alias ชื่อว่า Prod (แต่เดิมเราชี้ไปหาเลข Version, ตอนนี้ชี้ไปหาชื่อ Alias แทน) จากนั้นผม Deploy API ไปหา prod stage รอบหนึ่งก่อน เพื่อให้จำค่านั้น แล้วผมก็กลับมาเปลี่ยน Method ให้ชี้ไปหา Alias ชื่อว่า Dev และทำการ Deploy API ไปหา dev stage  อีกครั้ง</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1200" height="567" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-1-1200x567.png" alt="" class="wp-image-5241" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-1-1200x567.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-1-1024x484.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-1-768x363.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-1-700x331.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-1-600x283.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-1.png 2870w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<p>ผลที่ได้จากการทำวิธีนี้</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1200" height="212" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-2-1200x212.png" alt="" class="wp-image-5247" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-2-1200x212.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-2-1024x181.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-2-768x136.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-2-700x124.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-2-600x106.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-2.png 2180w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1200" height="194" src="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-3-1-1200x194.png" alt="" class="wp-image-5248" srcset="https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-3-1-1200x194.png 1200w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-3-1-1024x166.png 1024w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-3-1-768x124.png 768w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-3-1-700x113.png 700w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-3-1-600x97.png 600w, https://myifew.com/wp-content/uploads/2019/02/lambda-version-by-lambda-alias-3-1.png 2176w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<h2 class="wp-block-heading" id="mce_42">4. สร้าง Version และกำหนด Alias ให้กับ Lambda Function พร้อมกับทำ URL Verioning</h2>



<p>วิธีนี้คือการผสมข้อ 3 และ 4 เข้าด้วยกัน กล่าวคือ ใช้ Alias Name ด้วย เพื่อให้แก้ไข Version ที่ตัว Lambda Function ได้เองเลย พร้อมกับทำ URL กำหนด Version ไว้ เพื่อป้องกันผลกระทบ กรณี เปลี่ยน Version ใน Lambda Function ผิด</p>



<h2 class="wp-block-heading">สรุป</h2>



<p>วิธีการระบุ API Version มีหลายวิธีการให้เลือกใช้ พยายามหา Best Practice ก็อาจจะเจอหลายๆแบบ แล้วแต่ว่าคนเขียนเคยทำแบบไหนแล้วเหมาะกับงานของเขา</p>



<h2 class="wp-block-heading">แถม</h2>



<p>อย่างที่ผมกล่าวข้างต้น ในบล็อกนี้มันเป็นวิธีทำที่เราไม่ต้องไปแก้ไขโค้ดใดๆ  ส่วนวิธีการอย่างอื่น ก็มีอีกหลายแบบ ซึ่งลองดูรูปด้านล่างประกอบได้ครับ</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="893" height="305" src="https://myifew.com/wp-content/uploads/2019/02/API-Versioning-Practices.png" alt="" class="wp-image-5251" srcset="https://myifew.com/wp-content/uploads/2019/02/API-Versioning-Practices.png 893w, https://myifew.com/wp-content/uploads/2019/02/API-Versioning-Practices-768x262.png 768w, https://myifew.com/wp-content/uploads/2019/02/API-Versioning-Practices-700x239.png 700w, https://myifew.com/wp-content/uploads/2019/02/API-Versioning-Practices-600x205.png 600w" sizes="auto, (max-width: 893px) 100vw, 893px" /></figure>



<p>ส่วนข้อดีข้อเสีย มีเทียบไว้ให้เข้าใจง่ายๆ</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="712" height="217" src="https://myifew.com/wp-content/uploads/2019/02/API_1.png" alt="" class="wp-image-5255" srcset="https://myifew.com/wp-content/uploads/2019/02/API_1.png 712w, https://myifew.com/wp-content/uploads/2019/02/API_1-700x213.png 700w, https://myifew.com/wp-content/uploads/2019/02/API_1-600x183.png 600w" sizes="auto, (max-width: 712px) 100vw, 712px" /><figcaption>อ้างอิง https://www.icapps.com/blog/api-versioning-overview</figcaption></figure>



<p>อ้างอิง</p>



<ul class="wp-block-list"><li>https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html</li><li>https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html</li><li>https://mathieu.fenniak.net/aint-nobody-got-time-for-that-api-versioning/</li><li>https://www.icapps.com/blog/api-versioning-overview</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://myifew.com/5231/4-ways-to-manage-aws-lambda-function-version-and-environment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
