提问者:小点点

使用CodePipeline从多个来源部署


我正在尝试在AWS上设置一个项目。我正在使用CodePipeline将我的代码部署到Elastic Beanstik,并且源代码来自git存储库。这工作得很好。

该项目有一些配置文件(密码和设置等),我不想包含在git存储库中。由于它们不在git存储库中,因此CodePipeline没有部署它们。

如何在CodePipeline中包含配置文件而不将它们包含在git存储库中?

想法:我尝试在CodePipeline中添加一个额外的S3源代码,其中包含配置文件。然后我必须添加一个额外的部署操作来部署新的S3源代码。但是两个部署过程相互冲突,只有一个成功。如果我重试失败的那个,成功的那个部署的任何内容都会再次被删除。似乎不可能将两个输入工件(源)添加到单个部署操作中。


共2个答案

匿名用户

在部署过程中,可以使用. eb扩展从S3存储桶或其他源复制文件。亚马逊在他们的留档中对此进行了很好的描述。

这里有一个例子:

Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["elasticbeanstalk-us-west-2-123456789012"]
          roleName:
            "Fn::GetOptionSetting":
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"

files:
  "/tmp/data.json" :
    mode: "000755"
    owner: root
    group: root
    authentication: "S3Auth"
    source: https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2-123456789012/data.json

匿名用户

与其将配置文件存储在存储库中,我建议使用Elastic Beanstik具有的软件配置功能。

这里有一个相关的答案来解释如何做到这一点:https://stackoverflow.com/a/17878600/7433105

如果您想将配置建模为单独的源操作,那么您要么必须有一个构建步骤,将源工件合并到一个可部署工件中,要么有一些独立的配置部署过程,不会干扰您的应用程序部署(例如,在Lambda函数中复制到S3,然后在应用程序启动时下拉配置)。