3

我试图弄清楚如何在 AWS (Elastic Beanstalk) 上安装和使用 GeoIP 库。据我所知,EB 有一个“临时文件系统”,但我可以将 CeoCity 二进制文件存储在 S3 中……但是 MaxMind C 库呢?有没有人配置EB使用MaxMind的api?

(我的堆栈基于 Python/Django)

4

3 回答 3

7

当一个简单的 .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
于 2015-05-16T16:08:32.023 回答
0

我相信您有两种选择来处理自动为您创建新 EC2 实例的情况:

亚马逊发布关于使用自定义 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."

就个人而言,我一直坚持使用配置文件。需要一些修修补补,但是一旦我让它工作,它就运行得很好。

祝你好运!

于 2014-02-05T09:30:51.273 回答
0

另一种方法是使用 AWS EB 附加 EBS 卷的快照。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html

每当使用此设置创建环境时,nivolved 实例都会将其附加。从这一点开始,您可以使用 .ebextensions 来接管它。

(它还允许您在支持例如 m1.small 的实例上映射临时卷)

于 2014-02-10T22:46:05.750 回答