Amazon Elastic Beanstalk 上的 MaxMind GeoIP 库和数据库
Posted
技术标签:
【中文标题】Amazon Elastic Beanstalk 上的 MaxMind GeoIP 库和数据库【英文标题】:MaxMind GeoIP libraries and database on Amazon Elastic Beanstalk 【发布时间】:2014-03-01 14:09:35 【问题描述】:我正在尝试弄清楚如何在 AWS (Elastic Beanstalk) 上安装和使用 GeoIP 库。 据我所知,EB 有一个“临时文件系统”,但我可以将 CeoCity 二进制文件存储在 S3 中……但是 MaxMind C 库呢?有没有人配置EB使用MaxMind的api?
(我的堆栈基于 Python/Django)
【问题讨论】:
你成功了吗?你的解决方案是什么? 是的,但是我创建了自己的自定义 AMI,请参阅我的博客文章:daveoncode.com/2014/02/18/…(安装所有必要的库后,我在我的 AMI 中复制了 /etc/ 下的 GeoCityLite.dat) 【参考方案1】:当一个简单的 .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
【讨论】:
【参考方案2】:另一种方法是使用 AWS EB 附加 EBS 卷的快照。
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html
每当使用此设置创建环境时,nivolved 实例都会将其附加。从这一点开始,您可以使用 .ebextensions 来接管它。
(它还允许您在支持例如 m1.small 的实例上映射临时卷)
【讨论】:
【参考方案3】:我相信您有两种选择来处理自动为您创建新 EC2 实例的情况:
create a custom AMI 用于您的 EC2 实例,或者 Customize your AWS EB environment。亚马逊发布关于使用自定义 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."
就我个人而言,我一直坚持使用配置文件。需要一点点修修补补,但是一旦我让它工作起来,它就运行得很好。
祝你好运!
【讨论】:
eheh...重点是:我正在使用弹性beantalk,因为我不想自己配置AMI:P 我绝对明白为什么不这样做。请注意,通过 EB 配置文件自定义 AWB 环境与滚动您自己的 AMI 不同。 最后我创建了自己的自定义 AMI:P以上是关于Amazon Elastic Beanstalk 上的 MaxMind GeoIP 库和数据库的主要内容,如果未能解决你的问题,请参考以下文章
在 Amazon Elastic Beanstalk 上安装 Anaconda
Amazon Elastic Beanstalk 如何采用自定义 python 命令?
如何卸载 Amazon Elastic Beanstalk 命令行界面?