2014-09-18 21 views
5

Khi chạy mã trên phiên bản EC2, SDK bạn sử dụng để truy cập tài nguyên AWS, tự động nói chuyện với máy chủ web được liên kết cục bộ trên 169.254.169.254 và nhận các phiên bản đó Thông tin AWS (access_key, bí mật) cần thiết để nói chuyện với các dịch vụ AWS khác.Vượt qua thông tin AWS (thông tin xác thực vai trò IAM) để mã chạy trong vùng chứa docker

Cũng có những lựa chọn khác, như thiết lập các thông tin quan trọng trong các biến ENV hoặc đi qua chúng như args dòng lệnh ...

thực hành tốt nhất là gì đây? Tôi thực sự thích để cho container truy cập vào 169.254.169.254 (bằng cách định tuyến các yêu cầu) hoặc thậm chí tốt hơn chạy một container proxy giống như hành vi của máy chủ thực tại 169.254.169.254.

Đã có giải pháp nào chưa?

Trả lời

3

Dịch vụ siêu dữ liệu EC2 thường sẽ có sẵn từ bên trong docker (trừ khi bạn sử dụng thiết lập mạng tùy chỉnh hơn - xem this answer về một câu hỏi tương tự).

Nếu thiết lập mạng docker của bạn ngăn không cho nó được truy cập, bạn có thể sử dụng chỉ thị ENV trong Dockerfile hoặc truyền trực tiếp chúng trong khi chạy, nhưng lưu ý rằng thông tin xác thực từ vai trò IAM được AWS tự động xoay.

+0

mmm, vì vậy tôi đoán sự hiểu lầm của tôi đến từ thử nghiệm của tôi với boot2docker (trên mac), nơi kết nối mạng khó xử hoặc ít nhất là khác nhau. Vì vậy, về cơ bản mọi thứ chỉ nên hoạt động. mmmm tôi cần thử cái này – Ali

+0

@Ali nơi bạn có thể thấy rằng nó hoạt động bình thường trong docker mà không gửi các khóa gốc tới boto? – stormfield

+0

Một vấn đề tôi có với kiến ​​trúc này (hãy để AWS SDK/CLI trong vùng chứa đạt điểm cuối siêu dữ liệu EC2 cho thông tin đăng nhập) là tôi muốn kiểm soát hạt mịn đối với những quyền mà vùng chứa sẽ có. Một thùng chứa chỉ có thể ghi vào S3, trong khi khác, tôi có thể không muốn có bất kỳ quyền nào của S3, và thay vào đó chỉ cho phép nó xuất bản lên SNS. Thiết kế này có nghĩa là tôi cần phải thêm superset quyền truy cập vào EC2 và tất cả các vùng chứa của tôi sẽ giống nhau. –

Các vấn đề liên quan