使用.ebextensions中的.config文件标记AWS beanstalk部署

时间:2014-04-08 03:36:09

标签: node.js amazon-web-services amazon-ec2 elastic-beanstalk

我在Beanstalk中部署的Node应用程序的根目录下添加了一个scripts.config文件到.ebextensions。我没有在控制台中看到EC2实例的标签。我也没有在beanstalk日志中看到任何提及1_add_tags的内容。我做错了什么以及如何确定script.config中的命令是否完全被调用了!

.ebextensions中的配置文件如下....

01_add_tags:

command: ec2-create-tags $(ec2-metadata -i | cut -d ' ' -f2) --tag Environment=Production --tag Name=Proxy-Server --tag Application=something

ENV:

EC2_HOME: /opt/aws/apitools/ec2
EC2_URL: https://ec2.ap-southeast-2.ama...
JAVA_HOME: /usr/lib/jvm/jre
PATH: /bin:/usr/bin:/opt/aws/bin/

干杯,

Prabin

2 个答案:

答案 0 :(得分:4)

亚马逊对这个问题的回答。 (这对我有用)......

您可以利用ebextensions在实例启动时执行某些命令。 假设您要在基于Linux的容器上实现此功能。我已经为您制定了一个示例配置文件,并附在此案例中。

请遵循以下指南:

  1. 在AWS管理控制台中,检查beanstalk使用的IAM角色/实例配置文件。默认情况下,它使用“aws-elasticbeanstalk-ec2-role”。添加此角色的权限以创建新标记(ec2:CreateTags)。
  2. 如果您的应用程序根目录下没有“.ebextensions”文件夹或“WEB-INF”文件夹,则创建该文件夹。
  3. 修改配置文件中的键值对。多个对由空格分隔。
  4. 示例摘录如下:

       {
            "container_commands": {
                "01_add_tags": {
                    "command": "aws ec2 create-tags --resources $(GET http://169.254.169.254/latest/meta-data/instance-id) --tags Key=ClientName,Value=testClient Key=NewTag,Value=new-value --region us-east-1"
                }
            }
        }
    
    1. 将修改后的配置文件添加到“.ebextensions”文件夹中。
    2. 将此版本上传到beanstalk。它应该启动新实例并执行配置文件。
    3. 请稍等一下,最好是实例通过EC2实例状态检查。刷新页面以显示要显示的其他标记。
    4. 请注意,我们正在使用“Container_commands”而不是博客中使用的“Command”。 在设置应用程序和Web服务器并且已提取应用程序版本文件之后但在部署应用程序版本之前运行容器命令。这很重要,因为这些命令可以访问环境变量,例如实例配置文件设置的AWS安全凭证。

      我建议您完成http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-restrictions中提到的AWS资源标记限制 我想强调一下,每个资源的最大标记数为10。

      同时检查表格是否标记了对某些资源的支持。例如,ELB不支持当前标记。

答案 1 :(得分:0)

我遇到了类似的问题,我尝试使用./ebextensions/foo.config文件安装libjpeg。我尝试了一切,但从来没有找到一个好的解决方案。

我能够通过设置一个全新的Elastic Beanstalk应用程序然后在新实例上部署我的相同版本来解决它。当我这样做时,一切都安装得很好,工作正常。

在这里查看我的答案:

希望这也可以解决您的问题。