ใช้ AWS Lambda เรียกใช้งาน Amazon Translate แปลภาษา : Serverless Web App บน AWS : Part 1
บทความนี้ดัดแปลงเนื้อหาบางส่วนมาจาก Hands-on Training ของ Website AWS Official ของญี่ปุ่น สามารถอ่านเนื้อหาต้นฉบับได้ที่ AWS Hands-on for Beginners Serverless #1 サーバーレスアーキテクチャで翻訳 Web API を構築する | AWS Webinar
บทความนี้เป็นส่วนนึงของเนื้อหาในบทเรียนเกี่ยวกับ AWS API Gateway ที่ผมสร้างขึ้นมา คุณผู้อ่านสามารถตรวจสอบเนื้อหาทั้งหมดได้โดยการคลิกที่ชื่อของผม
เป้าหมายใหญ่สุดของบทเรียนนี้คือ การทำ Web app แปลภาษาที่เป็น serverless ครับ
สวัสดีครับ ต้า ครับ
บทความนี้เป็นส่วนนึงของเนื้อหาในบทเรียนเกี่ยวกับ AWS API Gateway ที่ผมสร้างขึ้นมา
ซึ่งผมทำการแยกย่อยๆออกมาโดยเนื้อหาในบทความพวกนี้สามารถจบได้ในตัวของมันเอง
แต่หากเราทำตามขั้นตอนแต่ละพาร์ทต่อกันจะได้เป็นโครงสร้าง Serverless ขนาดใหญ่ 1 อัน
ตามภาพด้านล่างนี้(คร่าวๆ)
ซึ่งเป็นเป้าหมายตั้งแต่แรกที่ผมเขียนบทความนี้ขึ้น
(คือตอนแรกเขียนเป็นบทความอันเดียวยาวๆ แต่มันยาวเกินไป เลยมาสับๆแยกมันออกมาย่อย เพื่อให้กินได้ง่ายๆ)
จะเห็นได้ว่าบริการทั้งหมดในนี้เป็น Serverless ทั้งหมดเลย ทำให้การทำ Hands-On ครั้งนี้เราไม่จำเป็นต้องคิดเรื่องค่าใช้จ่ายมากนัก เพราะ Serverless มีค่าใช้จ่ายที่ต่ำมากๆอยู่แล้ว หากเราไม่ใช้งานแถบจะไม่มีค่าใช้จ่ายเกิดขึ้นเลย
โดยในวันนี้จะเป็นบทความแรกของเรา โดยผมจะพาทำการใช้ Lambda ในการเรียก Amazon Translate เพื่อแปลภาษาครับ
สำหรับหัวข้ออื่นๆ ของบทความนี้ สามารถตรวจสอบได้ที่ช่วงท้ายของบทความครับ
บทความนี้เราจะมาทำกันใน Singapore Region กันครับ
เริ่มลงมือทำ
สร้าง Lambda
เข้าลิ้งค์ต่อไปนี้เพื่อทำการสร้าง Lambda Function
Create function
ตั้งค่าตามต่อไปนี้
◉ Author from scratch
Function name: translate-function
Runtime: Python 3.12
เราจะใช้ Lambda นี้ส่ง Request ไปยัง Amazon Translate ทำให้เราต้องทำให้ Lambda Function นี้ต้องมีสิทธิในการเข้าถึง Amazon Translate ก่อน โดยการตั้งค่าต่อไปนี้
ไปที่ Function ที่เราสร้างขึ้น > Configuration > Permissions > คลิก Role ที่เราสร้างขึ้น
กด Add permissions > Attach policies > ☑TranslateFullAccess > Add permissions
เราสามารถจำกัดสิทธิ์ให้มีความสามารถเท่าที่จำเป็นได้ แต่เพื่อความสะดวก ในบทความนี้จึงขอใช้เป็น FullAccess ไปก่อน
ถ้าได้ตามภาพด้านล่างนี้คือโอเคครับ
กลับมาที่ Lambda Function ที่เราสร้างขึ้น
ไปที่โค้ดก็อบข้อความด้านล่างไปใส่แล้วกด Deploy
import json
import boto3
translate = boto3.client('translate')
def lambda_handler(event, context):
input_text = "ลิงกินกล้วย"
response = translate.translate_text(
Text=input_text,
SourceLanguageCode='th',
TargetLanguageCode='en'
)
output_text = response.get('TranslatedText')
return {
'statusCode': 200,
'body': json.dumps({
'output_text': output_text
})
}
เกี่ยวกับ Document ของ boto 3 Lambda ที่เขียนที่เกี่ยวกับ Amazon Translate สามารถตรวจสอบได้จากลิ้งค์ด้านล่างนี้
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/translate.html
จากนั้นเรากดหัวข้อ Test
ด้านบน เราจะเห็นหน้าต่างให้เราสร้าง Event
ผมจะตั้งชื่อไว้ว่า first_test
แล้วกด Save
แล้วกด Test
อีกที
เราจะได้คำแปลของ ลิงกินกล้วย
คราวนี้เราสามารถลองเปลี่ยนคำแปลที่ input_text
หรือ ภาษาที่ SourceLanguageCode
หรือ TargetLanguageCode
ได้ครับ
จะเห็นได้ว่า เราสามารถที่จะแปลภาษาได้ตามที่เราใส่ input ลงไปครับ
ทิ้งท้าย
ในบทความนี้ เราสามารถแปลจากไทยเป็นอังกฤษได้ แต่หากใครลองพยายามแปลจากอังกฤษเป็นไทย แล้วได้รับผลลัพท์ออกมาเป็นภาษาที่เพี้ยน
อย่าพึ่งตกใจครับ
เราจะไปแก้ในบทความต่อไป
กรุณาอดใจรอพาร์ทต่อไปในเร็วๆนี้ครับ
บทความ Part อื่นๆ
- ใช้ AWS Lambda เรียกใช้งาน Amazon Translate แปลภาษา : Part 1 | DevelopersIO
- ใช้ API Gateway เชื่อมต่อไปยัง Lambda เรียก API แปลภาษา : Part 2 | DevelopersIO
- ใช้ DynamoDB บันทึกข้อมูลจาก Lambda : Part 3 | DevelopersIO
- แก้ ensure_ascii=False เพื่อให้แปลภาษาอังกฤษ > ไทย แล้วตัวอักษรไม่เพี้ยน : Part 4 | DevelopersIO
- เพิ่มตัวแปรให้เพิ่มรูปแบบการแปลได้หลากหลายมากขึ้น : Part 5 | DevelopersIO
- ดาวน์โหลดโค้ด Front-end และ ตั้งค่า CORS : Part 6 | DevelopersIO
- เพิ่มฟังก์ชัน History ให้สามารถเรียกดูปะวัติการแปลได้ : Part 7 | DevelopersIO
- อัพโหลดเว็บไซต์ขึ้นบน S3 (Hosting Server) : Part 8 | DevelopersIO