Hi Vtitans,
Lúc cần tìm hiểu hay demo một giải pháp nào đó thật nhanh mà phải đi cài đặt một đống thứ thì ngán lắm. Vậy chắc không riêng gì mình mà những bạn vừa ít code lại còn không chuyên một ngôn ngữ nào cả thì sẽ đều bỏ túi vài mẹo mực "mì ăn liền" hòng đạt mục đích chính nhanh nhất có thể.
Mình cũng vừa húp xong một tô mì như thế lúc follow cái guide Step Functions của AWS, nên note lại vài dòng, hi vọng anh em bỏ qua nếu không thích nhé.
Cái guide đó là https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-creating-activity-state-machine.html (Step Functions bài hướng dẫn Activity). Bài này dùng Java mà tỉ năm mình chưa update bọn Java, Maven hay Eclipse trên máy nữa á. Ngồi setup vài tiếng chỉ để code vài dòng thì thật là điên, nên mình đã húp mì như sau:
Problem 1: Version SDK nào, 8 hay 11?
Mọi IDE/tool tủng của mình đang chạy Java 8, mà xem qua Github thì AWS SDK cho Java 8 chưa hỗ trợ StepFunctions thì phải. Nhưng có cơ hội rất lớn là dùng SDK 11 nó vẫn chạy, nên mình cài đặt thế này:
- Tạo một thư mục ví dụ ~/java-sdk, mục đích là tách biệt cái SDK này ra dùng riêng, tránh ảnh hưởng đến các project khác.
- Download zip (aws) sdk 11 và extract.
- Với third-party, bài này dùng jackson fasterxml: down jar từ Maven repo.
- Cuối cùng, để build và run code java thì dùng lệnh javac / java chỉ định rõ classpath, (may mắn là) chạy ngon.
Problem 2: Lỗi authenticate
Mình đã config IAM secret và trước giờ chạy AWS CLI chả gặp vấn đề gì, thế mà bạn Java SDK lại dẹo. Một lỗi gì đó liên quan đến named profile á, thôi vội lắm chả tìm hiểu làm gì. Export AWS_ACCESS_KEY_ID và AWS_SECRET_KEY, xong.
(Sau khi quay lại nhìn code kĩ hơn thì ra nó đang build client với .withCredentials(new EnvironmentVariableCredentialsProvider())
, thảo nào!)
Và tất nhiên một vài problem nho nhỏ khác, có lẽ mình note vài tip bé xiu cũng có ích:
- Bạn có thể download jar trực tiếp từ Maven Central Repo mà không cần tạo project và viết file pom. Quan sát trang web Maven một chút là bạn sẽ tìm ra cách nhé.
- Để chỉ định classpath trong lệnh javac hay java, dùng option -cp ví dụ
javac -cp ~/java-sdk/aws-java-sdk-1.11.847/lib/aws-java-sdk-1.11.847.jar:~/java-sdk/aws-java-sdk-1.11.847/third-party/lib/*:~/java-sdk/*:. GreeterActivities.java
(để wildcard, viết * chứ không phải*.jar
). - Để khám phá nội dung của jar bằng lệnh unzip, bạn dùng option -l (list mà không bung ra), ví dụ mình kiểm tra cái jar này có chứa class TreeNode hay không:
unzip -l jackson-core-2.11.2.jar | grep TreeNode
Vậy đó! Mình đã hack được kha khá thời gian để còn tập trung vào tìm hiểu Activity là gì, Worker là cái chi và có thể design chúng ra sao nữa chứ. Tất nhiên nếu bạn quan tâm đến code Java nhiều hơn và muốn làm gì cũng phải thật thành thạo thì hãy bỏ công xem xét các chi tiết chứ đừng húp mì nhiều quá nha.
Thân, from Châu D9
Cho mình hỏi cấu hình máy tối thiểu để có thể sử dụng AWS với ạ!
Mình dùng Windows 10.