簡體   English   中英

如何在 AWS Cloudformation 中檢索具有隨機后綴的機密 arn

[英]How to retrieve an arn of secret with random suffix in AWS Cloudformation

  1. 我在機密管理器中有一個現有機密。
    arn 看起來像這樣:
    arn:aws:secretsmanager:<region>:<accountid>:secret:<mysecret>-d1fX1Y
    眾所周知后綴是AWS加的。

“Secrets Manager 在 ARN 末尾的秘密名稱后自動添加一個連字符和六個隨機字符。”

  1. 我有一個 cloudformation 模板,我需要以某種方式將這個秘密的 arn 放入模板中。

arn 不是 static 它可能會改變。

據我所知,不可能使用.Ref,因為資源不是在同一個堆棧中創建的。

我試過使用 .Sub 和通配符,但結果是一樣的,因為它沒有進行查找。

也許有人對此有想法或解決方法?

這是模板的一部分。

Globals:
  Function:
    CodeUri: ./
    Timeout: 60
    Runtime: nodejs14.x
    VpcConfig:
      SecurityGroupIds: !Ref SecurityGroups
      SubnetIds: !Ref Subnets
    Environment:
      Variables:
        STAGE: !Sub "${Stage}"
        VERSION: !Sub "${Version}"
        SECRET_ARN: !Sub "arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:mysecret-*"

你想要完成的是跨 Stacks 引用一個 Arn? 例如,如果您在創建 Secret 的堆棧中導出 ARN,則另一個堆棧可以使用 Fn::ImportValue 引用該 ARN。

Fn::ImportValue - AWS CloudFormation

內部 function Fn::ImportValue 返回另一個堆棧導出的 output 的值。

您設置它以便秘密的 ARN 在 SSM 參數存儲中傳遞,然后使用參數存儲值作為您的 cloudformation 中的參數,然后您可以使用。Ref function 在您的 CF 模板中引用秘密值。

此值是其他資源(不是其他 cloudformation 堆棧)的 ARN 只是 terraform 創建的資源。

假設您將以 Secret 的 Arn 為值的 SSM 參數資源添加到創建 Secret 的.tf。 在這種情況下,CloudFormation 模板可以使用 SSM 動態引用來引用該參數。

看起來像這樣(未測試):

.tf

resource "aws_ssm_parameter" "example" {
  name  = "example"
  type  = "String"
  value = aws_secretsmanager_secret.<your_secret_name>.arn
}

aws_ssm_參數 | 資源 | 哈希公司/aws | Terraform 登記處

模板

Globals:
  Function:
    CodeUri: ./
    Timeout: 60
    Runtime: nodejs14.x
    VpcConfig:
      SecurityGroupIds: !Ref SecurityGroups
      SubnetIds: !Ref Subnets
    Environment:
      Variables:
        STAGE: !Sub "${Stage}"
        VERSION: !Sub "${Version}"
        SECRET_ARN: !Sub "{{resolve:ssm:example}}"

使用動態引用指定模板值 - AWS CloudFormation

暫無
暫無

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

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