我所建議的是讓你的環境變量存儲在EC2參數存儲中,你可以在你的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 Console或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}
所有你現在要做的就是創建這三個CodePipeline,每個CodePipeline都有自己的CodeBuild項目(每個項目使用不同的$ENVIRONMENT
)。
你有沒有讀過https://aws.amazon.com/blogs/devops/create-multiple-builds-from-the-same-source-using-different-aws-codebuild-build-specification-files/?它看起來與你想要做的非常相似。 – aderubaru