适用于:“运行 Python 3.4 的 64 位 Amazon Linux 2015.09 v2.0.6”,用于依赖来自私有 bitbucket 存储库。可以为github等修改。
将你的私有依赖添加到 pip requirements.txt:
-e git+git@bitbucket.org:account_name/dependency-name.git#egg=dependency-name
生成公共和私人 SSH 密钥(HOWTO 可以在其他地方找到),因此您拥有 id_rsa(私人)和 id_rsa.pub(公共)密钥文件。
在 bitbucket.org 项目选项卡上,找到 settings 并进入“部署密钥”下。 使用表单设置您的公共 SSH 密钥。
上传两个生成的密钥(只需要私有就足够了)在 S3 存储桶上使用亚马逊 AWS 控制台:
bucket-with-keys/bitbucket/:
- id_rsa
- id_rsa.pub
其中 bucket-with-keys/bitbucket - 是 [BUCKET_NAME]/[PATH]。
将包文件添加到您的项目中:project_name/.ebextensions/packages.config
packages:
yum:
git: []
添加配置文件到您的项目:project_name/.ebextensions/03-pip-install-from-bitbucket.config:
files:
"/root/.ssh/config":
owner: root
group: root
mode: "000600"
content: |
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
"/root/.ssh/known_hosts":
owner: root
group: root
mode: "000644"
content: |
#
# paste output of `ssh-keyscan -H github.com` here
#
commands:
01-command:
command: aws s3 cp --recursive s3://bucket-with-keys/bitbucket/ /root/.ssh
02-command:
command: chmod 600 /root/.ssh/id_rsa
如果您修改此文件,请记住:
- 命令按字母顺序执行,因此“01-”在“02-”之前开始,即使您要切换其顺序。
- 文件名也遵循该规则。
转到 AWS 控制台 IAM(身份和访问管理)“策略”选项卡并在列表中找到 AmazonS3FullAccess 并将其附加到 aws-elasticbeanstalk-ec2 -角色。
如果您找不到政策,您可以创建一个如下所示的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
如果需要,请查找“Create and Attach Your First Customer Managed Policy”教程。这项政策是相当开放的,建议制定一个更狭窄的政策……
aws-elasticbeanstalk-ec2-role 是 Elastic Beanstalk 默认创建的角色,但您可以使用自己的角色,只要使用 CLI 工具 eb config 在以下位置进行设置:“IamInstanceProfile : aws-elasticbeanstalk-ec2-角色"
现在您可以使用 eb CLI 工具创建您的环境:
eb create project_name-prod-env \
--instance_type t2.micro \
--tier webserver \
--region eu-west-1 \
--cname project_name-prod-env \
--keyname identifier-of-ssh-key-accessed-from-console-here \
--platform "64bit Amazon Linux 2015.09 v2.0.6 running Python 3.4"
现在应该可以工作了!
如果出现问题你可以调试 SSH 文件是否到位:
eb ssh
sudo su
ls -la /root/.ssh/
并在 AWS 控制台或直接在实例上检查日志:
eb ssh
sudo su
less /var/log/eb-activity.log
尝试以 root 用户身份手动执行来自 project_name/.ebextensions/03-pip-install-from-bitbucket.config 的命令,以它们在日志文件中出现的方式显示,使用开关以获得更详细的输出。