在CDK中使用SSM秘密字符串创建胶水连接失败

时间:2020-05-14 19:37:12

标签: amazon-web-services aws-glue aws-cdk

我正在使用cdk定义我的ETL管道。管道的第一步是创建搜寻器,这些搜寻器通过JDBC连接连接到RDS实例,以获取架构元数据。

我正在尝试创建一个glue.CfnConnection,我在其中传递connectionProperties USERNAMEPASSWORD,它们需要作为秘密字符串从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

是否有更好的方法?

1 个答案:

答案 0 :(得分:0)

我正在使用 SecretsManager 来存储用户名和密码,这对我有用:

"ConnectionProperties": {
  "JDBC_CONNECTION_URL": "url",
  "USERNAME": "{{resolve:secretsmanager:<secret-name>}}",
  "PASSWORD": "{{resolve:secretsmanager:<secret-name>}}"
}