我正在使用cdk定义我的ETL管道。管道的第一步是创建搜寻器,这些搜寻器通过JDBC连接连接到RDS实例,以获取架构元数据。
我正在尝试创建一个glue.CfnConnection
,我在其中传递connectionProperties
USERNAME
和PASSWORD
,它们需要作为秘密字符串从SSM中获取。
我尝试了多种方法来使用ssm.StringParameter.valueForSecureStringParameter()
来获取机密,如下所示:https://docs.aws.amazon.com/cdk/latest/guide/get_ssm_value.html
我也尝试过使用https://docs.aws.amazon.com/cdk/api/latest/docs/aws-ssm-readme.html
,如下所示:当我合成模板时,它将正确呈现值以进行动态引用:
ssm.StringParameter.fromSecureStringParameterAttributes()
但是当我尝试部署它时,出现错误:"ConnectionProperties": {
"JDBC_CONNECTION_URL": "url",
"USERNAME": "{{resolve:ssm-secure:<secret-name>/username:version}}",
"PASSWORD": "{{resolve:ssm-secure:<secret-name>/password:version}}"
}
,这导致了我的错误,这表明并非所有Cfn资源都支持动态引用:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html
是否有更好的方法?
答案 0 :(得分:0)
我正在使用 SecretsManager 来存储用户名和密码,这对我有用:
"ConnectionProperties": {
"JDBC_CONNECTION_URL": "url",
"USERNAME": "{{resolve:secretsmanager:<secret-name>}}",
"PASSWORD": "{{resolve:secretsmanager:<secret-name>}}"
}