Bạn cần Python, pip, virtualenv, awswebcli và SSH client để thiết lập môi trường dev Python trên AWS. Làm theo hướng dẫn tại https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html để cài đặt.
Khi đã cài xong, cần thiết lập virtual environment để global package không bị ô nhiễm. Dùng lệnh:
$ virtualenv -p python2.7 /tmp/hello-world Running virtualenv with interpreter /usr/bin/python2.7 New python executable in /tmp/hello-world/bin/python2.7 Also creating executable in /tmp/hello-world/bin/python Installing setuptools, pip...done.
Khi virtual environment sẵn sàng, kích hoạt bằng script activate trong thư mục bin của env. Ví dụ, để start env hello-world vừa tạo:
$ . /tmp/hello-world/bin/activate
Sau khi tạo, có thể restart virtual environment bất kỳ lúc nào bằng cách chạy lại script activate.
Để cấu hình ứng dụng Python cho deployment, từ trong virtualenv, quay về root của project directory tree và tạo file requirements.txt chứa requirement app (third-party module import) kèm version (hoặc không nếu cần mới nhất). Ví dụ:
Flask==0.8 Jinja2==2.6 Werkzeug==0.8.3 certifi==0.0.8 chardet==1.0.1 ...
Hoặc dùng pip lấy tất cả package đã cài từ máy vào requirements.txt:
$ pip freeze >requirements.txt
Điều này cho phép AWS replicate môi trường Python app dùng cùng package và version bạn dùng dev/test.
Cấu hình AWS EB CLI repository với lệnh eb init:
$ eb init -p python2.7 hello-world Application hello-world has been created.
Lệnh này tạo app mới tên hello-world và cấu hình local repository tạo environment với cấu hình platform Python 2.7 mới nhất. Chạy eb init lại để cấu hình default keypair để SSH vào EC2 instance chạy app:
$ eb init Do you want to set up SSH for your instances? (y/n): y Select a keypair. 1) my-keypair 2) [ Create new KeyPair ]
Chọn key pair nếu đã có, hoặc follow prompt tạo mới. Nếu không thấy prompt hoặc muốn đổi settings sau, chạy eb init -i. Tạo environment và deploy app với eb create:
$ eb create hello-env
Lệnh này tạo load balanced Elastic Beanstalk environment tên hello-env.
Nếu gặp vấn đề, xem docs chi tiết: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html#python-django-configure-for-eb