<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Orawan Juprapattasri</title>
    <description>The latest articles on Forem by Orawan Juprapattasri (@aomjk).</description>
    <link>https://forem.com/aomjk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F700036%2F7d27e68a-7907-43f3-a428-668d982f18cf.jpg</url>
      <title>Forem: Orawan Juprapattasri</title>
      <link>https://forem.com/aomjk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aomjk"/>
    <language>en</language>
    <item>
      <title>Make it easy from converting Java/.Net to Container application</title>
      <dc:creator>Orawan Juprapattasri</dc:creator>
      <pubDate>Tue, 14 Sep 2021 10:44:10 +0000</pubDate>
      <link>https://forem.com/awscommunity-asean/make-it-easy-from-converting-java-net-to-container-application-1a0p</link>
      <guid>https://forem.com/awscommunity-asean/make-it-easy-from-converting-java-net-to-container-application-1a0p</guid>
      <description>&lt;p&gt;สำหรับใครกำลังมองหาวิธีการเอา application ที่ถูกพัฒนาโดยภาษา Java หรือ .Net ขึ้นไปบน Cloud แต่อยากจะเปลี่ยนให้เป็น application ในลักษณะ Container แทน AWS มี solution ที่ชื่อ App2Container มาช่วยตรงนี้ได้&lt;/p&gt;

&lt;p&gt;App2Container (A2C) คืออะไร App2Containerเป็นเครื่องมือ หรือ Command line ที่ใช้ในการปรับปรุงแอปพลิเคชัน .NET และ Java ให้เป็นแอปพลิเคชันคอนเทนเนอร์ โดยไม่จำเป็นต้องแก้ code ใดๆ&lt;/p&gt;

&lt;p&gt;App2Container เน้นอะไรบ้างและให้ประโยชน์อะไร&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Portability : ด้วยคุณสมบัติของ Container ทำให้เราสามารถจะ deploy ไปที่ไหนก็ได้ ด้วยตัวของ Container เองจะมีการ pack runtime, deployed code และ libraries ต่างๆ รวมกันทำให้สามารถมีคุณสมบัติ portability&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developer Productivity : Container สามารถช่วยในเรื่องการเริ่มต้นพัฒนาที่ง่ายและรวดเร็ว โดยตัดในเรื่องของความซับซ้อนของ Application และการติดตั้ง dependencies ต่างๆลง จึงทำให้ developer ได้มีมุ่งพัฒนา application และทำให้ภาพรวมเกิดความเร็วในการพัฒนา Application&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IT Infrastructure Reduction : Container สามารถช่วยลดในเรื่องการใช้ resource ที่สูง Container สามารถเริ่มต้นได้ตั้งแต่หลัก MB &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standardization of CI/CD : เมื่อเราพูดถึง CI/CD application ที่มีลักษณะ legacy สามารถทำตรงนี้ได้ และ Container จะเหมาะในการทำ CI/CD ได้ดีกว่า legacy application ปรกติ&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;แหล่งที่มา &lt;a href="https://aws.amazon.com/app2container/faqs/" rel="noopener noreferrer"&gt;https://aws.amazon.com/app2container/faqs/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เริ่มอยากจะเห็นแล้วใช่ไหม ว่าการใช้งาน App2Container เป็นอย่างไร :D&lt;br&gt;
พอดีมีคู่มือดีๆ อยู่ จาก link นี้ &lt;a href="https://app2container.workshop.aws/" rel="noopener noreferrer"&gt;https://app2container.workshop.aws/&lt;/a&gt;&lt;br&gt;
คราวนี้จะมารีวิวในแต่ละขั้นตอน และสรุปให้ฟังในตอนท้าย&lt;/p&gt;

&lt;p&gt;เครื่องมือ&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AWS CloudFormation&lt;/li&gt;
&lt;li&gt;AWS Database Migration Service (DMS)&lt;/li&gt;
&lt;li&gt;AWS App2Container command line&lt;/li&gt;
&lt;li&gt;AWS Relational Database Service (RDS)&lt;/li&gt;
&lt;li&gt;AWS Elastic Container Registry&lt;/li&gt;
&lt;li&gt;AWS Elastic Container Service&lt;/li&gt;
&lt;li&gt;AWS S3&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ขั้นตอนแรก ใน lab เค้าให้กด CloudFormation template ซึ่งจะไป provision resource ต่างๆ ที่ us-west-2 region ซึ่ง CloudFormation Provision อะไรให้เรา CloudFormation จะทำการ deploy VPC, subnet ของฝั่ง Source และ Target รวมไปถึง source ที่เป็นเครื่อง เช่น EC2 ที่มี app และ EC2 ที่มี database อยู่ เพราะเราไม่มี datacenter on premise นะ CloudFormation เลยจำลองให้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvav9p5zf0qxe8ghya7ni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvav9p5zf0qxe8ghya7ni.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ถัดมา lab ให้ไปทำ PostgreSQL migration จาก vm เครื่องหนึ่งที่ run ด้วย ubuntu แล้ว migrate ไปเป็น AWS RDS PostgreSQL ซึ่งขั้นตอนนี้ BLOG นี้ไม่ได้เน้นนะ เราเน้นตรงที่ใช้ App2Container ส่วนเครื่องมือที่ใช้ในการ migrate DB ของ AWS คือ AWS DMS ถ้าใครสนใจสามารถเข้าไปทำ lab ใน part นี้ได้จาก link นี้&lt;br&gt;
&lt;a href="https://app2container.workshop.aws/en/java-migrate-your-db.html" rel="noopener noreferrer"&gt;https://app2container.workshop.aws/en/java-migrate-your-db.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output ที่ได้จาก lab part นี้คือ การ migrate DB จากเครื่องVM เครื่องนึง (ซึ่งในที่นี้ จำลองโดยใช้ EC2) ไปยัง AWS RDS จากรูปเป็นการ snapshot มาจาก AWS DMS ซึ่งได้ทำการ Configure Source machine (EC2 - PostgreSQL) และ Target (AWS RDS PostgreSQL) ไว้ จากนั้นกด run task&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2juus9pvskn8r9y4mih6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2juus9pvskn8r9y4mih6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ทีนี้มาถึง part พระเอกของเราแล้ว นั่นคือ App2Container โดยใน lab ให้เราเข้าไปในเครื่อง Source Web Java เราต้องเข้าไปโดยวิธี Session Manager ต่อมาทำตาม step ข้างล่างเลย&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ sudo su&lt;/em&gt;&lt;br&gt;
&lt;em&gt;$ aws configure&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk6p2zttn0if222ctqm11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk6p2zttn0if222ctqm11.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ curl -o AWSApp2Container-installer-linux.tar.gz &lt;a href="https://app2container-release-us-east-1.s3.us-east-" rel="noopener noreferrer"&gt;https://app2container-release-us-east-1.s3.us-east-&lt;/a&gt;&lt;br&gt;
1.amazonaws.com/latest/linux/AWSApp2Container-installer-linux.tar.gz&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ tar xvf AWSApp2Container-installer-linux.tar.gz&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6cengxux2895qc7recw8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6cengxux2895qc7recw8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ ./install.sh&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8liaf6a3x7v7gk9mrgnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8liaf6a3x7v7gk9mrgnb.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ app2container help&lt;/em&gt;&lt;br&gt;
ทดสอบการติดตั้ง app2container command line&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fecyyvodvvtehhxx4bt67.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fecyyvodvvtehhxx4bt67.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตอนนี้เราได้ลง App2Container ที่เครื่อง Source และ initialize เรียบร้อยแล้ว&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ app2container inventory&lt;/em&gt;&lt;br&gt;
Run command นี้ เพื่อให้ App2Container ทำการ discovery แล้วก็ list Java application ที่ run อยู่บนเครื่อง VM นี้ออกมา &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa2gfapm3rd6icszputqo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa2gfapm3rd6icszputqo.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ app2container analyze --application-id &lt;/em&gt;&lt;br&gt;
Run command นี้เพื่อ analyse Java Application และทำการสร้าง artifact ออกมาที่ folder พร้อม deploy เป็น container&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsjnphnzplgv01fov0j66.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsjnphnzplgv01fov0j66.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ app2container containerize --application-id &lt;/em&gt;&lt;br&gt;
Run command นี้เพื่อ build Java application เป็น docker image&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uhuwa11aayvpshbtzg1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uhuwa11aayvpshbtzg1.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ docker images&lt;/em&gt;&lt;br&gt;
Run command นี้เพื่อ list docker images ออกมาทั้งหมด จะเห็นว่าเรามี java-tomcat-xxxx images ด้วย ที่ถูกสร้างขึ้นมาโดย App2Container &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd39gq8uojo3kiv838q6o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd39gq8uojo3kiv838q6o.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ nano /root/app2container//deployment.json&lt;/em&gt;&lt;br&gt;
แก้ไข file deployment.json และแก้ไข value ของ parameter vpcId ซึ่งอยู่ข้างใน reuseResources parameter อีกที โดยเอา VPCTarget id มาแปะ &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq6j6khikrmtiucolxgn5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq6j6khikrmtiucolxgn5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ app2container generate app-deployment --application-id &lt;/em&gt;&lt;br&gt;
Push docker image ไปที่ AWS ECR และสร้าง ECS Task&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihywcxivv1vori5jvltr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihywcxivv1vori5jvltr.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ต่อมา เราเข้ามาดูที่ AWS ECR จะมี docker images ถูก push ขึ้นมาโดย App2Container&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgcgc3wwpcdd8msmv9tb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgcgc3wwpcdd8msmv9tb.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sfm3tqe4l30r46sy92a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sfm3tqe4l30r46sy92a.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;App2Container จะไปสร้าง task definition ที่ ECS ด้วย&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsznntiu8w1ejl9v5rrob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsznntiu8w1ejl9v5rrob.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38ypmjebxzaj0t0iuyyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38ypmjebxzaj0t0iuyyz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frnjbizmy5nv5p8i8w0hn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frnjbizmy5nv5p8i8w0hn.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;App2Container ได้นำพวก Artifact ต่างๆ ไปเก็บไว้ที่ s3 เช่น yaml file ที่จะถูก Cloudformation นำไป deploy&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ef34hsb7lq99xcj2cws.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ef34hsb7lq99xcj2cws.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5m9dx4xk6h9pewibguf9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5m9dx4xk6h9pewibguf9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;$ aws cloudformation deploy --template-file /root/app2container//EcsDeployment/ecs-master.yml --capabilities CAPABILITY_NAMED_IAM --stack-name a2c--ECS&lt;/em&gt;&lt;br&gt;
ต่อมา Run command ในการ deploy yaml file ที่ CloudFormation service&lt;/p&gt;

&lt;p&gt;หลังจาก deploy stack เสร็จเรียบร้อย จะมีหน้าตาตามรูปข้างล่าง&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furst7ur38ks7s2suqotu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furst7ur38ks7s2suqotu.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ไปตรวจที่ AWS ECS กันว่ามีการสร้าง Cluster ขึ้นมารึเปล่า&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgz9uqezdofedlhnftkc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgz9uqezdofedlhnftkc0.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;กดไปที่ link target group หลังจากนั้นให้เรา copy load balance DNS name มา&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26x1v8ozcehf80f63pfz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26x1v8ozcehf80f63pfz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ทดสอบ load balancer DNS name ที่เรา copy มาจาก ECS&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd5v2mhjhlg9yh6w3351.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd5v2mhjhlg9yh6w3351.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เย้!!! ในที่สุดก็ได้ webpage สวยงามมา ซึ่งได้มาจากผลงาน App2Container&lt;/p&gt;

&lt;p&gt;!!!บทสรุปของ BLOG นี้คืออะไร!!!&lt;br&gt;
เราค้นพบว่า App2Container สามารถช่วยทำให้เราเปลี่ยนจาก Java (หรือ .NET) ไปเป็นในรูปแบบ Container ซึ่งไป run บน AWS Container Service อีกที การใช้งานค่อนข้างจะง่าย สะดวกและรวดเร็ว&lt;/p&gt;

&lt;p&gt;เรามองหาอะไรต่อจากนี้ App2Container ไม่ได้ทำ refactoring อันนี้เราต้องเข้าใจตรงกันนิดนึง App2Container ไม่ได้แปลงจาก Monolith application ไปเป็น Mocroservice ให้ แต่ถ้าเรามีการเขียนแยกย่อย function อยู่แล้วใน Java หรือ .NET ก็จะง่ายและตรง microservice concept มากกว่าในการนำ App2Container convert app ขึ้น AWS Cloud Container Service. &lt;/p&gt;

&lt;p&gt;สุดท้ายนี้ อยากให้ลอง App2Container กัน สามารถเข้าไปดู tutorial เพิ่มเติมได้ รวมทั้ง link download มาลองกันอีกด้วย&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/app2container/latest/UserGuide/start-intro.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/app2container/latest/UserGuide/start-intro.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5lwzxt0rlxmqt3u397g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5lwzxt0rlxmqt3u397g.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awsthai</category>
      <category>container</category>
      <category>app2container</category>
    </item>
    <item>
      <title>Detect photo label by using Amazon Rekognition - part 1</title>
      <dc:creator>Orawan Juprapattasri</dc:creator>
      <pubDate>Tue, 14 Sep 2021 10:43:28 +0000</pubDate>
      <link>https://forem.com/awscommunity-asean/detect-photo-label-by-using-amazon-rekognition-part-1-3c7j</link>
      <guid>https://forem.com/awscommunity-asean/detect-photo-label-by-using-amazon-rekognition-part-1-3c7j</guid>
      <description>&lt;p&gt;ปัจจุบัน e-conmmerce เฟื่องฟูมาก และผู้ที่ให้บริการจำหน่ายสินค้าผ่านช่องทาง online ต่างต้องการพัฒนา และปรับปรุงช่องทางของตนเองให้ตอบโจท์ลูกค้ามากขึ้น &lt;br&gt;
อย่างเช่น ในหน้าค้นหาสินค้าเป็นต้น ถ้าลูกค้าต้องการจะค้นหาสินค้าโดยการ upload รูปสินค้าขึ้นไปที่หน้าเวปผู้ให้บริการ เราจะตอบโจทย์ตรงนี้อย่างไร&lt;/p&gt;

&lt;p&gt;AWS ได้ให้บริการ AI service ชื่อ Amazon Rekognition ที่สามารถจะให้บริการการ detect object หรือ ใบหน้าของคน แล้วระบุว่า เป็นสินค้าอะไร, ใบหน้าของคนๆ เป็นชายหรือหญิง และมีความมั่นใจกี่ % ซึ่งตรงนี้เอง เราสามารถนำ service นี้มาใช้ในงานลักษณะแบบนี้ได้&lt;/p&gt;

&lt;p&gt;การพัฒนา solution นี้ สามารถแบ่งออกเป็น 2 เฟส ได้แก่&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;การนำเข้ารูปภาพสินค้าทั้งหมดเข้าระบบ เพื่อให้ Amazon Rekognition detect ข้อมูลต่างๆในรูป และทำการจัดเก็บข้อมูลดังกล่าวในฐานข้อมูล&lt;/li&gt;
&lt;li&gt;การนำรูปตัวอย่าง มาทำการค้นหาข้อมูลจากฐานข้อมูล และแสดงผลการค้นหาสินค้าที่คล้ายกัน หรือตรงกัน&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48injphnf1et05hpyo6a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48injphnf1et05hpyo6a.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;สำหรับเนื้อหาในโพสนี้ จะมาทำเฟสแรกให้ดูกัน ไปกันเลยยยย...&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Host machine&lt;/b&gt; : Mac BigSur 11.5.2&lt;br&gt;
&lt;b&gt;eclipse&lt;/b&gt; : Eclipse IDE for Enterprise Java and Web Developers Version: 2021-06 (4.20.0)&lt;br&gt;
&lt;b&gt;eclipse plugin&lt;/b&gt; : Amazon developer toolkit [optional]&lt;br&gt;
&lt;b&gt;AWS service&lt;/b&gt; : S3, Lambda, Rekognition and Elasticsearch&lt;/p&gt;

&lt;p&gt;หมายเหตุ AWS developer toolkit จะ compatible อย่างสมบูรณ์ กับ eclipse ที่ใช้ java runtime 1.8&lt;/p&gt;

&lt;h2&gt;ขั้นตอนการทำ&lt;/h2&gt;

&lt;h3&gt;Provision Amazon elasticsearch service&lt;/h3&gt;

&lt;p&gt;AWS Console -&amp;gt; Elasticsearch (ES)&lt;br&gt;
ใส่ชื่อ cluster และเลือก dev mode จากนั้นเลือก internet access และเลือกโหมด authen ให้ใส่ username และ password&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm2fae0pqwj6n3ebdow8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm2fae0pqwj6n3ebdow8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หลังจาก provision เสร็จเรียบร้อยแล้ว ให้ copy ES endpoint เพื่อไปแปะที่ source code&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3rp1oii8jzx1rxt57ky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3rp1oii8jzx1rxt57ky.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ทดสอบการใช้งานเบื้องต้นโดย browse ไปยัง endpoint ที่เรา copy มา จากนั้นใส่ username และ password ตอนที่เรา provision cluster&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fba97oor6aeco329rbaxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fba97oor6aeco329rbaxm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Create lambda function&lt;/h3&gt;

&lt;p&gt;ไปที่ฝั่ง lambda บ้าง เราต้องไปสร้าง lambda function ขึ้นมา แล้วเอา java far file ไป deploy&lt;/p&gt;

&lt;p&gt;AWS Console -&amp;gt; Lambda -&amp;gt; create function&lt;/p&gt;

&lt;p&gt;ใส่ชื่อ function lambda และ เลือก runtime เป็น Java 8&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr9ieti8j01h50ecnrdez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr9ieti8j01h50ecnrdez.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เพิ่มตัว trigger lambda คือ s3 ไว้ข้างหน้า function และเพิ่ม SNS alert ด้านหลัง function เราจะได้ไปดู error message ที่ email ได้ หรือเราไปดู error ผ่าน Cloudwatch log ก็ได้นะ&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhi56v8ym6p2142ym09a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhi56v8ym6p2142ym09a.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configure lambda role ให้เรียบร้อย โดย role ต้องสามารถเข้าถึง S3 และ elasticsearch ได้&lt;/p&gt;

&lt;h3&gt;Develop Lambda function by using eclipse&lt;/h3&gt;

&lt;p&gt;เรามาเข้าสู่โหมด dev กัน ขั้นแรกเราต้องมีเครื่องมือในการเขียน lambda ก่อน  lambda ที่เราจะเขียนนี้ จะถูกเรียกให้ทำงานโดยการถูก trigger โดย S3 กรณีที่มีการ upload รูปภาพขึ้นไป S3&lt;br&gt;
lambda รองรับหลากหลายภาษา และหนึ่งในนั้นคือ java เพราะฉะนั้นเลยเลือกที่จะใช้ eclipse เป็น IDE tool&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Download eclipse tool&lt;/b&gt; : &lt;a href="https://www.eclipse.org/downloads/packages/" rel="noopener noreferrer"&gt;https://www.eclipse.org/downloads/packages/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[Optional]จากนั้นลง Amazon developer toolkit plugin เข้าไปเพิ่มที่ eclipse วิธีลงตาม link ที่แปะให้เลย&lt;br&gt;
&lt;a href="https://aws.amazon.com/eclipse/" rel="noopener noreferrer"&gt;https://aws.amazon.com/eclipse/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เมื่อลง aws plugin เรียบร้อยจะได้ ui จาก AWS ตามรูป&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74ha0c9ygw41nl07goh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74ha0c9ygw41nl07goh9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Download Source Code จาก Github&lt;/b&gt;&lt;br&gt;
Download ตัวอย่าง source code จาก github แล้ว import Maven project ลงไปที่ eclipse&lt;br&gt;
&lt;a href="https://github.com/aomjk/rekognition-demo-orawanj" rel="noopener noreferrer"&gt;https://github.com/aomjk/rekognition-demo-orawanj&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เปิด file LambdaFunctionHandler.java ให้แก้ ค่า value ของ aesEndpoint ให้ชี้ไปที่ ES endpoint ของเรา จากนั้นให้ save file&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fizgd220t9vnq10llprdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fizgd220t9vnq10llprdg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build และ pack compile code เป็น jar fomat โดยไปที่ eclipse กด click ขวาที่ project -&amp;gt; เลือก Run As -&amp;gt; Maven build &lt;br&gt;
Maven build configuration&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbj2ij3uilgvfap8vd3sd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbj2ij3uilgvfap8vd3sd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmobi3cqhl2zd774g8pez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmobi3cqhl2zd774g8pez.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หลังจากกด build โดยใช้ Maven tool แล้ว เราจะได้ jar file ออกมา &lt;br&gt;
jar file ตัวนี้จะถูกนำไป deploy ลงบน lambda&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwrq2xqm8pgq5h7xi6et.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwrq2xqm8pgq5h7xi6et.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deploy java jar file ไปที่ function จะด้วยวิธีการ upload ตรงขึ้นไป หรือ ไปฝากไว้ที่ s3 ขึ้นอยู่ขนาดความใหญ่ของ file&lt;/p&gt;

&lt;p&gt;[Optional]หรือสามารถใช้การ click ขวาที่ file folder แล้วเลือก Amazon Web Services และ Upload Function to lambda&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pz0gfu3wzh2skmcv7xy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pz0gfu3wzh2skmcv7xy.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Let's testing our solution&lt;/h3&gt;

&lt;p&gt;ตัวอย่างรูปภาพ&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb2kmb37l28esbxaqpw5m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb2kmb37l28esbxaqpw5m.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;แหล่งที่มา Amazon.com&lt;/p&gt;

&lt;p&gt;ต่อไปเรา upload รูปภาพนี้ลงไปที่ S3&lt;br&gt;
และเราสามารถดู debugging เบื้องต้นได้จาก CloudWatch Log&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxh4uytgj5fpbhgockg5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxh4uytgj5fpbhgockg5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จะเห็นได้ว่า Amazon Rekognition สามารถจำแนกรูปภาพได้ว่า เป็นเก้าอี้ เฟอร์นิเจอร์ และเป็นเก้าอี้ที่มีที่พักแขน และความมั่นใจกี่เปอร์ในแต่ละหัวข้อ&lt;/p&gt;

&lt;p&gt;สุดท้ายเราสามารถไปดูข้อมูลที่ถูก insert เข้าไปที่ ES ได้ตามรูปข้างล่างเลย&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcl9tkifbf0ptuqyc0gla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcl9tkifbf0ptuqyc0gla.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ในบทสรุปของการทำ solution นี้คือ ความสามารถในการบันทึกข้อมูลที่ได้จากการใช้ Amazon Rekognition detecting label มาวิเคราะห์รูปภาพ  โดยที่ข้อมูลที่ได้เป็นลักษณะ label ต่างๆ เช่น เก้าอี้ เฟอร์นิเจอร์ และความมั่นใจเป็นเปอร์เซ็นต์ที่คิดว่าเป็น เก้าอี้ และเฟอร์นิเจอร์กี่เปอร์เซ็นต์ ลงบันทึกลงใน Amazon Elasticsearch เพื่อใช้ในการค้นหาต่อไปได้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1njrhiax92g8i4rj9xza.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1njrhiax92g8i4rj9xza.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awsthai</category>
      <category>rekognition</category>
      <category>elasticsearch</category>
    </item>
  </channel>
</rss>
