---
# System prepended metadata

title: aws note

---

1. IAM
	+ IAM user : 
		- tạo ra các accessKey vĩnh viễn
		- bao gồm các policy cấp quyền cho IAM user
	+ IAM role : 
		- tạo ra các accessKey vĩnh viễn
		- bao gồm các policy cấp quyền cho các service
		
2. Ec2
- các mô hình giá:
	+ on-demand: tính tiền theo thời gian sử dụng, có tính linh hoạt cao và phù hợp cho ứng dụng thay đổi liên tục hoặc ứng dụng chạy trong khung giờ nhất định
	+ Reserved instance 
		- saving plan : ứng dụng có độ ổn định cao, hoạt động với khối tài nguyên nhất định trong 1 tg dài
		- sự khác nhau: Reserved instance: cam kết sử dụng 1 máy ảo nhất định và k thể thay đổi máy ảo dù đang có nhu cầu thay thế 1 cái lớn hơn Savings plan: cam kết 1 số tiền sẽ sử dụng, ví dụ như 2 đô/h để sử dụng cái máy chủ khác nhau sao cho đúng giá là đc
		- lưu ý: cần xác định rõ nhu cầu sử dụng trc khi cam kết sử dụng vì nếu sử dụng ít hơn thì vẫn sẽ phải trả từng đó tiền
	+ spot instance: ứng dụng phải có khả năng chịu lỗi, vì aws có thể thu lại bất cứ lúc nào nên giá sẽ thấp nhất lên đến 90% on-demand
3. Elastic load balancer
	+ ALB(application load balancer) 
		- các giao thức sử dụng là: HTTP, HTTPS, gRPC
		- các đối tượng sử dụng: IP, Instance, lamda
		- vì ở layer cao nhất nên có nhiều tính năng thông minh
									 
	+ NLB(Network load balancer)	 
		- các giao thức sử dụng là:  TCP, UDP, TLS
		- các đối tựng sử dụng là: IP, Instance, application load balancer
		- không thể hiểu được gói tin ở layer cao vì layer thấp bù lại thời gian xử lý nhanh với độ trễ nhỏ
		- chỉ duy nhất NLB hỗ trợ Elastic ip còn lại thì cung cấp domainName
									 
	+ GLB(getway load balancer)		
		- các giao thức hỗ trợ: IP
		- không mang nhiều tính năng building nhưng có khả năng tích hợp các phần mềm ở bên thứ 3, đẩy tất cả các gói tin đi qua nó vào phần mềm này trước khi chuyển gối tin đến máy ảo mục tiêu
4. Ec2 auto scaling
	+ Benefit : tăng khả năng chịu lỗi, tăng tính sẵn sàng của ứng dụng, chi phí thấp
	+ launch template: tự động khởi tạo các EC2 Instance giống hệt nhau theo template
	+ từ launch template sẽ tạo ra 1 auto scaling group có số lượng máy ảo EC2 với giới hạn dưới, giới hạn trên và số máy khởi điểm do mình config
	+ health check: kiểm tra sức khỏe ứng ụng bằng cách gửi liên tục http requests và kiểm tra phản hổi
	+ scaling policies: 
		- dynamic scaling 
			1. simple/step scaling: ví dụng nếu CPU ứng dụng vượt ngưỡng 60% thì sẽ tự động add thêm máy ảo
			2. target tracking: muốn giữ mức TB CPU của tất cả các máy ảo là 30% thì aws sẽ tự động thay đổi sống lượng máy ảo để duy trì ngưỡng thông số đó
			3. schedule scaling: sẽ tự động tăng giảm số lượng máy ảo vào các khung giờ cố định
			4. predictive scaling: dự đoán sự thay đổi thông số để có thể scaling nhanh hơn
	+ sử dựng ELB trong auto scaling group: endpoint duy nhất tiếp nhận request và chia đều choc ác máy ảo, khi máy ảo mới đc tạo ra thì nó sẽ tự động đăng kí với ELB, hoặc tự động remove khi gặp sự cố
	+ vì ELB và auto scaling group có cơ chế health check riêng, vì vậy nên cài đặt health check ASG theo ELB thay vì mặc định
	
5. các dịch vụ lưu trữ của AWS
	+ 3 nhóm chính : Block Storage, File system, Object Storage
		- block storage(BS):
			1. dữ liệu như file,vv.. sẽ được chia thành các khối hay block có kích thước bằng nhau, vì vậy khi chỉnh sửa file, BS chỉ cần cập nhật các khối chứa phần dữ liệu thay đổi, hệ điều hành và các phần mềm được cài đặt trên BS. Ví dụ là EBS: dịch vụ lưu trữ chính được sử dụng với EC2
			2. thường chỉ có thể sử dụng trên 1 máy tính duy nhất vào 1 thời điểm, vì vậy khi muốn chia sẻ dữ liệu với các máy ảo chúng ta sử dụng File system
		- File system(ST): 
			1. tổ chức dữ liệu dưới dạng cây thư mục và cho phép kết nối đến nhiều máy ảo EC2 khác nhau cùng 1 lúc.
			2. EFS: dịch vụ hỗ trợ giao thức NFS thường được sử dụng trên máy chủ linux
			3. FSx: dịch vụ hỗ trợ giao thức smb sử dụng cho các máy chủ window
			4. FSx for lustre: sử dụng cho ứng dụng lớn với hiệu năng đọc ghi lớn
		- Object storage: 
			1. tiêu biểu là s3, không thể chỉnh sửa 1 phần mà phải xóa cái cũ đi và tải lên cái mới, vì vậy nên Object Storage không được lưu trữ các dữ liệu thay đổi thường xuyên, sử dụng giao thức http hoặc https
6. các dịch vụ di chuyển dữ liệu
	+ chia làm 4 nhóm:
		- di chuyển dữ liệu online và di chuyển object: 
			1. aws DataSync: thiết kế giúp di chuyển dữ liệu giữa các nguồn lưu trữ khác nhau, bao gồm các máy chủ on premises, 
				các dịch vụ cloud trong aws
				* tích hợp dễ dàng: đc tích hợp chặt chẽ với nhiều dịch vụ aws khác, cho phép di chuyển dữ liệu giữa các lựa chọn lưu trữ s3, EFS, FSx
				* tốc độ cao
				* bảo mật : mã hóa dữ liệu trong quá trình truyền tải
				* điều khiển và theo dõi: theo dõi quá trình sao chép và đồng bộ hóa dữ liệu thông qua aws management console hoặc api
				* khả năng mở rộng: cho phép tùy chỉnh sao chép dữ liệu và tự động mở rộng để xử lý các khối công việc thậm chí di chuyển dữ liệu giữa các khu vực aws khác nhau
			2. aws Transfer Family: cung cấp các giải pháp để di chuyển và quản lí dữ liệu trực tuyến thông qua giao diện SFTP(secure file transfer protocol) hoặc FTPS (FTP Secure)
				* tự động hóa việc quản lý và di chuyển dữ liệu giữa các máy chủ và lưu dữ liệu trong môi trường cloud.
				* có 2 phần chính: AWS Transfer for SFTP và AWS Transfer for FTPS, đều cùng cấp 1 máy chủ ảo có thể kết hợp với s3 hoặc EFS để lưu trữ và quản lý dữ liệu chỉ khác giao diện
			3. aws S3 Transfer Acceleration: cho phép truyền tập tin một cách nhanh chóng, dễ dàng và bảo mật qua khoảng cách lớn giữa máy khách và vùng lưu trữ Amazon S3 của bạn
				* S3 Transfer Acceleration tận dụng vị trí biên AWS được phân phối toàn cầu của AWS CloudFront
				* Khi dữ liệu đến một Vị trí biên AWS, dữ liệu được hướng tới bộ chứa Amazon S3 của bạn qua một đường dẫn qua mạng đã được tối ưu hóa.
		- sử dụng aws storage getway: di chuyển và tích hợp dữ liệu từ môi trường nội bộ(on premises) đến aws và ngược lại
			1. File getway: tích hợp dữ liệu từ các hệ thống NAS nội bộ vào s3 hoặc S3 glacier
			2.Volume getway: liên kết dung lượng ảo với aws EBS để mở rộng dung lượng ứng dụng. Có thể sao lưu và lưu trữ trong s3
			3. Tape getway: giúp sao lưu và lưu trữ dữ liệu trên băng từ ứng dụng nội bộ vào s3 và aws glacier. Giúp quản lý dữ liệu lâu dài và tuân theo yêu cầu bảo mật
		- di chuyển offline: cung cấp thiết bị vật lý(AWS snowball, AWS snowCone, AWS Snowmobile) để khách hàng sao chép dữ liệu vào và gửi lại cho aws
		- cung cấp đường chuyền vật lý kéo thẳng từ trung tâm dữ liệu của khách hàng đến region của aws (aws direct connect)

7. EBS:
	+ được khởi tạo khi khởi tạo Ec2 hoặc tạo riêng rồi gắn vào ec2
	+ cung cấp hiệu năng rất cao, lên tới 256000 iops
	+ dễ sử dụng
	+ tính sẵn sàng và độ bền lên tới 99,999%
	+ cung cấp khả năng backup dữ liệu, mã hóa tránh dữ liệu bị mất cắp
	+ không giới hạn dung lượng lưu trữ từ vài GB -> vài TB dữ liệu
	+ các trường hợp sử dụng EBS
		- lưu trữ dữ liệu cho các ứng dụng doanh nghiệp
		- hệ cơ sở dữ liệu quan hệ hoặc phi quan hệ
		- big data: Kafka, Hadoop...
		- lưu trữ file
	+ được chia thành 2 nhóm chính là SSD và HDD
				- SSD: 
					1. hiệu năng cao hơn và giá thành cao hơn
					2. gồm 2 dòng chính là General Purpose và Provisioned IOPS
							* General purpose: gồm 2 dòng gp2 và gp3, gp3 mới hơn cung cấp hiệu năng cao hơn và giá tốt hơn (ưu tiên dùng dòng mới hơn)
							* Provisioned IOPS: gòm 2 dòng là io1 và io2, io2 mới hơn
				- HDD: 
					1. gồm 2 dòng chính là Thoughput Optimized HDD (st1) và Cold HDD (sc1)
	+ sử dụng EBS snapshot để backup dữ liệu tại 1 thời điểm nào đó
				- có thể tự động hoặc thủ công
				- sử dụng cơ chế increasemental back up: nghĩa là lần đầu tiên EBS snapshot sẽ sao lưu toàn bộ dữ liệu, còn những lần tiếp theo sẽ chỉ sao lưu phần dữ liệu thay đổi những thay đổi để giảm dung lượng lưu trữ những snapshot. Những snapshot này sẽ được chuyển vào s3 để lưu trữ
				- cung cấp tính năng quản lý vòng đời các phiên bản snapshot tự đông tên là Data life Manager (DLM), nó sẽ tự động chuyển các bản snapshot cũ vào các lơp lưu trữ ít sử dụng của s3, cũng như xóa các bản snapshot quá cũ tự động để tiết kiệm chi phí
				- lưu ý: khi xóa 1 bản snapshot, bản chất EBS sẽ cộng dồn dữ liệu của bản snapshot đó vào bản snapshot kế sau nó
	+ các ổ đĩa EBS sẽ tách biệt với Ec2 và kết nối với ec2 qua mạng nội bộ
				- ưu điểm là sẽ có tính linh hoạt cao và khả năng mở rộng cao
				- nhược điểm là độ trễ khi đọc ghi sẽ tăng lên
				- nếu muốn giảm độ trễ nữa thì sử dụng Ec2 instance store, là loại ổ đĩa gắn liền với thiết bị vật lý của Ec2 tuy nhiên
					1. không phải máy ảo Ec2 nào cũng hỗ trợ Instance store
					2. Ec2 instance store chỉ có thể sử dụng để lưu trữ dữ liệu tạm thời
					3. nếu máy chủ vật lý của Ec2 bị disater thì coi như mất dữ liệu
					4. Instance store k thể tách ra và gắn vào máy ảo khác

8. S3
	+ Mã hóa :  
		- Trên đường truyền (Encryption in transit): giao thức sử dụng HTTPS/TLS
		- Tại nơi lưu trữ (Encryption at rest): 
			1. Server side: (phía máy chủ)
				* SSE-S3(amazon s3 managed keys): quản lý hoàn toàn bởi s3 tự động
				* SSE-KMS (AWS Key Manager Service): tự tạo ra key và quản lý trên service KMS, nên ngoài việc phải có quyền truy cập s3 còn phải khóa KMS
				* SSE-C (customer-provided keys): sử dụng các công cụ quản lý khóa mã hóa của riêng mình có thể ở ngoài hoặc trong aws, khi muốn tải vào s3 cần đính kèm khóa, s3 sẽ tự động dùng khóa đó để mã hóa trc khi lưu, còn khi get ra cần gửi thêm khóa giải mã
			2. Client side: (phía client): tự quản lý khóa mã hóa và mã hóa dữ liệu trc khi đưa vào s3, s3 cung cấp aws Encryption SDK để support việc đó
	+ Kiểm soát truy cập: 
				- IAM user policy: khó quản lý nếu như có rất nhiều người dùng với các policy khác nhau cùng có quyền truy cập s3, chưa nói đến nếu thay đổi policy thì sẽ phải thay đổi hết.
				- S3 bucket policies: để quản lý tập trung quản truy cập vào s3 bucket, gắn vào bucket
				- S3 Access Control Lists (ACLs): kém linh hoạt vì hoạt động ở mức object không phải bucket
	+ Access point: 
				- Nhược điểm khi sử dụng S3 bucket policies để quản lý tập trung:
					1. mỗi nhóm người dùng có chính sách phân quyền khác nhau, khi có thay đổi trong cách phân quyền của 1 nhóm mà có policy chung có thể gây ảnh hưởng đến các nhóm người dùng khác
					2. bucket policy có giới hạn độ dài nên nếu có quá nhiều người dùng thì bucket policy có thể vượt quá độ dài cho phép
				- để giải quyết vấn đề thì sẽ dùng S3 Access point:
					1. cơ bản mỗi access point sẽ là 1 end point riêng biệt với bucket policy riêng biệt
					2. có thể tạo ra nhiều access point cho nhiều nhóm người dùng khác nhau với mỗi bucket policy riêng biệt
					3. => access point cho phép phân nhóm người dùng + bucket policy
	+ các lớp lưu trữ:
				- s3 standard : là default nếu k chỉ định, cung cấp độ bền dữ liệu, tính sẵn sàng và hiệu năng cao nhất PHÙ HỢP VỚI DỮ LIỆU CÓ TẦN SUẤT SỬ DỤNG CAO, lưu giữ >= 3 AZ
				- s3 standard-IA (IA: Infrequently accessed): giống s3 standard nhưng có tần suất truy cập thấp hơn, khác ở chỗ chi phí lưu trữ thấp hơn nhưng chi phí cho mỗi lượt truy cập lại nhiều hơn
				- s3 One Zone-IA: dữ liệu chỉ được lưu giữ trên 1 AZ, vẫn đc thiết kế đáp ứng độ bền dữ liệu và hiệu năng nhưng hi sinh tính sẵn sàng nên giá thành rẻ hơn
				- S3 Glaier: k thể truy cập dữ liệu ngay lập tức mà cần có 1 khoảng TG để rã đông (vài phút -> vài h) chỉ được sử dụng với các loại dữ liệu có tần suất truy cập rất thấp ví dụ như dữ liệu backup ít khi dùng tới.
				- S3 Glaier deep Archive: giống như S3 Glaier nhưng tần suất truy cập còn thấp hơn
				- Amazon S3 Intelligent-Tiering: nếu k thể biết được dữ liệu có tần suất như nào, nó sẽ tự động luân chuyển dữ liệu tự động mà k ảnh hưởng đến hiệu năng
				- S3 lifecycle : 
					1. dùng để luân chuyển dữ liệu giữa các lớp s3 nếu các dữ liệu có sự thay đổi tần suất truy cập rõ ràng
					2. cho phép thay đổi lớp lưu trữ hoặc xóa object theo từng mốc TG nhất định, VD: video từ camera an ninh
				- 