我正在尝试使用 .ebextension 配置在弹性 bean 堆栈上安装 pdftk 服务器,但无法安装

问题描述

我正在尝试使用 .ebextension 配置在弹性 bean 堆栈上安装 pdftk 服务器,但无法安装。

我正在尝试 .ebextension 文件夹中的以下配置文件。请帮帮我

  # Install PDFtk
  01_wget_pdftk:
  command: "sudo wget https://hone-compiled-packages.s3.eu-central-1.amazonaws.com/pdftk-pdfw-2.02-1.x86_64.rpm"
  ignoreErrors: false
  02_install_pdftk:
  command: "sudo rpm -ivh pdftk-pdfw-2.02-1.x86_64.rpm"
  ignoreErrors: false

我尝试了以下链接,但对我没有帮助。

https://stackoverflow.com/a/61943622/7532917

Aws Elastic beanstalk ebextensions not working when new instance is getting spinned

https://honesoftware.com/blog/install-pdftk-on-an-aws-elasticbeanstalk-environment

AWS ElasticBeanstalk .ebextensions not being executed

解决方法

您的问题很可能是空格。该文件是一个 YAML 文件。如果您的复制/粘贴准确无误,它将无法解析文件,因为空格在 YAML 文件中非常重要。

您没有包括您的目标平台,尽管这可能与您正在做的事情无关。为了快速测试,我在 Elastic Beanstalk 的 AWS 区域中启动了一个 python 3.8 环境。我首先从以下位置下载示例配置:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/tutorials.html - 我使用了 python.zip 文件,但就像我提到的那样,我实际上并没有修改任何 python 代码。

我首先在没有任何更改的情况下进行部署,以确保它出现。它在 Web 浏览器的 80 端口上做出响应。然后我添加了我的 SSH 密钥(在配置-> 安全性下)屏幕。我能够成功通过 SSH 进入该框并确认未安装 pdftk。

我解压了 python.zip 文件,并在 .ebextensions 目录中添加了一个名为 01pdftk.config 的新配置文件,内容如下:

commands:
  01_wget_pdftk:
    command: "sudo wget https://hone-compiled-packages.s3.eu-central-1.amazonaws.com/pdftk-pdfw-2.02-1.x86_64.rpm"
    cwd: "/root"
    ignoreErrors: false
  02_install_pdftk:
    command: "sudo rpm -ivh /root/pdftk-pdfw-2.02-1.x86_64.rpm"
    cwd: "/root"
    ignoreErrors: false

空格很重要!然后我将它重新压缩(确保当我打开 zip 时 .ebextensions 目录位于 zip 的根目录)并使用上传和部署按钮上传到 AWS。我上传了 zip,稍等片刻即可应用,然后通过 SSH 进入盒子以确认它已安装。

[ec2-user@ip-XXX-XXX-XXX-XXX ~]$ sudo ls /root
pdftk-pdfw-2.02-1.x86_64.rpm
[ec2-user@ip-XXX-XXX-XXX-XXX ~]$ rpm -qa | grep pdftk
pdftk-pdfw-2.02-1.x86_64

如您所见,已安装 pdftk。