Cổng S3 hay điểm cuối giao diện cho một máy khách tại chỗ?
Các điểm cuối cổng sống trong bảng định tuyến và phục vụ lưu lượng VPC. Điểm cuối giao diện cấp cho đường đi tại chỗ một địa chỉ riêng, cùng với DNS và chính sách.
Việc tiếp cận S3 từ mạng văn phòng qua VPN site không phải là bài toán định tuyến mà một tuyến tĩnh có thể tự giải quyết. Điểm cuối cổng được gắn vào bảng định tuyến và phục vụ các yêu cầu phát sinh bên trong VPC. Điểm cuối giao diện đặt các giao diện mạng đàn hồi với địa chỉ riêng vào các subnet của bạn, và những địa chỉ đó có thể tiếp cận từ tại chỗ qua VPN hoặc Direct Connect. Nơi yêu cầu bắt đầu quyết định bạn thực sự cần cái nào trong hai cái, và công việc về DNS, nhóm bảo mật và chính sách tiếp nối từ câu trả lời đó.
Tách các loại điểm cuối theo nơi yêu cầu bắt đầu
Điểm cuối cổng xuất hiện như một mục trong bảng định tuyến trỏ tới danh sách tiền tố được quản lý. Nó không có giao diện mạng, không có nhóm bảo mật và không có địa chỉ riêng của chính nó, và chính vì vậy một máy chủ tại chỗ không thể định tuyến tới nó: phía bên kia không có gì để định tuyến tới. Lưu lượng từ bên trong VPC đến được S3 vì bảng định tuyến của subnet gửi tiền tố đó tới điểm cuối. Lưu lượng từ bất kỳ nơi nào khác không có mục như vậy để đi theo.
Điểm cuối giao diện là một tập hợp các giao diện mạng trong các subnet bạn chọn, mỗi giao diện có một địa chỉ riêng từ subnet đó và một nhóm bảo mật được gắn kèm. Đó là hình dạng mà một máy khách hybrid có thể dùng, vì nó là một đích thông thường mà đường hầm của bạn có thể mang gói tới. Điều đó cũng có nghĩa là điểm cuối tiêu thụ địa chỉ trong subnet và có thể cạn kiệt chúng.
aws ec2 describe-vpc-endpoints --query "VpcEndpoints[].{Id:VpcEndpointId,Type:VpcEndpointType,Service:ServiceName,State:State}" --output table
Đọc cột Type chứ không phải tên. Một VPC thường chứa cả hai loại cho cùng một dịch vụ, và mục mà ứng dụng tại chỗ của bạn cần là mục giao diện.
Xây đường đi tới địa chỉ giao diện trước khi kiểm tra S3
Ba điều phải đúng cùng lúc: bộ định tuyến tại chỗ có tuyến tới subnet của điểm cuối, đường quay lại từ subnet đó đến được mạng máy khách, và nhóm bảo mật của điểm cuối chấp nhận dải nguồn của máy khách. ACL mạng của subnet vẫn có thể bỏ gói sau khi cả ba điều kiện đã thỏa, vì vậy hãy kiểm tra nó như mục thứ tư chứ không phải suy nghĩ muộn.
Một tuyến hoạt động tới một phiên bản EC2 nào đó trong VPC không chứng minh điều nào trong số này. Nó chỉ cho thấy đường hầm đang lên, đó là phần duy nhất của đường đi mà bạn đã biết. Hãy chứng minh địa chỉ điểm cuối riêng rẽ, rồi chứng minh rằng tên phân giải tới nó.
ip route get 10.60.4.37 nc -vz 10.60.4.37 443 openssl s_client -connect 10.60.4.37:443 -servername bucket.vpce-0123456789abcdef0-abc123.s3.us-east-1.vpce.amazonaws.com </dev/null
Lệnh đầu tiên cho thấy máy khách sẽ dùng giao diện nào. Lệnh thứ hai chứng minh bắt tay TCP. Lệnh thứ ba chứng minh TLS hoàn tất với chứng chỉ hợp lệ cho tên điểm cuối, và đó là phép kiểm tra bắt được địa chỉ sai trước khi bạn đổ lỗi cho quyền.
Quyết định câu trả lời DNS mà ứng dụng nhận được
Việc một điểm cuối giao diện tồn tại trong VPC không tự chuyển hướng một SDK tại chỗ. Máy khách hoặc dùng tên riêng cho điểm cuối mà AWS công bố cho điểm cuối đó, hoặc dùng một vùng được lưu trữ riêng mà bạn đã cố ý làm cho có thể phân giải từ văn phòng.
Để phân giải hybrid, bộ phân giải tại chỗ cần một đường được hỗ trợ vào chế độ xem DNS của VPC, thường qua một điểm cuối đầu vào của Resolver. Bật DNS riêng mà không hiểu nó ảnh hưởng tới những nguồn truy vấn nào là cách một lần tra cứu bắt đầu trả về địa chỉ mà văn phòng không tiếp cận được. Cài đặt này thay đổi câu trả lời cho các truy vấn đi qua bộ phân giải của VPC, không phải cho mọi máy khách ở mọi nơi.
dig +short bucket.vpce-0123456789abcdef0-abc123.s3.us-east-1.vpce.amazonaws.com aws s3api head-bucket --bucket example-artifacts --endpoint-url https://bucket.vpce-0123456789abcdef0-abc123.s3.us-east-1.vpce.amazonaws.com
Chạy cả hai trên máy chủ của ứng dụng, không phải trên hộp nhảy trong VPC. Bộ phân giải trả lời ở đó là cái mà khối lượng công việc của bạn dùng, và một câu trả lời khác từ máy chủ khác là nguồn nhầm lẫn phổ biến nhất trong thiết kế này.
Tiếp cận được không phải là cấp quyền
Một yêu cầu đến điểm cuối vẫn cần một chủ thể được ủy quyền và một quyền bucket áp dụng được. Chính sách điểm cuối có thể thu hẹp điều điểm cuối cho phép, và chính sách bucket có thể thu hẹp thêm. Việc đến được giao diện không nói gì về những đối tượng mà người gọi có thể đọc.
Kiểm tra cả hai hướng: một lệnh gọi được ủy quyền vô hại tới bucket dự định, và một lệnh gọi dự kiến bị từ chối cho một danh tính hoặc tài nguyên nằm ngoài chính sách. Lưu tên điểm cuối, địa chỉ đã phân giải và ngữ cảnh chính sách cùng với kết quả để người tiếp theo có thể tái tạo. Một lần từ chối nêu rõ loại chính sách tiết kiệm một giờ đoán mò.
Cuối cùng, hãy tính giá của hai lựa chọn trước khi cấp phát. Điểm cuối giao diện bị tính phí theo giờ giao diện và theo gigabyte, còn điểm cuối cổng thì không, và sự khác biệt đó quyết định câu hỏi cho nhiều khối lượng công việc lưu lượng thấp chỉ cần truy cập từ phía VPC.