我正在尝试在AWS上设置一个项目。我正在使用CodePipeline将我的代码部署到Elastic Beanstik,并且源代码来自git存储库。这工作得很好。
该项目有一些配置文件(密码和设置等),我不想包含在git存储库中。由于它们不在git存储库中,因此CodePipeline没有部署它们。
如何在CodePipeline中包含配置文件而不将它们包含在git存储库中?
想法:我尝试在CodePipeline中添加一个额外的S3源代码,其中包含配置文件。然后我必须添加一个额外的部署操作来部署新的S3源代码。但是两个部署过程相互冲突,只有一个成功。如果我重试失败的那个,成功的那个部署的任何内容都会再次被删除。似乎不可能将两个输入工件(源)添加到单个部署操作中。
在部署过程中,可以使用. 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,然后在应用程序启动时下拉配置)。