我的建议是将您的环境变量存储在 EC2 Parameter Store 中,您可以在 CodeBuild buildspec.yml 中引用这些变量。
要在您的案例中使用 CodePipeline,您还需要针对每个环境使用不同的管道和不同的 CodeBuild 项目。
例如,假设您将以下变量存储在 EC2 参数存储(或 AWS SSM)中,
DEVELOPMENT_DB_PASSWORD='helloworld'
STAGING_DB_PASSWORD='helloworld'
PRODUCTION_DB_PASSWORD='helloworld'
在您的 CodeBuild 项目中,您必须将环境指定为变量(例如$ENVIRONMENT=DEVELOPMENT
)。不要buildspec
用于这个。您可以使用 AWS 控制台或 CloudFormation。
然后,您buildspec.yml
可以如下所示:
env:
parameter-store:
DEVELOPMENT_DB_PASS: "DEVELOPMENT_DB_PASSWORD"
STAGING_DB_PASS: "DEVELOPMENT_DB_PASSWORD"
PRODUCTION_DB_PASS: "DEVELOPMENT_DB_PASSWORD"
然后可以像这样在 serverless.yml 中访问这些变量${env:ENVIRONMENT}_DB_PASS
:
provider:
environment:
DB_PASS: ${env:${env:ENVIRONMENT}_DB_PASS}
您现在要做的就是创建这三个 CodePipelines,每个都有自己的 CodeBuild 项目(每个项目使用不同的$ENVIRONMENT
.