如何使用 Amazon AWS Elastic Beanstalk 部署私有 python pip 依赖项?

2023-12-09

当我尝试将其中一项服务设置为AWS 弹性豆茎,问题就出现了。我们的蟒蛇之一点依赖设置于私有存储库正在引起errors在部署过程中,由于无法访问对于点进程。下面我将介绍我们如何解决这个问题。

值得一提的是,还有其他解决方案将部署期间使用的 SSH 密钥绑定到应用程序项目 git 存储库。我发现它们有点脏,所以我想分享这个,它允许将 SSH 密钥单独存放在 S3 存储桶中,与应用程序 git 存储库分开。


适用于:“运行 Python 3.4 的 64 位 Amazon Linux 2015.09 v2.0.6”,来自私有 bitbucket 存储库的依赖项。可能会针对github等进行修改。

将您的私有依赖项添加到 piprequirements.txt:

  -e [email protected]:account_name/dependency-name.git#egg=dependency-name

生成 SSH 公钥和私钥(如何可以在其他地方找到)这样你就有了 id_rsa(私有)和 id_rsa.pub(公共)密钥文件。

在 bitbucket.org 项目选项卡上, find settings并进入“部署密钥”。使用表单设置您的公共 SSH 密钥 there.

上传两个生成的密钥(只要私人就足够了)在 S3 存储桶上使用亚马逊AWS控制台:

  bucket-with-keys/bitbucket/:  
 - id_rsa
 - id_rsa.pub

Where 带钥匙的桶/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(身份和访问管理)“策略”选项卡并查找AmazonS3完全访问列在清单上并附上aws-elasticbeanstalk-ec2-角色。 如果您找不到策略,您可以创建如下策略:

  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "*"
      }
    ]
  }

寻找 ”创建并附加您的第一个客户托管策略“如果需要,可以提供教程。这项政策相当开放,建议创建一个更狭窄的政策......aws-elasticbeanstalk-ec2-角色是 Elastic Beanstalk 默认创建的角色,但您可以使用自己的角色,只要使用 CLI 工具设置即可EB配置下:“IamInstanceProfile:aws-elasticbeanstalk-ec2-role”

现在您可以创建您的环境 with ebCLI 工具:

      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 手动执行命令,但按照它们在日志文件中显示的方式,使用开关获取更详细的输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Amazon AWS Elastic Beanstalk 部署私有 python pip 依赖项? 的相关文章

随机推荐

  • 方言错误消息流口水

    我已经在 Tomcat 7 中部署了一个 webApp 我正在使用 Drools 现在 当我连续运行时 Drools 会抛出运行时异常 我也在类路径中添加了 core 3 4 2 v 883 R34x jar 请查找错误日志 Some er
  • C#串行端口监听器[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 在 C 中是否有任何串行端口侦听器 如果串行端口上有任何数据 它将调用我的函数 我唯一的想法是使用无限循环 如下所示 while true if someDataOnSerial
  • 用于选择单选按钮的greasemonkey脚本

    我是新来的 我有一个关于油脂猴的问题 一个页面包含多个单选按钮值 需要做出一个选择 这个正确的选择选项隐藏在页面中 单选按钮以结构如下的形式出现
  • 如何强制 npm 不创建本地包的符号链接?

    我下载了 npm 包的本地副本并将其解压到桌面上 然后我用了npm install directory 安装它 我注意到 当我删除桌面目录时 应用程序说它找不到已安装的模块 经过进一步调查 我注意到包裹在node modules但它旁边有箭
  • ag-grid API 在 Angular 单元测试中未定义

    我正在以角度编写 Ag grid 的单元测试用例 测试 组件 ts public gridApi GridApi public gridColumnApi constructor private service Service this i
  • 如果 UseSpaStaticFiles() 应该为 Angular 页面提供服务,为什么仍然需要 UseSpa() ?

    我在这里阅读了一些文章 博客文章和问题 但我仍然对 的用法感到困惑UseSpaStaticFiles and UseSpa ASP NET Core 2 1 中的中间件 参考 ASP NET Core 2 1 中的 UseStaticFil
  • JS li 标签 onclick 在 IE8 上不起作用

    我使用下面的 JS 但 li onclick 在 IE8 浏览器上不起作用 jsfiddle 链接 http jsfiddle net sudheera DUZ3B 14 HTML div class primaryNav fl ul cl
  • JSF 隐式导航与显式导航

    当我遇到时 我正在考虑在我的网络应用程序中使用显式页面导航规则thisSO问题 答案 摘录如下 由于新的 隐式导航 功能 自 JSF 2 0 以来导航规则已过时 然而我已经经历了大部分CoreServlets JSF 2 0 教程 它有一个
  • 如何处理/管理访问令牌中的大量权限?最好的方法是什么?

    当我尝试访问 API 并在标头中发送令牌时 出现 请求标头太长 错误 我们如何管理访问令牌中的权限 因为我在访问令牌中有很多权限 它的大小约为 15kb 我知道不建议将权限存储在访问令牌中 那么在 API 端对用户进行身份验证和授权的最佳方
  • 根据“parent_id”将数组排序为多维数组

    我通过为每个 相册 分配一个 parent album id 来在mysql中存储无限嵌套的目录结构 除非它位于顶层 在这种情况下它没有parent album id 我首先从数据库中获取所有专辑的数组 并将每个专辑的键更改为其 id 自动
  • Rails 3.1 升级 => 错误

    我刚刚将现有的 Rails 3 应用程序升级到 Rails 3 1 我会根据任何要求得到这个 Error during failsafe response wrong number of arguments 6 for 5 Users ja
  • 使用 PHP 将 UCS-2 文件转换为 UTF-8

    我有一个由客户端提供的 CSV 文件 必须使用 PHP 对其进行解析并插入到数据库中 在将数据插入数据库之前 我想将其转换为UTF 8 但我似乎找不到如何转换 这就是我尝试检测文件编码的方法 enca d L zh artigos txt
  • 您应该混淆商业 .Net 应用程序吗?

    我正在考虑混淆商业 Net 应用程序 但真的值得花功夫去选择 购买和使用这样的工具吗 混淆的二进制文件真的不会受到逆向工程的影响吗 您可能不必购买工具 Visual Studio NET 附带了 Dotfuscator 的社区版本 其他免费
  • 为什么我的 Xamarin Android 应用程序突然需要外部存储权限?

    我有一个 Xamarin Android 应用程序 我一直在尝试为其创建更新 当一切都连接好并正常工作 并且我终于发布了 APK 时 我从 Google Play 收到一条消息 指出上传的 APK 现在需要两个额外的权限 用于读取和写入外部
  • 如何结合rapply()和mapply(),或者如何递归地使用mapply/Map?

    我想知道是否有一种简单的方法来组合以下功能rapply how replace and mapply 为了使用mapply 递归地在嵌套列表上 例如 我有两个嵌套列表 A list list c 1 2 3 c 2 3 4 list c 4
  • Google Calendar Api 获取本周的活动

    我正在尝试使用 Google Api 从一个公共 Google 日历获取本周的活动列表 我的所有配置都很好 我可以进行任何测试 在一个网页中列出和显示事件 但我使用服务器日期搜索任何类型的查询来获取本周的事件 但没有成功 我认为可以使用中所
  • 从 STATION 查询不以元音开头且不以元音结尾的 CITY 名称列表

    这是来自的挑战问题黑客排名 我的第一个查询工作正常 select distinct city from station where city not regexp aeiou and city not regexp aeiou 但我的第二个
  • Google 地图 api 可与浏览器检查元素配合使用

    我几天来一直在努力尝试将 google 地图 canves 插件修复到我使用 Twitter bootstrap 的应用程序中 地图充满了灰色斑点 而且从来都不是中心位置 但我最近注意到的是 一旦我在包含插件的页面上单击 检查元素 一切都会
  • Tslint 和节点模块错误

    我在使用茉莉花或黄瓜或任何框架运行角度测试时遇到问题 该应用程序是用 Angular 5 编写的 使用 TypeScript 并由 JHipster 生成 运行测试的结果是这样的 它似乎在 cmd 中持续了几个小时 没有任何变化 C Use
  • 如何使用 Amazon AWS Elastic Beanstalk 部署私有 python pip 依赖项?

    当我尝试将其中一项服务设置为AWS 弹性豆茎 问题就出现了 我们的蟒蛇之一点依赖设置于私有存储库正在引起errors在部署过程中 由于无法访问对于点进程 下面我将介绍我们如何解决这个问题 值得一提的是 还有其他解决方案将部署期间使用的 SS