在 aws 中使用 ebextensions

Posted

技术标签:

【中文标题】在 aws 中使用 ebextensions【英文标题】:working with ebextensions in aws 【发布时间】:2015-09-26 13:52:03 【问题描述】:

我正在使用 AWS elastic beanstalk,由于我无法将 httdp conf 文件修改为 AllowOverride All,因此建议我使用 ebextensions

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html 因此,我创建了一个 .ebextensions 文件夹,并在其中创建了一个 setup.config 文件,其中包含以下命令:

container_commands:
    01_setup_apache:
        command: "cp .ebextensions/enable_mod_rewrite.conf /etc/httpd/conf.d/enable_mod_rewrite.conf"

我什至不确定这是否是启用 mod 重写的正确命令,但在尝试上传实例时出现以下错误:

[Instance: i-80bbbd77] Command failed on instance. Return code: 1 Output: cp: cannot stat '.ebextensions/enable_mod_rewrite.conf': No such file or directory. container_command 01_setup_apache in .ebextensions/setup.config failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

【问题讨论】:

【参考方案1】:

您不能从“.ebextensions/enable_mod_rewrite.conf”复制,因为该相对路径在初始化脚本中无效。使用绝对路径可能有效,但我建议您从 S3 获取:

container_commands:
    01_setup_apache:
        command: "aws s3 cp s3://[my-ebextensions-bucket]/enable_mod_rewrite.conf /etc/httpd/conf.d/enable_mod_rewrite.conf"

但如果您需要对实例进行复杂的更改,则运行 docker 容器可能是更好的选择:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.html

【讨论】:

感谢您的回答,我在哪里可以找到 [my-exbension-bucket] 是什么?谢谢。如果不进行复杂的更改,这是否足以让 htaccess 工作? 您需要创建并命名该 S3 存储桶...是的,这应该可以工作,但如果没有,请始终检查 /var/log/ 中的 cloud-init 和 eb 日志。 感谢您的回复。所以让我们假设新 s3 存储桶的名称是 testWork,命名为 aws s3 cp s3://testWork/enable_mod_rewrite.conf ... 我将如何链接这个 s3 存储桶该实例。我认为它会在上传时自动链接吗? 我很遗憾在尝试执行上述操作时收到以下错误 [实例:i-80bbbd77] 命令在实例上失败。返回代码:1 输出:调用 HeadObject 操作时发生客户端错误 (404):密钥“enable_mod_rewrite.conf”不存在已完成 1 个部分,剩余 ... 文件。 .ebextensions/setup.config 中的 container_command 01_setup_apache 失败。有关更多详细信息,请使用控制台或 EB CLI 检查 /var/log/eb-activity.log。

以上是关于在 aws 中使用 ebextensions的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 AWS::OpsWorks::Instance 资源中使用 AWS::CloudFormation::Init 和元数据?

在 aws 中使用 ebextensions

使用 AWS CDK 在 AWS Codepipeline 中部署 Python Lambda 函数

如何在节点 AWS 开发工具包代码中使用 AWS ECS 任务角色

在方法请求中使用 AWS_IAM 授权时需要 AWS Gateway 自定义授权者吗?

如何在 AWS Lambda 上的无服务器应用程序中存储和使用 HTML 模板(使用 AWS SAM)?