我正在尝试弄清楚如何在AWS(Elastic Beanstalk)上安装和使用GeoIP库。到目前为止,我知道EB有一个"短暂文件系统",但是我可以将CEOCITY二进制存储在S3中……但是MaxMind C库呢?是否有人配置EB使用MaxMind的API?
(我的堆栈基于Python/django)
我不知道为什么当一个简单的.ebextensions脚本可以完成工作时,您为什么要自定义AMI,并在每个部署中下载新的MaxMind DB。请注意,截至今天,我的示例脚本已编码为最新的GeoIP客户端代码,因此您可能需要时不时地升级。但是我怀疑客户端代码会有很大的变化,因此它总是有效的。此脚本适用于PHP API和免费的Geolite2数据库,很容易更改为Python客户端代码。
files:
"/usr/local/bin/geoip2.phar" :
mode: "000644"
owner: root
group: root
source: https://github.com/maxmind/GeoIP2-php/releases/download/v2.1.1/geoip2.phar
"/usr/local/share/GeoIP/GeoLite2-City.mmdb.gz" :
mode: "000644"
owner: root
group: root
source: http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
"/usr/local/share/GeoIP/GeoLite2-Country.mmdb.gz" :
mode: "000644"
owner: root
group: root
source: http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
commands:
gunzip_maxmind_city:
command: gunzip -f GeoLite2-City.mmdb.gz
cwd: /usr/local/share/GeoIP
gunzip_maxmind_country:
command: gunzip -f GeoLite2-Country.mmdb.gz
cwd: /usr/local/share/GeoIP
我相信您有两个选择可以自动为您创建新EC2实例的情况:
- 为您的EC2实例创建自定义AMI,或者
- 自定义您的AWS EB环境。
Amazon发出有关使用自定义AMI的通知:S:
"After you are running on your own custom AMI, you will no longer receive any
automated updates to the operating system, software stack, or the AWS Elastic
Beanstalk host manager."
就个人而言,我一直坚持使用配置文件。需要一点修补,但是一旦我完成工作,它运作良好。
祝你好运!
另一种方法是使用AWS EB附加EBS卷的快照。
http://docs.aws.amazon.com/awscloudformation/latest/userguide/aws-properties-as-as-launchconfig-blockdev-mapp.-html
每当使用此设置创建环境时,Nivolved实例都会将其附加。从这一点开始,您可以用.ebextensions接管。
(它还允许您在支持m1.small的实例上映射临时卷)