Các bước chuẩn bị

Các bước chuẩn bị

Trường hợp của chúng ta mô phỏng sử dụng mẫu dữ liệu bán hàng thực tế và được xử lý qua Kinesis stream và được ghi vào ElasticSearch nơi chúng ta có thể phân tích dữ liệu bán hàng bằng đồ thị với Kibana. Dữ liệu bán hàng sẽ được đọc từ tệp CSV và có chi phí, số lượng và ngày giao dịch được áp dụng ngẫu nhiên. Kiến trúc trông như thế này: Prequistite

Tạo một kho lưu trữ mới cho mã nguồn Kinesis Consumer

  1. Truy cập AWS CodeCommit console.
  • Click Repositories
  • Click Create repository Prequistite
  1. Trong trang Create repository
  • Tại mục Repository name, nhập KinesisConsumer
  • Tại mục Description, nhập Sample application that consumes messages from a Kinesis stream and writes them to an ElasticSearch domain index
  • Click Create Prequistite
  1. Trong trang KinesisConsumer, click Clone URL
  • Click Clone HTTPS để lưu lại url Prequistite
  1. Trong Eclipse IDE, click Window
  • Click Perspective
  • Click Open Perspective
  • Click Other Prequistite
  1. Trong phần Open Perspective, click Git
  • Click Open Prequistite
  1. Click Clone a Git repository Prequistite
  2. Trong phần Source Git Repository
  • Tại mục URI, nhập url đã lưu trong bước 3 Prequistite
  1. Truy cập Amazon CloudFormation Console.
  • Click Stacks
  • Nhập DevAx-05 vào ô tìm kiếm, nhấn Enter
  • Click DevAx-05 Prequistite
  1. Click tab Output
  • Lưu lại thông tin GitUserNameGitPassword Prequistite
  1. Trong Eclipse IDE, điền thông tin UserPassword đã lưu trong bước 9
  • Click Next Prequistite
  1. Click Next Prequistite
  2. Click Finish Prequistite
  1. Tải file KinesisConsumer.zip và giải nén
  • Sao chép nội dung của tập tin zip đã giải nén sang vị trí nơi bạn đã sao chép kho KinesisConsumer về.
  1. Trong Eclipse IDE, Click File
  • Click Open projects from filesystem… Prequistite
  1. Chọn đường dẫn đến project KinesisConsumer
  • Click Finish Prequistite
  1. Mở file KinesisConsumer\src\main\java\idevelop\demo\config.java Prequistite
  2. Truy cập Amazon CloudFormation Console.
  • Click Stacks
  • Nhập DevAx-05 vào ô tìm kiếm, nhấn Enter
  • Click DevAx-05 Prequistite
  1. Click tab Output
  • Lưu lại thông tin ElasticsearchEndpoint Prequistite
  1. Trong Eclipse IDE, thay thế REPLACE_WITH_YOUR_ELASTIC_SEARCH_ENDPOINT bằng ElasticsearchEndpoint đã lưu ở bước 18
  • Tại mục REGION, thay ap-southeast-2 bằng Region code của bạn
  • Lưu lại Prequistite
  1. Mở Command Prompt và chuyển đường dẫn đến project KinesisConsumer
  • Chạy lệnh dưới đây để tạo một branch master mới
git checkout -b master

Prequistite 21. Chạy lệnh dưới đây để thêm các tập tin mới vào kho lưu trữ

git add .

Prequistite 22. Chạy lệnh dưới đây để commit tập tin mới

git commit -m "Initial commit"

Prequistite 23. Trong Eclipse IDE, chuột phải vào kho dữ liệu KinesisConsumer

  • Click Push Branch `master`… Prequistite
  1. Nhập thông tin UserPassword đã lưu trong bước 9 vào mục UserPassword
  • Click Login Prequistite
  1. Click Preview Prequistite
  2. Click Push Prequistite
  3. Truy cập AWS CodeCommit console.
  • Click Repositories
  • Nhập KinesisConsumer vào ô tìm kiếm
  • Click KinesisConsumer Prequistite
  1. Bạn sẽ thấy các tập tin mà bạn đã thêm vào kho lưu trữ được liệt kê trong giao diện trình duyệt. Prequistite

Sao chép kho lưu trữ vào Kinesis Consumer EC2 instance

Trong thiết lập bài thực hành đã cung cấp một EC2 instance để bạn chạy với tư cách Consumer trong tình huống này. Bây giờ bạn sẽ kết nối với EC2 instance, sao chép kho lưu trữ về, build và chạy chương trình Consumer.

Để kết nối an toàn với cơ sở hạ tầng đám mây của bạn, bạn sẽ sử dụng SSH. SSH yêu cầu một cặp public/private key-pair được thiết lập và cài đặt trên máy client và server sẽ giao tiếp thông qua giao thức SSH. Các EC2 instance đã được khởi chạy với một public key. Bạn cần truy xuất private key để có thể sử dụng khóa đó để thiết lập kết nối an toàn.
Hãy đảm bảo bạn đã có key-pair được thiết lập khi triển khai CloudFormation. Lưu tập tin khóa này trên máy của bạn.

  1. Mở Command Prompt và chạy lệnh dưới đây
chmod 400 <path to your key-pair file>

Prequistite 30. Chạy lệnh dưới đây

ssh -i <path to your key-pair file> ec2-user@<EC2InstanceKinesisConsumer>

Thay <EC2InstanceKinesisConsumer> bằng giá trị EC2InstanceKinesisConsumer trong tab Output của stack DevAx-05

Prequistite 31. Chạy lệnh dưới đây

git clone https://git-codecommit.<your_region>.amazonaws.com/v1/repos/KinesisConsumer

Thay <your_region> bằng Region của bạn

  • Nhập UserPassword đã lưu trong bước 9 vào mục UsernamePassword Prequistite
  1. Chạy lệnh dưới đây
cd KinesisConsumer
/opt/apache-maven-3.3.9/bin/mvn package shade:shade

Prequistite 33. Sẽ mất một chút thời gian để build mã nguồn ứng dụng. Prequistite 34. Khi quá trình build hoàn tất, chạy ứng dụng Kinesis Consumer bằng lệnh:

java -jar target/KinesisConsumerApp-1.0.0.jar

Prequistite Ứng dụng sẽ khởi động và chờ các sự kiện được gửi vào Kinesis stream. Bạn sẽ không thấy lỗi nào và sau một lúc, đầu ra của bảng điều khiển sẽ hiển thị Sleeping… vì không có bản ghi nào trong luồng để xử lý: Prequistite

Tạo một kho lưu trữ mới cho mã nguồn Kinesis Producer

Bây giờ bạn sẽ lặp lại quá trình trên, lần này, tạo một kho lưu trữ cho ứng dụng Kinesis Producer và sao chép chúng vào Kinesis Producer EC2 instance. Sau khi hoàn tất, bạn có thể bắt đầu thử nghiệm truyền dữ liệu giữa hai máy thông qua Amazon Kinesis.

Quá trình tạo kho lưu trữ giống như các bước trước, nhưng chúng ta sẽ lặp lại nó ở đây để tiện theo dõi.

  1. Truy cập AWS CodeCommit console.
  • Click Repositories
  • Click Create repository
  1. Trong trang Create repository
  • Tại mục Repository name, nhập KinesisProducer
  • Tại mục Description, nhập Sample application that publishes sales events into a Kinesis stream
  • Click Create
  1. Trong trang KinesisProducer, click Clone URL
  • Click Clone HTTPS để lưu lại url
  1. Trong Eclipse IDE, click Clone a Git Repository and add the clone to this view icon Prequistite
  2. Trong phần Source Git Repository
  • Tại mục URI, nhập url đã lưu trong bước 37
  1. Truy cập Amazon CloudFormation Console.
  • Click Stacks
  • Nhập DevAx-05 vào ô tìm kiếm, nhấn Enter
  • Click DevAx-05
  1. Click tab Output
  • Lưu lại thông tin GitUserNameGitPassword
  1. Trong Eclipse IDE, điền thông tin UserPassword đã lưu trong bước 9
  • Click Next
  1. Click Next
  2. Click Finish
  1. Tải file KinesisProducer.zip và giải nén
  • Sao chép nội dung của tập tin zip đã giải nén sang vị trí nơi bạn đã sao chép kho KinesisProducer về.
  1. Trong Eclipse IDE, Click File
  • Click Open projects from filesystem…
  1. Chọn đường dẫn đến project KinesisProducer
  • Click Finish
  1. Mở file KinesisProducer\src\main\java\idevelop\demo\KinesisProducerApp.java Prequistite
  2. Tại dòng 69, thay AP_SOUTHEAST_2 bằng Region của bạn
  • Lưu lại Prequistite
  1. Mở Command Prompt và chuyển đường dẫn đến project KinesisProducer
  • Chạy lệnh dưới đây để tạo một branch master mới
git checkout -b master
  1. Chạy lệnh dưới đây để thêm các tập tin mới vào kho lưu trữ
git add .
  1. Chạy lệnh dưới đây để commit tập tin mới
git commit -m "Initial commit"
  1. Trong Eclipse IDE, chuột phải vào kho dữ liệu KinesisProducer
  • Click Push Branch `master`…
  1. Nhập thông tin UserPassword đã lưu trong bước 41 vào mục UserPassword
  • Click Login
  1. Click Preview
  2. Click Push
  3. Truy cập AWS CodeCommit console.
  • Click Repositories
  • Nhập KinesisProducer vào ô tìm kiếm
  • Click KinesisProducer
  1. Bạn sẽ thấy các tập tin mà bạn đã thêm vào kho lưu trữ được liệt kê trong giao diện trình duyệt.

Sao chép kho lưu trữ vào Kinesis Producer EC2 instance

  1. Mở Command Prompt và chạy lệnh dưới đây
chmod 400 <path to your key-pair file>
  1. Chạy lệnh dưới đây
ssh -i <path to your key-pair file> ec2-user@<EC2InstanceKinesisProducer>

Thay <EC2InstanceKinesisProducer> bằng giá trị EC2InstanceKinesisProducer trong tab Output của stack DevAx-05

61. Chạy lệnh dưới đây

git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
git clone https://git-codecommit.<your_region>.amazonaws.com/v1/repos/KinesisProducer

Thay <your_region> bằng Region của bạn

  • Nhập UserPassword đã lưu trong bước 41 vào mục UsernamePassword
  1. Chạy lệnh dưới đây
cd KinesisProducer
/opt/apache-maven-3.3.9/bin/mvn package shade:shade
  1. Sẽ mất một chút thời gian để build mã nguồn ứng dụng. Prequistite
  2. Producer cần dữ liệu nguồn và sẽ sử dụng một tập tin CSV trong thư mục làm việc hiện tại, được gọi là SalesData.csv
  • Chạy lệnh dưới đây để sao chép tập tin vào EC2 instance
wget https://workshops.devax.academy/monoliths-to-microservices/module5/files/SalesData.csv

Prequistite

Cấu hình mapping index cho ElasticSearch

Khi dữ liệu được gửi đến ElasticSearch, nó sẽ cố gắng suy ra các kiểu dữ liệu trong nội dung và thường thực hiện tốt việc xác định đúng các kiểu dữ liệu. Trong trường hợp của chúng ta, chúng ta đang gửi ngày/giờ của mỗi bản ghi bán hàng dưới kiểu long và vì vậy ElasticSearch sẽ diễn giải trường này chỉ là một số (kiểu long). Thay vào đó, chúng ta cần cảnh báo ElasticSearch rằng nó sẽ diễn giải trường dấu thời gian này là Date. Chúng ta thực hiện việc này bằng cách tạo các Mapping trong chỉ mục trước khi chúng ta gửi bất kỳ bản ghi nào. 65. Trên cửa sổ dòng lệnh, bạn có kết nối SSH tới Kinesis Consumer EC2 instance, Chạy lệnh dưới đây

curl -X PUT "https://<ElasticsearchEndpoint>/transactions/" -k -d '{
	"mappings": {
		"transaction": {
			"properties": {
				"timestamp": {
					"type": "date"
				},
				"productLine": {
					"type": "string"
				},
				"retailerType": {
					"type": "string"
				},
				"productType": {
					"type": "string"
				},
				"product": {
					"type": "string"
				},
				"quantity": {
					"type": "long"
				},
				"unitCost": {
					"type": "double"
				},
				"totalCost": {
					"type": "double"
				}
			}
		}
	}
}';
  1. Bạn sẽ nhận được thông báo {“acknowledged”:true} Prequistite