4

我正在尝试在 AWS 上建立一个项目。我正在使用 CodePipeline 将我的代码部署到 Elastic Beanstalk,源代码来自 git 存储库。这工作正常。

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

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

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

4

2 回答 2

1

可以.ebextensions在部署期间用于从 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
于 2017-07-23T08:47:01.660 回答
0

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

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

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

于 2017-07-13T17:04:17.193 回答