![](/img/trans.png)
[英]How do I pass AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to docker run within a Makefile?
[英]How to get an AWS secret in a Makefile
我對 Makefile 非常陌生,想知道如何在 Makefile 中獲取存儲在 AWS Secret Manager 中的 AWS 秘密,並設置將在 Makefile 中進一步使用的變量。 這些變量將用於連接 MySQL(用戶名、密碼)。 因此,如果我只能在 DB_PASSWORD := 中獲取密碼秘密值。
我成功地通過以下鏈接獲取了“python 代碼”中的秘密(您可以直接轉到以下鏈接頁面末尾的代碼): https : //www.capside.com/labs/using -aws-secrets-manager/
但是,我無法在 Makefile 中找到任何方法。
我的文件看起來像:
DB := prod
# DB := staging
ifeq ($(DB),staging)
DB_HOST := <staging database>
OBJ_DIR := ./obj/staging
else
DB_HOST := <prod database>
OBJ_DIR := ./obj/prod
endif
DB_PASSWORD := <password>
DB_USER := <user>
DB_PORT := 3306
DB_DATABASE := <database name>
MKDIR := mkdir -p
RM := rm
SRC_DIR := ./sql
SRC_FILES := $(wildcard $(SRC_DIR)/*.sql)
OBJECTS := $(SRC_FILES:%.sql=%.o)
OBJECTS := ${subst $(SRC_DIR),$(OBJ_DIR),$(OBJECTS)}
export MYSQL_PWD=$(DB_PASSWORD)
all: deploy
$(OBJ_DIR):
$(MKDIR) $@
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.sql
@cat $< | mysql -h $(DB_HOST) -P $(DB_PORT) -u $(DB_USER) $(DB_DATABASE)
@touch $@
@echo "Deploy of $< !"
clean:
$(RM) $(OBJECTS)
deploy: $(OBJ_DIR) $(OBJECTS)
@echo 'CALL create_views();' | mysql -h $(DB_HOST) -P $(DB_PORT) -u $(DB_USER) $(DB_DATABASE)
@echo "Deploy complete on $(DB) !"
注意/提示:密鑰也可以通過 AWS CLI 檢索: https : //docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html
由於您知道如何使用 AWS CLI 獲取密鑰,因此您可以使用 JQ 從輸出中獲取值。
嘗試這樣的事情:
get-secret-username:
@ $(eval USERNAME = $(shell aws secretsmanager get-secret-value --secret-id vikings-aurora-postgres-secret | jq -r '.SecretString' | jq '.username'))
@ echo "username: $(USERNAME)"
在這個例子中,我使用 JQ 的 -r 來解析來自 secrets manager 的 SecretString(這是一個帶有轉義字符的 JSON 字符串),然后從第一個 JQ 命令的結果中獲取我想要的值。
有關調用 JQ 的參考 JQ 手冊以更好地理解原始輸出: https : //stedolan.github.io/jq/manual/#Invokingjq
使用 JQ 的fromJson
編輯了實現更慣用的解決方案的fromJson
get-secret-username:
@ $(eval USERNAME = $(shell aws secretsmanager get-secret-value --secret-id vikings-aurora-postgres-secret | jq '.SecretString | fromjson | .username'))
@ echo "username: $(USERNAME)"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.