AWS Elastic Beanstalk - .ebextensions

时间:2017-12-23 14:24:37

标签: amazon-web-services elastic-beanstalk

我在这里发帖是因为AWS让你在信任你之前永远等待并让你发帖!

我的应用目前使用名为“Documents”的文件夹,该文件夹位于应用的根目录中。这是它存储支持文档,临时文件,上传文件等的地方。我正在尝试将我的应用程序从Azure移动到Beanstalk,我不知道如何授予此文件夹和子文件夹的权限。我认为它应该使用.ebextensions完成,但我不知道如何格式化配置文件。有人可以建议这个配置文件应该如何显示?这是在Windows / IIS上运行的ASP.NET应用程序。

谢谢, 乔

4 个答案:

答案 0 :(得分:0)

以下是示例.ebextensions配置文件,用于创建目录/文件并修改权限并向文件添加一些内容

====== .ebextensions / custom_directory.config ======

commands:
  create_directory:
    command: mkdir C:\inetpub\AspNetCoreWebApps\backgroundtasks\mydirectory
    command: cacls C:\inetpub\AspNetCoreWebApps\backgroundtasks\mydirectory /t /e /g username:W
files:
 "C:/inetpub/AspNetCoreWebApps/backgroundtasks/mydirectory/mytestfile.txt":
   content: |
     This is my Sample file created from ebextensions

ebextensions通过名为.ebextensions的目录进入应用程序源代码的根目录。有关如何使用ebextensions的更多信息,请参阅文档here

答案 1 :(得分:0)

不幸的是,您不能使用.ebextensions来设置部署目录中文件/文件夹的权限。

如果您查看弹性beantalk部署的事件挂钩: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-windows-ec2.html#windows-container-commands

您会发现commands在设置ec2应用和网络服务器之前运行,并且 container_commands在安装ec2应用和Web服务器后运行,但在部署应用程序版本之前 之前运行。

解决方案是使用 wpp.targets 文件设置必要的ACL。 以下SO帖子最有用 Can Web Deploy's setAcl provider be used on a sub-directory?

答案 2 :(得分:0)

01_fix_permissions.config文件夹中放置文件.ebextensions

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/49_change_permissions.sh":
mode: "000755"
owner: root
group: root
content: |
  #!/usr/bin/env bash
  sudo chown -R ec2-user:ec2-user tmp/

接下来,您可以根据需要设置文件夹权限。

答案 3 :(得分:0)

请参阅Serverfault上的this answer

在部署期间,您可以使用platform hooks在各个位置运行脚本,这些脚本可以帮助您解决Napoli描述的.ebextension命令和平台命令的缺点。

关于是否正式支持此设置似乎有一些争论,但是从对AWS github的评论来看,似乎没有明确禁止。

我可以看到那不勒斯的答案可能是更标准的MS处理方式,但是wpp.targets看起来像是垃圾IMO。

该答案的一般方案是使用命令/平台命令将脚本文件复制到适当的平台挂钩目录(/ opt / elasticbeanstalk / hooks或C:\ Program Files \ Amazon \ ElasticBeanstalk \ hooks \)中在您所需的部署阶段。

我认为值得注意的是,平台和版本之间存在差异,例如Amazon Linux 1和Linux 2。

我希望这对某人有帮助。我花了一天的时间收集这些信息以及此页面上的内容,然后选择我最喜欢的内容。

编辑11/4-我想指出,在重复部署期间尝试将脚本直接分散到平台钩子目录中时,我发现与File .ebextension指令存在一些不一致。特别是File指令未能正确移动名为.bak / .bak1 / etc的备份副本。我建议使用容器命令将覆盖的内容从另一个目录复制到所需的挂钩目录中,以解决此问题。

相关问题