我在哪里创建 .ebextensions 以使其在 AWS Elastic Beanstalk 中工作

Posted

技术标签:

【中文标题】我在哪里创建 .ebextensions 以使其在 AWS Elastic Beanstalk 中工作【英文标题】:Where do I create .ebextensions for it to work in AWS Elastic Beanstalk 【发布时间】:2020-10-05 14:10:55 【问题描述】:

每次有新部署时,我都需要创建几个空目录。

我将遵循How to set folder permissions for a particular container on Elastic Beanstalk 中已接受答案的建议并使用 .ebextensions 方法。

根据文档,我需要将此目录放在“源包的根目录中”。 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

这是源包的根吗? /var/application/current

我按照说明制作了一个 .config 文件,但没有被拾取或应用。

我也尝试过手动创建我需要的目录,但是在 web.stdout.log 中,我的应用程序没有使用创建的目录的权限。我什至在这些目录上尝试了 chmod 777。

请帮助我在部署时/部署后创建这些空目录

更新:

我现在用我的可部署 jar 压缩了 .ebextensions,我在日志中看到我的 .config 正在被提取。但是,当我尝试访问我正在创建的目录时,我仍然面临同样的权限问题。这里有什么问题?

createIODir.config:

commands:
  create_IO_dir:
    command: "mkdir /myIoDir"
    ignoreErrors: true
  create_input_dir:
    command: "mkdir /myIoDir/input"
    ignoreErrors: true
  create_output_dir:
    command: "mkdir /myIoDir/output"
    ignoreErrors: true
  create_record_dir:
    command: "mkdir /myIoDir/input/record"
    ignoreErrors: true
  create_schema_dir:
    command: "mkdir /myIoDir/input/schema"
    ignoreErrors: true
  create_json_dir:
    command: "mkdir /myIoDir/output/json"
    ignoreErrors: true
  create_avro_dir:
    command: "mkdir /myIoDir/output/avro"
    ignoreErrors: true
  permissions_IO_dir:
    command: "chmod 777 /myIoDir"
    ignoreErrors: true
  permissions_input_dir:
    command: "chmod 777 /myIoDir/input"
    ignoreErrors: true
  permissions_output_dir:
    command: "chmod 777 /myIoDir/output"
    ignoreErrors: true
  permissions_record_dir:
    command: "chmod 777 /myIoDir/input/record"
    ignoreErrors: true
  permissions_schema_dir:
    command: "chmod 777 /myIoDir/input/schema"
    ignoreErrors: true
  permissions_json_dir:
    command: "chmod 777 /myIoDir/output/json"
    ignoreErrors: true
  permissions_avro_dir:
    command: "chmod 777 /myIoDir/output/avro"
    ignoreErrors: true

【问题讨论】:

你能显示你的部署 zip 文件的文件夹结构吗? @Marcin 我刚遇到这个docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 我从来没有遵循过 zip 方法,但我可以尝试一下。这是可以接受的:project.zip 和里面:myApp.jar .ebextensions 是的。 .ebextensions 应该位于 zip 的根目录(顶部)中。 好的,所以我部署了 .zip 文件,我知道 .ebextensions 已通过,因为我在日志中看到了它。但是,当我尝试访问在 .config 文件中创建的目录时,我仍然面临权限被拒绝的问题。我将编辑我的问题以包含我的 .config 谢谢@Marcin,这是我接受的答案 【参考方案1】:

基于命令。

问题是文件夹是在 linux 文件系统的 root / 中创建的,而不是在部署文件夹中。

解决方案是修复所创建文件夹的路径。

【讨论】:

以上是关于我在哪里创建 .ebextensions 以使其在 AWS Elastic Beanstalk 中工作的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏 DefaultTableModel 中的特定列以使其在表中显示?

如何更改我的 C++ 代码以使其在 C 中可用?

如何在写入期间锁定文件以使其在打开时无法读取?

修改搜索以使其在 SQL Server 中不区分重音

为啥我们需要将 Swift 类标记为 `public` 或 `open` 以使其在 Objective-C 框架项目中可访问?

编辑 PE 可执行文件以使其在启动时加载指定的 DLL 的最简单快捷的方法是啥?