Я очень плохо знаком с Makefiles и хотел бы знать, как получить секреты AWS, хранящиеся в AWS Secret Manager в Makefile, и установить переменные, которые в дальнейшем будут использоваться в Makefile. Эти переменные будут использоваться для подключения MySQL (имя пользователя, пароль). Так что, если я просто смогу получить секретное значение пароля в DB_PASSWORD: =.
Я получу секреты в коде python по следующей ссылке (вы можете напрямую go к коду в конце страницы по ссылке ниже): 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