簡體   English   中英

無服務器 - 如何將 Aws 秘密管理器作為環境變量訪問

[英]Serverless - How to access Aws secret manager as environment variable

目前,我正在訪問 AWS 參數存儲值作為環境變量。 它在無服務器 yml 中定義如下:

environment:
    XYZ_CREDS: ${ssm:xyzCreds}

在代碼中,我像這樣訪問它process.env.XYZ_CREDS
我需要將此值移動到 AWS 秘密管理器並以相同的方式訪問 xyzCred。
基於我嘗試過的無服務器文檔-

  custom:
    xyzsecret: ${ssm:/aws/reference/secretsmanager/XYZ_CREDS_SECRET_MANAGERa~true} 
  environment:
    XYZ_CREDS: ${self:custom.xyzsecret}}

但它不起作用。 請幫忙!

在自己解決這個問題之后,我找到了對我有用的解決方案。

假設我們有一個秘密 XYZ_CREDS,我們在其中存儲用戶和密碼 ket-value 對。 AWS Secrets manager 以 JSON 格式存儲它們: {"user": "test", "password": "xxxx"}

以下是如何將用戶和密碼放入 Lambda 函數環境變量中:

custom:
  xyzsecret: ${ssm:/aws/reference/secretsmanager/XYZ_CREDS~true}
myService:
  handler: index.handler
  environment:
    username: ${self:custom.xyzsecret.user}
    password: ${self:custom.xyzsecret.password}

我正在使用無服務器 1.73.1 部署到 cloudformation。

希望這對其他人有幫助。

鑒於您在機密管理器中的機密名稱是正確的。 我認為在解密之前您可能在 manager 之后有一個“a”。

秘密管理器以鍵值/json 格式存儲。因此單獨指定變量

例如。

   environment:
     user_name: ${self:custom.xyzsecret}.username
     password: ${self:custom.xyzsecret}.password 

否則在代碼中使用 aws-sdk 傳遞秘密管理器名稱和解密

 environment:
     secretkey_name:XYZ_CREDS_SECRET_MANAGERa

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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