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