在 cloudformation 模板中导出秘密名称

Export secret name in cloudformation template

我正在使用 Cloudformation 模板创建机密,我遇到的问题是唯一可以导出的值是使用 Ref 的 ARN 有没有办法得到秘密的名字?我尝试使用 !GetAtt LogicalIdOfSecret 但这不起作用 该文档仅引用了 ARN 部分 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html

AWS::SecretsManager::Secret 资源类型不支持函数 GetAtt。您只能通过 Ref 函数引用 return ARN。

但是,在大多数情况下,使用该 ARN 可以拆分它并获取名称。 Secrets 的 ARN 结构是:

arn:aws:secretsmanager:region:account_id:secret:my_path/my_secret_name-autoid

所以下面的函数组合(Select、Split、Ref)给出了 Secret 的名称。

"Outputs": {
    "SecretName": {
        "Value": {
            "Fn::Select": [
                "0", {
                    "Fn::Split": [
                        "-", {
                            "Fn::Select": [
                                "6", {
                                    "Fn::Split": [
                                        ":", {
                                            "Ref": "MySecret"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            ]
        },
        "Description": "Secret's Name"
    }
}

它工作正常,除非秘密名称包含破折号“-”,因为拆分逻辑基于名称中包含的“-”+ 自动生成的值。


参考:

CloudFormation Intrinsic functions