ความฉลาดทางข้อมูลเชิงกำเนิด

สร้างไปป์ไลน์การประมวลผลใบเสร็จและใบแจ้งหนี้ด้วย Amazon Textract | อเมซอนเว็บเซอร์วิส

วันที่:

ในภาพรวมธุรกิจในปัจจุบัน องค์กรต่าง ๆ มองหาวิธีเพิ่มประสิทธิภาพกระบวนการทางการเงิน เพิ่มประสิทธิภาพ และประหยัดต้นทุนอย่างต่อเนื่อง ประเด็นหนึ่งที่มีศักยภาพในการปรับปรุงอย่างมีนัยสำคัญคือเจ้าหนี้ ในระดับสูง กระบวนการบัญชีเจ้าหนี้ประกอบด้วยการรับและการสแกนใบแจ้งหนี้ การดึงข้อมูลที่เกี่ยวข้องจากใบแจ้งหนี้ที่สแกน การตรวจสอบความถูกต้อง การอนุมัติ และการเก็บถาวร ขั้นตอนที่สอง (การสกัด) อาจซับซ้อน ใบแจ้งหนี้และใบเสร็จรับเงินแต่ละใบมีลักษณะแตกต่างกัน ป้ายกำกับไม่สมบูรณ์และไม่สอดคล้องกัน ข้อมูลที่สำคัญที่สุด เช่น ราคา ชื่อผู้ขาย ที่อยู่ของผู้ขาย และเงื่อนไขการชำระเงิน มักไม่ได้ระบุไว้อย่างชัดเจนและต้องตีความตามบริบท วิธีการดั้งเดิมในการใช้ผู้ตรวจสอบที่เป็นมนุษย์เพื่อดึงข้อมูลนั้นใช้เวลานาน เกิดข้อผิดพลาดได้ง่าย และไม่สามารถปรับขนาดได้

ในโพสต์นี้ เราจะแสดงวิธีการทำให้กระบวนการบัญชีเจ้าหนี้เป็นแบบอัตโนมัติโดยใช้ Amazon Text สำหรับการดึงข้อมูล นอกจากนี้เรายังจัดเตรียมสถาปัตยกรรมอ้างอิงเพื่อสร้างไปป์ไลน์ใบแจ้งหนี้อัตโนมัติที่ช่วยให้สามารถดึงข้อมูล การตรวจสอบความถูกต้อง การเก็บถาวร และการค้นหาอัจฉริยะ

ภาพรวมโซลูชัน

แผนภาพสถาปัตยกรรมต่อไปนี้แสดงขั้นตอนของเวิร์กโฟลว์การประมวลผลใบเสร็จและใบแจ้งหนี้ เริ่มต้นด้วยขั้นตอนการจับภาพเอกสารเพื่อรวบรวมและจัดเก็บใบแจ้งหนี้และใบเสร็จรับเงินที่สแกนไว้อย่างปลอดภัย ขั้นตอนต่อไปคือขั้นตอนการแยกข้อมูล ซึ่งคุณส่งใบแจ้งหนี้และใบเสร็จรับเงินที่รวบรวมไว้ไปยัง Amazon Textract AnalyzeExpense API เพื่อแยกความสัมพันธ์ที่เกี่ยวข้องทางการเงินระหว่างข้อความ เช่น ชื่อผู้ขาย วันที่รับใบแจ้งหนี้ วันที่สั่งซื้อ จำนวนเงินที่ครบกำหนด จำนวนเงินที่ชำระ และอื่นๆ ในระยะถัดไป คุณใช้กฎค่าใช้จ่ายที่กำหนดไว้ล่วงหน้าเพื่อพิจารณาว่าคุณควรอนุมัติหรือปฏิเสธการรับโดยอัตโนมัติหรือไม่ เอกสารที่ได้รับอนุมัติและปฏิเสธจะไปยังโฟลเดอร์ที่เกี่ยวข้องภายใน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (อเมซอน S3) ที่เก็บข้อมูล สำหรับเอกสารที่ได้รับอนุมัติ คุณสามารถค้นหาฟิลด์และค่าที่แยกออกมาทั้งหมดได้โดยใช้ บริการ Amazon OpenSearch- คุณสามารถเห็นภาพข้อมูลเมตาที่จัดทำดัชนีไว้ได้โดยใช้ OpenSearch Dashboards เอกสารที่ได้รับอนุมัติก็จะถูกตั้งค่าให้ย้ายเข้าไปด้วย การจัดระดับอัจฉริยะของ Amazon S3 สำหรับการเก็บรักษาและการเก็บถาวรในระยะยาวโดยใช้นโยบายวงจรการใช้งาน S3

สถาปัตยกรรมโซลูชัน

ส่วนต่อไปนี้จะนำคุณไปสู่กระบวนการสร้างโซลูชัน

เบื้องต้น

หากต้องการปรับใช้โซลูชันนี้ คุณต้องมีสิ่งต่อไปนี้:

  • บัญชี AWS.
  • An AWS Cloud9 สิ่งแวดล้อม. AWS Cloud9 คือสภาพแวดล้อมการพัฒนาแบบผสานรวม (IDE) บนระบบคลาวด์ที่ให้คุณเขียน เรียกใช้ และดีบักโค้ดของคุณโดยใช้เพียงเบราว์เซอร์ ประกอบด้วยโปรแกรมแก้ไขโค้ด ดีบักเกอร์ และเทอร์มินัล

หากต้องการสร้างสภาพแวดล้อม AWS Cloud9 ให้ระบุชื่อและคำอธิบาย เก็บทุกอย่างไว้เป็นค่าเริ่มต้น เลือกลิงก์ IDE บนคอนโซล AWS Cloud9 เพื่อนำทางไปยัง IDE ตอนนี้คุณพร้อมที่จะใช้สภาพแวดล้อม AWS Cloud9 แล้ว

ปรับใช้โซลูชัน

ในการตั้งค่าโซลูชัน คุณใช้ ชุดพัฒนา AWS Cloud (AWS CDK) เพื่อปรับใช้ การก่อตัวของ AWS Cloud กอง

  1. ในเทอร์มินัล AWS Cloud9 IDE ของคุณ ให้โคลนไฟล์ พื้นที่เก็บข้อมูล GitHub และติดตั้งการพึ่งพา รันคำสั่งต่อไปนี้เพื่อปรับใช้ InvoiceProcessor ซ้อนกัน:
git clone https://github.com/aws-samples/amazon-textract-invoice-processor.git
pip install -r requirements.txt
cdk bootstrap
cdk deploy

การปรับใช้ใช้เวลาประมาณ 25 นาทีด้วยการตั้งค่าเริ่มต้นจาก repo GitHub ข้อมูลเอาต์พุตเพิ่มเติมยังมีอยู่ในคอนโซล AWS CloudFormation อีกด้วย

  1. หลังจากการปรับใช้ AWS CDK เสร็จสมบูรณ์ ให้สร้างกฎการตรวจสอบค่าใช้จ่ายใน อเมซอน ไดนาโมดีบี โต๊ะ. คุณสามารถใช้เทอร์มินัล AWS Cloud9 เดียวกันเพื่อรันคำสั่งต่อไปนี้:
aws dynamodb execute-statement --statement "INSERT INTO "$(aws cloudformation list-exports --query 'Exports[?Name==`InvoiceProcessorWorkflow-RulesTableName`].Value' --output text)" VALUE {'ruleId': 1, 'type': 'regex', 'field': 'INVOICE_RECEIPT_ID', 'check': '(?i)[0-9]{3}[a-z]{3}[0-9]{3}$', 'errorTxt': 'Receipt number is not valid. It is of the format: 123ABC456'}"
aws dynamodb execute-statement --statement "INSERT INTO "$(aws cloudformation list-exports --query 'Exports[?Name==`InvoiceProcessorWorkflow-RulesTableName`].Value' --output text)" VALUE {'ruleId': 2, 'type': 'regex', 'field': 'PO_NUMBER', 'check': '(?i)[a-z0-9]+$', 'errorTxt': 'PO number is not present'}"

  1. ในถัง S3 ที่ขึ้นต้นด้วย invoiceprocessorworkflow-invoiceprocessorbucketf1-*ให้สร้างโฟลเดอร์อัพโหลด

In Amazon Cognito Coคุณควรมีการเรียกกลุ่มผู้ใช้ที่มีอยู่แล้ว OpenSearchResourcesCognitoUserPool*- เราใช้กลุ่มผู้ใช้นี้เพื่อสร้างผู้ใช้ใหม่

  1. บนคอนโซล Amazon Cognito ให้นำทางไปยังกลุ่มผู้ใช้ OpenSearchResourcesCognitoUserPool*.
  2. สร้างผู้ใช้ Amazon Cognito ใหม่
  3. ระบุชื่อผู้ใช้และรหัสผ่านที่คุณเลือกและบันทึกไว้เพื่อใช้ในภายหลัง
  4. อัพโหลดเอกสาร Random_invoice1 และ Random_invoice2 ถึง S3 uploads โฟลเดอร์เพื่อเริ่มเวิร์กโฟลว์

ตอนนี้เรามาดูขั้นตอนการประมวลผลเอกสารแต่ละขั้นตอนกัน

จับภาพเอกสาร

ลูกค้าจัดการใบแจ้งหนี้และใบเสร็จรับเงินในรูปแบบต่างๆ มากมายจากผู้ขายที่แตกต่างกัน เอกสารเหล่านี้ได้รับผ่านช่องทางต่างๆ เช่น สำเนาเอกสาร สำเนาสแกนที่อัปโหลดไปยังพื้นที่จัดเก็บไฟล์ หรืออุปกรณ์จัดเก็บข้อมูลที่ใช้ร่วมกัน ในขั้นตอนการจับภาพเอกสาร คุณจะจัดเก็บสำเนาที่สแกนของใบเสร็จรับเงินและใบแจ้งหนี้ทั้งหมดในพื้นที่จัดเก็บข้อมูลที่ปรับขนาดได้สูง เช่น ในบัคเก็ต S3

อัปโหลดใบแจ้งหนี้ตัวอย่าง

การสกัด

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

วิเคราะห์ค่าใช้จ่าย เป็น API สำหรับการประมวลผลเอกสารใบแจ้งหนี้และใบเสร็จรับเงินโดยเฉพาะ มีให้เลือกทั้งแบบซิงโครนัสหรืออะซิงโครนัส API API แบบซิงโครนัสช่วยให้คุณสามารถส่งรูปภาพในรูปแบบไบต์ และ API แบบอะซิงโครนัสช่วยให้คุณสามารถส่งไฟล์ในรูปแบบ JPG, PNG, TIFF และ PDF ที่ AnalyzeExpense การตอบสนองของ API ประกอบด้วยสามส่วนที่แตกต่างกัน:

  • ฟิลด์สรุป – ส่วนนี้มีทั้งคีย์มาตรฐานและคีย์ที่กล่าวถึงอย่างชัดเจนพร้อมกับค่า AnalyzeExpense ปรับคีย์ให้เป็นมาตรฐานสำหรับข้อมูลที่เกี่ยวข้องกับการติดต่อ เช่น ชื่อผู้ขายและที่อยู่ผู้ขาย คีย์ที่เกี่ยวข้องกับหมายเลขประจำตัวผู้เสียภาษี เช่น หมายเลขประจำตัวผู้เสียภาษี คีย์ที่เกี่ยวข้องกับการชำระเงิน เช่น จำนวนเงินที่ครบกำหนดและส่วนลด และคีย์ทั่วไป เช่น รหัสใบแจ้งหนี้ วันที่จัดส่ง และ หมายเลขบัญชี. คีย์ที่ไม่ทำให้เป็นมาตรฐานยังคงปรากฏในช่องสรุปเป็นคู่คีย์-ค่า สำหรับรายการฟิลด์ค่าใช้จ่ายที่รองรับทั้งหมด โปรดดูที่ การวิเคราะห์ใบแจ้งหนี้และใบเสร็จรับเงิน.
  • รายการโฆษณา – ส่วนนี้ประกอบด้วยคีย์รายการโฆษณาที่ทำให้เป็นมาตรฐาน เช่น คำอธิบายรายการ ราคาต่อหน่วย ปริมาณ และรหัสผลิตภัณฑ์
  • บล็อกโอซีอาร์ – บล็อกประกอบด้วยการแยกข้อความดิบจากหน้าใบแจ้งหนี้ การแยกข้อความดิบสามารถใช้สำหรับการประมวลผลภายหลังและการระบุข้อมูลที่ไม่ครอบคลุมโดยเป็นส่วนหนึ่งของฟิลด์สรุปและรายการบรรทัด

โพสต์นี้ใช้ โครงสร้าง Amazon Text IDP CDK (ส่วนประกอบ AWS CDK เพื่อกำหนดโครงสร้างพื้นฐานสำหรับเวิร์กโฟลว์การประมวลผลเอกสารอัจฉริยะ (IDP)) ซึ่งช่วยให้คุณสามารถสร้างเวิร์กโฟลว์ IDP เฉพาะกรณีการใช้งานได้ โครงสร้างและตัวอย่างคือชุดของส่วนประกอบเพื่อให้สามารถกำหนดกระบวนการ IDP บน AWS และเผยแพร่ไปยัง GitHub- แนวคิดหลักที่ใช้คือโครงสร้าง AWS CDK ซึ่งเป็นแนวคิดจริง สแต็ค AWS CDKและ ฟังก์ชันขั้นตอนของ AWS.

รูปภาพต่อไปนี้แสดงเวิร์กโฟลว์ Step Functions

เวิร์กโฟลว์ฟังก์ชันขั้นตอน

เวิร์กโฟลว์การแยกข้อมูลมีขั้นตอนต่อไปนี้:

  • ตัวประมวลผลใบแจ้งหนี้-ผู้ตัดสินใจ - An AWS แลมบ์ดา ฟังก์ชันที่ตรวจสอบว่า Amazon Textract รองรับรูปแบบเอกสารอินพุตหรือไม่ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับรูปแบบที่รองรับ โปรดดูที่ เอกสารเข้า.
  • ตัวแยกเอกสาร – ฟังก์ชัน Lambda ที่สร้างชิ้นส่วน 2,500 หน้า (สูงสุด) จากเอกสาร และสามารถประมวลผลเอกสารขนาดใหญ่หลายหน้าได้
  • รัฐแผนที่ – ฟังก์ชัน Lambda ที่ประมวลผลแต่ละส่วนพร้อมกัน
  • TextAsync – งานนี้เรียก Amazon Textract โดยใช้ API แบบอะซิงโครนัสต่อไปนี้ ปฏิบัติที่ดีที่สุด กับ บริการแจ้งเตือนแบบง่ายของ Amazon การแจ้งเตือนและการใช้งาน (Amazon SNS) OutputConfig เพื่อจัดเก็บเอาต์พุต Amazon Textract JSON ไปยังบัคเก็ต S3 ที่คุณสร้างไว้ก่อนหน้านี้ ประกอบด้วยฟังก์ชัน Lambda สองฟังก์ชัน: ฟังก์ชันหนึ่งสำหรับส่งเอกสารเพื่อการประมวลผล และอีกฟังก์ชันหนึ่งที่เรียกใช้ในการแจ้งเตือน SNS
  • ข้อความ AsyncToJSON2 - เพราะว่า TextractAsync งานสามารถสร้างไฟล์เอาต์พุตที่มีการแบ่งหน้าได้หลายไฟล์ TextractAsyncToJSON2 กระบวนการรวมเข้าด้วยกันเป็นไฟล์ JSON ไฟล์เดียว

เราจะหารือรายละเอียดของสามขั้นตอนถัดไปในส่วนต่อไปนี้

การตรวจสอบและการอนุมัติ

สำหรับขั้นตอนการตรวจสอบนั้น SetMetaData ฟังก์ชัน Lambda จะตรวจสอบว่าไฟล์ที่อัปโหลดเป็นค่าใช้จ่ายที่ถูกต้องตามกฎที่กำหนดค่าไว้ก่อนหน้านี้ในตาราง DynamoDB หรือไม่ สำหรับโพสต์นี้ คุณใช้กฎตัวอย่างต่อไปนี้:

  • การตรวจสอบจะสำเร็จหาก INVOICE_RECEIPT_ID ปรากฏและตรงกับ regex (?i)[0-9]{3}[a-z]{3}[0-9]{3}$ และ if PO_NUMBER ปรากฏและตรงกับ regex (?i)[a-z0-9]+$
  • การยืนยันไม่สำเร็จหากเป็นเช่นนั้น PO_NUMBER or INVOICE_RECEIPT_ID ไม่ถูกต้องหรือขาดหายไปในเอกสาร

หลังจากประมวลผลไฟล์แล้ว ฟังก์ชันการตรวจสอบค่าใช้จ่ายจะย้ายไฟล์อินพุตไปที่ไฟล์ใดไฟล์หนึ่ง approved or declined โฟลเดอร์ในบัคเก็ต S3 เดียวกัน

เอาต์พุต S3

เพื่อวัตถุประสงค์ของโซลูชันนี้ เราใช้ DynamoDB เพื่อจัดเก็บกฎการตรวจสอบค่าใช้จ่าย อย่างไรก็ตาม คุณสามารถปรับเปลี่ยนโซลูชันนี้เพื่อรวมเข้ากับโซลูชันการตรวจสอบหรือการจัดการค่าใช้จ่ายของคุณเองหรือเชิงพาณิชย์ได้

ดัชนีอัจฉริยะและการค้นหา

กับ OpenSearchPushInvoke ฟังก์ชัน Lambda ข้อมูลเมตาค่าใช้จ่ายที่แยกออกมาจะถูกส่งไปยังดัชนี OpenSearch Service และพร้อมสำหรับการค้นหา

สุดท้าย TaskOpenSearchMapping ขั้นตอน ล้างบริบท ซึ่งอาจเกินกว่านั้น โควต้า Step Functions ขนาดอินพุตหรือเอาต์พุตสูงสุดสำหรับงาน สถานะ หรือเวิร์กโฟลว์ที่รัน

หลังจากสร้างดัชนี OpenSearch Service แล้ว คุณสามารถค้นหาคำสำคัญจากข้อความที่แยกออกมาได้ผ่าน OpenSearch Dashboards

ค้นหาเอกสาร OpenSearch

การเก็บถาวร การตรวจสอบ และการวิเคราะห์

ในการจัดการวงจรการใช้งานและการเก็บถาวรใบแจ้งหนี้และใบเสร็จรับเงิน คุณสามารถกำหนดค่ากฎวงจรการใช้งาน S3 เพื่อเปลี่ยนอ็อบเจ็กต์ S3 จากคลาสพื้นที่จัดเก็บแบบมาตรฐานไปเป็นคลาสพื้นที่จัดเก็บแบบอัจฉริยะ การจัดระดับแบบอัจฉริยะของ S3 จะตรวจสอบรูปแบบการเข้าถึงและย้ายออบเจ็กต์ไปยังระดับการเข้าถึงไม่บ่อยโดยอัตโนมัติ เมื่อไม่มีการเข้าถึงเป็นเวลา 30 วันติดต่อกัน หลังจากไม่มีการเข้าถึงเป็นเวลา 90 วัน ออบเจ็กต์จะถูกย้ายไปยังระดับ Archive Instant Access โดยไม่มีผลกระทบต่อประสิทธิภาพหรือค่าใช้จ่ายในการดำเนินการ

สำหรับการตรวจสอบและการวิเคราะห์ โซลูชันนี้ใช้บริการ OpenSearch เพื่อเรียกใช้การวิเคราะห์คำขอใบแจ้งหนี้ OpenSearch Service ช่วยให้คุณสามารถนำเข้า รักษาความปลอดภัย ค้นหา รวบรวม ดู และวิเคราะห์ข้อมูลสำหรับกรณีการใช้งานต่างๆ ได้อย่างง่ายดาย เช่น การวิเคราะห์บันทึก การค้นหาแอปพลิเคชัน การค้นหาระดับองค์กร และอื่นๆ อีกมากมาย

เข้าสู่ระบบ OpenSearch Dashboards และไปที่ การจัดการกอง, วัตถุที่บันทึกไว้แล้วเลือก นำเข้า. เลือก ใบแจ้งหนี้.ndjson ไฟล์จากที่เก็บโคลนแล้วเลือก นำเข้า- สิ่งนี้จะเติมดัชนีล่วงหน้าและสร้างการแสดงภาพ

การนำเข้า OpenSearch

รีเฟรชหน้าและไปที่ หน้าแรก, Dashboardและเปิด ใบแจ้งหนี้- ขณะนี้คุณสามารถเลือกและใช้ตัวกรองและขยายกรอบเวลาเพื่อสำรวจใบแจ้งหนี้ที่ผ่านมาได้

แดชบอร์ด OpenSearch

ทำความสะอาด

เมื่อคุณประเมิน Amazon Textract สำหรับประมวลผลใบเสร็จและใบแจ้งหนี้เสร็จแล้ว เราขอแนะนำให้ล้างทรัพยากรใดๆ ที่คุณอาจสร้างขึ้น ทำตามขั้นตอนต่อไปนี้:

  1. ลบเนื้อหาทั้งหมดออกจากบัคเก็ต S3 invoiceprocessorworkflow-invoiceprocessorbucketf1-*.
  2. ใน AWS Cloud9 ให้รันคำสั่งต่อไปนี้เพื่อลบทรัพยากร Amazon Cognito และสแต็ก CloudFormation:
cognito_user_pool=$(aws cloudformation list-exports --query 'Exports[?Name==`InvoiceProcessorWorkflow-CognitoUserPoolId`].Value' --output text)
echo $cognito_user_pool
cdk destroy
aws cognito-idp delete-user-pool --user-pool-id $cognito_user_pool

  1. ลบสภาพแวดล้อม AWS Cloud9 ที่คุณสร้างจากคอนโซล AWS Cloud9

สรุป

ในโพสต์นี้ เราได้ให้ภาพรวมของวิธีที่เราสามารถสร้างไปป์ไลน์อัตโนมัติของใบแจ้งหนี้โดยใช้ Amazon Textract สำหรับการดึงข้อมูล และสร้างเวิร์กโฟลว์สำหรับการตรวจสอบ การเก็บถาวร และการค้นหา เราได้จัดเตรียมตัวอย่างโค้ดเกี่ยวกับวิธีการใช้งาน AnalyzeExpense API สำหรับการแยกฟิลด์สำคัญออกจากใบแจ้งหนี้

ในการเริ่มต้น ให้ลงชื่อเข้าใช้คอนโซล Amazon Textract เพื่อลองใช้คุณสมบัตินี้ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับความสามารถของ Amazon Textract โปรดดูที่ คู่มือนักพัฒนา Amazon Text or ทรัพยากรข้อความ- หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ IDP โปรดดูที่ IDP พร้อมบริการ AWS AI 1 หมายเลข และ 2 หมายเลข โพสต์


เกี่ยวกับผู้เขียน

สุสันต์ ปราธาน เป็นสถาปนิกโซลูชันอาวุโสที่ Amazon Web Services ซึ่งช่วยเหลือลูกค้าระดับองค์กร ความสนใจและประสบการณ์ของเขา ได้แก่ คอนเทนเนอร์ เทคโนโลยีไร้เซิร์ฟเวอร์ และ DevOps ในเวลาว่าง Sushant ชอบใช้เวลานอกบ้านร่วมกับครอบครัว

ชิบิน มิเชลราจ เป็น Sr. Product Manager กับทีม AWS Texttract เขามุ่งเน้นไปที่การสร้างผลิตภัณฑ์ที่ใช้ AI/ML สำหรับลูกค้า AWS

ศุภกาศ ดุตตา เป็น Sr. Solutions Architect ที่ Amazon Web Services เขามุ่งเน้นไปที่กลยุทธ์การเปลี่ยนแปลงทางดิจิทัล การทำให้แอปพลิเคชันทันสมัยและการย้ายข้อมูล การวิเคราะห์ข้อมูล และการเรียนรู้ของเครื่อง เขาเป็นส่วนหนึ่งของชุมชน AI/ML ที่ AWS และออกแบบโซลูชันการประมวลผลเอกสารอัจฉริยะ

มารัญ จันทรเศกการัณย์ เป็นสถาปนิกโซลูชันอาวุโสที่ Amazon Web Services ซึ่งทำงานร่วมกับลูกค้าระดับองค์กรของเรา นอกเวลาทำงาน เขาชอบท่องเที่ยวและขี่มอเตอร์ไซค์ใน Texas Hill Country

จุด_img

ข่าวกรองล่าสุด

จุด_img