使用CodePipeline

时间:2017-07-13 09:50:54

标签: amazon-web-services aws-codepipeline

我正在尝试在AWS上设置项目。我正在使用CodePipeline将我的代码部署到Elastic Beanstalk,而源代码来自git存储库。这很好。

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

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

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

2 个答案:

答案 0 :(得分:1)

可以使用.ebextensions从S3存储桶或其他存储桶复制文件 部署期间的源。亚马逊在他们的documentation中描述得很好。

以下是一个例子:

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

答案 1 :(得分:0)

我建议使用Elastic Beanstalk所具有的软件配置功能,而不是将配置文件存储在存储库中。

以下是解释如何执行此操作的相关答案:https://stackoverflow.com/a/17878600/7433105

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