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

Vừa giải trí lành mạnh – Vừa nâng tầm thương hiệu quốc gia

Ủa việc gì nghe kì cục vậy, vừa xem phim vừa làm tăng uy tín của Việt Nam hả?

Gần đúng rồi đó: Thi code kiểu chơi game tại codefight.com (đăng kí bằng link này  thì mình sẽ được tặng điểm giới thiệu :))

Vào đây sẽ có rất nhiều trò để chơi:  Continue reading “Vừa giải trí lành mạnh – Vừa nâng tầm thương hiệu quốc gia”