![](/img/trans.png)
[英]How to pass environment variable & values to codebuild from Cloudwatch Event rules?
[英]How to pass variable (environment property) from CodeBuild to Beanstalk app in CodePipeline?
我有一個簡單的 CodePipeline,它包含三個階段 - 源代碼簽出、CodeBuild 使用buildspec.yml
構建 docker 映像並生成Dockerrun.json
工件,然后部署到 Beanstalk。
現在,我希望在 docker 中運行的應用程序在構建期間讀取 CodeBuild 階段設置的變量(環境屬性)——一個構建號。 我怎樣才能做到這一點?
我已經在pre_build:commands
的buildspec.yml
中設置了APPLICATION_BUILDNUMBER
變量,並將其列在exported-variables
下。 然后它出現在 AWS 控制台中 CodeBuild Build status下 Environment Variables 選項卡下Exported environment variables with desired value 下。
現在我如何在 Beanstalk 的 docker 中運行的應用程序中讀取它,這是一個 Spring 引導應用程序 (JAR)? 當我在 Beanstalk > 配置 > 軟件 > 環境屬性中手動設置變量APPLICATION_BUILDNUMBER
時,我可以輕松閱讀它。 但我不知道,如何從 CodeBuild 傳遞它。
快速查看 Elastic Beanstalk 操作1的配置屬性,它無法從外部源獲取環境屬性。
解決方法可以是:
一個。 從您的 CodeBuild 操作中設置 SSM 參數存儲變量,然后
灣。 讀取 Elastic Beanstalk 環境“掛鈎”中的 SSM 參數值並導出到環境。
$ aws ssm put-parameter --name "parameter-name" --type String --value "parameter-value"
您可以在 /opt/elasticbeanstalk/hooks/appdeploy/pre/ 中部署 hooks 文件。 通過 ebextension 'files' 構造2創建掛鈎腳本。 從 SSM 或 Secrets Manager 獲取密鑰並將密鑰導出到系統的最小掛鈎腳本如下所示:
#!/usr/bin/env bash
set -e
export MySecret=$(aws ssm get-parameters ---blah --blah......... )
不用說 CodeBuild 服務角色和 EC2 實例角色(與 EB 一起使用)需要具有所需的權限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:GetParameters",
"ssm:GetParameter",
"ssm:PutParameter",
"secretsmanager:GetSecretValue",
"kms:Decrypt"
],
"Resource": [
"arn:aws:ssm:*:*:*",
"arn:aws:secretsmanager:*:*:*",
"arn:aws:kms:*:*:*"
]
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.