我是Makefiles的新手,想知道如何将AWS机密存储在Makefile中的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从输出中获取值
试着这样做:
在本例中,我使用JQ的-r解析secretmanager中的SecretString(这是一个带有转义字符的JSON字符串),然后从第一个JQ命令的结果中获得我想要的值
请参阅JQ手册中有关调用JQ的内容,以更好地了解原始输出: https://stedolan.github.io/jq/manual/#Invokingjq
编辑了使用JQ的^{} 实现更惯用解决方案的答案
相关问题 更多 >
编程相关推荐