簡體   English   中英

如何在 Makefile 中獲取 AWS 秘密

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM