Nhật ký xử lý sự cố

Thứ đã cứu vãn cuộc đời mình

For everyone having the same issue. I have found a solution that works for me. None of the other solutions here and in the web helped me. 

1. Follow the following steps in this solution: https://stackoverflow.com/questions/39144688/aws-lambda-invoke-not-calling-another-lambda-function-node-js
2. Additional to that do the following: VPC Dashboard > Route Tables > click on one of your Route Table > click on Subnet Associations > click Edit > for each of your Route Table (public, or private) select the appropriate subnet (public, or private) and save. Do this step for each of your 2 Route Table. 
3. Go to your lambda function, then configure the Subnets in Configuration to your private Subnet. This is the only one you need. And you are now able to invoke the other lambda function outside the vpc.

Chém vậy thôi nhưng thực ra là cũng gần như thế, không làm được là bị (anh Phương) quẩy tưng bừng. Mà đọc hướng dẫn các kiểu làm theo, không thấy hiệu quả gì cả.

Ban đầu, hệ thống có mysql, redis. Redis ở AWS bắt buộc phải ở trong VPC mới kết nối được, thế là Lambda trong cùng VPC với Redis thì ok, nằm ở VPC khác hoặc No VPC là timeout. Mình cấu hình mãi không sao cho Lambda đâm ra ngoài internet để kết nối sang mysql được. Bực quá, quẫn chí, tạo luôn mysql khác, nằm cùng VPC với Redis, thế là kết nối ngon.

Sang ngày hôm sau, sếp yêu cầu kết nối tới SNS để gửi SMS tới điện thoại, mysql và SNS để No VPC thì ok rồi. Lại thêm SES để gửi email, No VPC vẫn ok. Vậy là 3 ông mysql, SNS, SES để No VPC là ngon lành. Sếp yêu cầu kết nối thêm cả Redis vào, hì hục cấu hình, đọc đi đọc lại hướng dẫn, tài liệu. Éo làm sao kết nối được, toàn timeout. Điên hết người. Thôi bảo sếp: anh muốn nhanh thì làm 2 lambda đi, một cái kết nối tới Redis và mysql, để ở trong VPC, check xong thì gọi sang cai lambda thứ hai, để ở ngoài VPC để gọi tới SNS và SES. Sếp bảo ĐẾU, phức tạp thế ai mà làm. Ờ cũng phải. Thôi thử tạo VPC mới đúng theo chúng nó hướng dẫn xem có ăn không nào (mình trước giờ là sửa đổi cái VPC hiện tại đã có sẵn). Tạo mới VPC rồi cấu hình thì lại kết nối được VPC ra ngoài internet mới ghê. Ah đây rồi, vậy là hướng dẫn nó đúng đắn, có tương lai rồi, không phải là hướng dẫn bố láo (hoặc AWS đã đổi). Hì hục quan sát kĩ hai cái VPC xem khác nhau ở chỗ khỉ nào mà sao cái cũ không ra internet được, cái mới lại ra được.

Rút cục thì cũng tìm ra chân trời. Vi diệu đừng hỏi luôn. Thôi không nói đâu. Cái gì mình giỏi thì không làm miễn phí – Tùng Hà bảo thế = ))

 

How to backup your last time with Xiaomi camera

I bought a Xiaomi camera, with 32GB microSD, it can record about 10 days, but it saves data to many folders, per folder has many files, the length of file less than 60 seconds. When I backup data from microSD to hard disk, it is difficult to watch because I must open file many many time.

So, I want to merge all file in the folder to one file and upload to youtube to easy to access. I have to code something.

The first, I install FFmpeg to my Mac, it is not easy as installing FFmpeg on Ubuntu, but I did. That’s ok, FFmpeg saves my life :p. This is my code:

Gán quyền một bucket cho một user

Gán quyền loằng ngoằng trên giao diện (console), thấy nó ghi full quyền rồi mà khi làm việc với thư mục con lại lỗi, hoá ra full quyền trên giao diện mới được như này:

{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “Stmt1491906008000”,
“Effect”: “Allow”,
“Action”: [
“s3:*”
],
“Resource”: [
“arn:aws:s3:::kamaxuta”
]
}
]
}

Phải sửa thành như này mới thực sự full quyền:

{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “statement1”,
“Effect”: “Allow”,
“Action”: [
“s3:GetBucketLocation”,
“s3:ListAllMyBuckets”
],
“Resource”: “arn:aws:s3:::*”
},
{
“Sid”: “Stmt1491906008000”,
“Effect”: “Allow”,
“Action”: [
“s3:*”
],
“Resource”: [
“arn:aws:s3:::kamaxuta”,
“arn:aws:s3:::kamaxuta/*”
]
}
]
}

 

Thay đổi kiến trúc hệ thống

Nghe có vẻ hầm hố, chả là hồi trước mình có viết một cái chrome extention để mỗi lần mở tab mới sẽ hiện ảnh một em gái xinh xinh. Hồi ấy làm ở VP9 nên dùng chùa server của VP9, sau đó nghỉ VP9 thì mua một cái VPS ở azdigi giá 170k/tháng để làm server crawl cũng như nghịch linh tinh.

Continue reading “Thay đổi kiến trúc hệ thống”

Update row in mongodb

Database TEST có một COLLECTION tên là IMAGES
Có một trường dữ liệu là URL, các url bắt đầu với 65.media và 67.media bị lỗi, phải sửa thành 66.media thì mới show được ảnh ra.
Với oracle hay mysql thì 30s là xong ngay.
Nhưng với ông mongodb này thì phải mày mò gần 30p, rút cục cũng update được:

db.images.find({url:/65.media/i}).forEach(function(e,i){ e.url=e.url.replace(“//65.media”,”//66.media”); db.images.save(e); });

Build a service with AWS Lambda and API Gateway

https://gofore.com/en/going-serverless-with-amazon-s3-and-lambda/

https://www.import.io/post/using-amazon-lambda-and-api-gateway/

https://blog.mitocgroup.com/building-scalable-web-apps-with-aws-lambda-and-home-grown-serverless-web-framework-e04c912d08f0#.pu0eolxh0

https://cloudofficer.co/adding-dynamic-functionality-to-your-static-website-using-aws-lambda-and-api-gateway/

View story at Medium.com

Bài hay: https://kennbrodhagen.net/2016/01/31/how-to-return-html-from-aws-api-gateway-lambda/

https://neo4j.com/blog/neo4j-aws-lambda-api-gateway-recommendation-engine/
http://blog.michaelschmatz.com/2016/04/02/how-to-build-an-image-host-using-aws-lambda-s3-and-dynamo/
http://readwrite.com/2015/11/16/how-to-build-an-api-amazon-lambda/
https://cloudnative.io/blog/2015/05/lambda-chat/
http://www.nethram.com/aws-lambda-tutorial-step-by-step-instructions-to-create-a-scalable-web-application-part-2/
http://www.bebetterdeveloper.com/coding/architecture/serverless-system-architecture-using-aws.html

Thành tựu

Thành tựu số 01: Hôm nay mình đã thực hiện buổi học đầu tiên với giáo viên tiếng anh người … Ukraina.

Chuyện học ở Preply.com: Tiếc tiền nên search ra một loạt các giáo viên 2$/h rồi gửi request, nhắn nhủ kiểu “hey, tao muốn học tiếng anh”. Cắm đầu cắm cổ không để ý một checkbox rất bé có nội dung là “cc cho tất cả các giáo viên nội dung tin nhắn này”. Thế là nhận được hàng loạt lời mời học của các giáo viên 10, 13, 15$/h, huhu, thích lắm cơ mà học giá đó tiếc quá. Phải vào từ chối cả loạt. Cơ mà có một cô giáo ở Kiev lại nhắn tin khá tận tình, bảo là “mày chê 10$ đắt thì mấy $ mầy học?” Mình nhắn lại là “5$ thì tao sẽ học”. Cô giáo bảo “ok, thế tao đặt giá cho mày 4$, học thử đi”. Ngon, tiến hành luôn. Hẹn cô giáo từ hôm qua, hồi hộp phết, nhưng hóa ra cũng không đáng sợ như mình tưởng. Học mới thấy vốn từ kém quá, muốn hỏi mà không nghĩ ra từ mà hỏi, nói chuyện thời tiết thì không nghĩ ra từ “tuyết” là gì để khoe là Việt Nam cũng có tuyết :)) Phát âm thì tệ không tả nổi :)) Ok ok, cố lên. Đi được bước đầu tiên rồi, chăm chỉ học từ và tập phát âm từng từ một, học tầm 10 buổi chắc là khá khẩm hơn, 20 buổi chắc là sẽ đủ dũng khí đi phỏng vấn bằng tiếng anh :))

Thành tựu số 02: Viết thêm được một extension nữa :v

Do nhu cầu học từ vựng để đọc sách, nói chuyện, đọc tài liệu, thi TOEIC, mình tìm các extension cho chrome xem có cái nào giúp học từ tiện lợi. Vì sao cứ chrome extension hoài vậy? Một ngày 10 tiếng  ở cty thì khoảng 6 tiếng mình nhìn vào màn hình chrome, new tab khoảng 100 lần hoặc hơn. Thế nên chrome và newtab gần như thế giới của mình :)) Mỗi lần newtab nhìn thấy một từ mới chả hơn là nhìn thấy cái ô facebook (recent tab) à? À nhìn các em xinh thì cũng thích đấy nhưng thời điểm này anh phải tập trung nguồn lực để lấy số với đời các em nhé, đợi anh có thông thạo tiếng anh thì sẽ lại dùng random beautiful girls.

PS: Tại sao nên dùng chrome? Vì chrome dùng đa tiến trình (multi process), tận dụng được các cpu đa nhân, firefox trời ơi vẫn dùng đơn tiến trình, hôm nọ đọc báo mới biết điều đó, thảo nào chrome tuy tốn ram nhưng mượt hơn firefox.

PS2: Cái newtab newword này lấy cảm hứng từ Magoosh Vocabulary, thiết kế của nó rất tinh tế dễ chịu, lại có cả phát âm, mình chưa đạt tới trình độ đó, nhưng có ưu điểm là có nghĩa tiếng Việt, hê hê. Dễ nhớ hơn.

Thôi đi ngủ cái đã.