รู้จักกับ AWS SDK
AWS SDK(Software Development Kit) คือ เครื่องมือที่ช่วยให้ Developer สามารถสร้าง Application หรือ Library เพื่อควบคุมการทำงานของ AWS ได้ด้วยภาษาต่างๆเหล่านี้
- AWS SDK for JavaScript
- AWS SDK for Python
- AWS SDK for .Net
- AWS SDK for C++
- AWS SDK for Go
- AWS SDK for PHP
- AWS SDK for Ruby
- AWS SDK for Rust
- AWS SDK for Java
- AWS SDK for Kotlin
- AWS SDK for SAP ABAP
- AWS SDK for Swift
- AWS Mobile SDK for Unity
จะเห็นได้ว่า AWS มีทางเลือกให้กับนักพัฒนาทุกๆค่าย ทำให้ Developer สามารถเขียน Application ขึ้นมาเพื่อควบคุมการทำงานของ AWS ได้โดยไม่ต้องเรียนรู้ภาษาใหม่ และในบทความนี้เราจะใช้ตัวอย่าง AWS SDK ด้วย JavaScript
AWS SDK Version 3
ในปัจจุบัน AWS SDK พัฒนามาถึง Version 3 ซึ่งจะมีสิ่งที่แตกต่างไปจาก Version 2 ดังนี้
Modularize Package
ทำการแยก package ออกไปตาม Services ต่างๆของ AWS ซึ่งใน Version 2 จะเป็นการ import เข้ามาทั้งก้อนแบบนี้
var AWS = require("aws-sdk");
แต่ใน Version 3 เราจะ import เข้ามาเป็น module แบบนี้่
import { DynamoDB } from "@aws-sdk/client-dynamodb";
นอกจากจะ import เข้ามาทั้ง module เราสามารถเลือกทีละ function หรือ method แบบนี้ก็ได้
import {
DynamoDBClient,
ListTablesCommand
} from "@aws-sdk/client-dynamodb";
DynamoDBClient และ ListTableCommand จะอยู่ใน submodule ชื่อ client-dynamodb
New Middleware Stack
ใน Version 2 เราจะต้องจัดการกับ stage ต่างๆของการส่งและรับ request เองซึ่งจะทำให้ debug ได้ยาก
แต่ใน Version 3 เราจะสามารถใช้ Middleware ในการแบ่ง Stage ของ Request Lifecycle แบบนี้
|
|
ในตัวอย่างนี้จะเป็นการเพิ่ม Custom Header เข้าไปในบรรทัดที่ 3 โดยจะใช้การเพิ่ม middleware เข้าไปด้วยึคำสั่ง dbclient.middlewareStack.add ในบรรทัดที่ 1
AWS SDK for JavaScript
การใช้งาน AWS SDK ด้วย JavaScript จะสามารถสร้าง Automation Script ได้ทั้ง Server-side และ Client-side เราจึงสาามารถนำ Script ไป run ได้ทั้ง
- Run script ด้วย NodeJS บน Server
- Run script ผ่าน Front-end framework บน browser(วิธีนี้ต้องระวังเรื่องการจัดเก็บ AWS Secret Key เพราะ Browser จะเก็บความลับไม่ได้)
- Run script ผ่าน React Native สำหรับนำไปสร้างเป็น Mobile Application
ซึ่งจะเห็นว่าการใช้ Javascript นั้นสามารถใช้ภาษาเดียวแต่ตอบโจทย์ได้ทั้ง API, Server-side, Client-side และ Mobile Application
ในบทความนี้เราจะยกตัวอย่างการใช้งานผ่าน NodeJS
ขั้นตอนการใข้งาน AWS SDK บน Node JS
ในตัวอย่างนี้เราจะใช้ JavaScript ดึงรายชื่อ Buckets ที่อยู่ใน S3 โดยจะมีขั้นตอนต่างๆ ดังนี้
ขั้นตอนที่ 1 ติดต้ัง AWS SDK
อย่างแรกเราต้อง install npm package เข้ามาก่อน โดยใช้คำสั่ง
$ npm i @aws-sdk/client-s3
ขั้นตอนที่ 2 ทำการ Import
ในขั้นตอนนี้เราต้อง import submodule หรือ command เข้ามาใช้งาน โดยจะเริ่มจาก
- สร้างไฟล์ index.js ขั้นมาใหม่
- เขียน Javascript ลงไปใน index.js แบบนี้
1 2 3 4
import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3";
ขั้นตอนที่ 3 สร้าง Main Function
ในขั้นตอนนี้เราจะสร้าง main function ขึ้นมาแล้วก็ connect กับ Amazon S3 ด้วย s3client
|
|
ถ้าเราไม่ได้ใส่ credentials หรือ config ให้กับ s3Client ตัว SDK จะไปอ่าน configuration ที่อยู่ใน configuration folder
- Linux, macOS, หรือ Unix ไฟล์ config จะเก็บอยู่ที่ ~/.aws/config
- บน Windows จะอยู่ใน folder C:\Users\USER_NAME.aws\config
ลองอ่านเรื่องการจัดการ AWS CLI ต่อได้ที่นี่
แต่ถ้าเราต้องการใส่เข้าไปใน Code โดยตรงเราสามารถเขียนแบบนี้ก็ได้
|
|
ขั้นตอนที่ 4 List รายชื่อ Bucket ใน S3
ในขั้นตอนนี้เราสามารถสั่ง List รายชื่อ S3 Bucket ออกมาด้วยคำสั่ง
|
|
Extract Method ListBuckets
ในตอนนำไปใช้งานจริง เราอาจต้องแยก method ListBuckets ออกมา เพราะเราจะมีคำสั่ง อื่นๆอีกเยอะมาก ตัวอย่างของการแยก method ListBuckets ออกมาจะเป็นแบบนี้
|
|
ตัวอย่างถ้าเราต้องการสร้าง Buckets ก่อนแล้วค่อย ListBuckets ออกมาเราจะเขียนแบบนี้
|
|
เข้าไปดูตัวอย่างแบบเต็มๆ ได้ที่นี่
ขั้นตอนที่ 5 Run Javascript
หลังจากได้ไฟล์ JavaScript ที่เราต้องการแล้ว ก็ให้นำไป run ด้วยคำสั่ง
$ node index.js
หลังจากนั้นเราจะได้รายชื่อ S3 Buckets แสดงใน console
คำเตือน หลังจาก run ตัวอย่างนี้อย่าลืมลบ S3 Bucket ที่สร้างขึ้นมาออกด้วยนะครับ