获取 AWS SecretManager 秘密作为每个 CDK 的整数值
Fetching AWS SecretManager Secret as Integer Value per CDK
我正在尝试获取 Secret 作为每个 CDK 的整数值(端口号)以创建另一个资源。基本上,当我需要字符串参数的字符串值时,一切正常,但是当我尝试将字符串解析为 int 以提供数字参数时,它不再起作用。问题是 CDK 为这些值生成一个引用,它不能转换为数字值。
问题是:有没有办法将秘密值取回数字?
这里有一些代码片段:
SecretManager 对象:
const secret = secretsmanager.Secret.fromSecretAttributes(this, "SecretId", {
secretCompleteArn: someValidSecretArn
});
工作正常:
host: secret.secretValueFromJson('host').toString()
无效,因为参数需要是数字值:
port: secret.secretValueFromJson('port').toString()
不工作因为端口为null(不是!),基本上无法解析引用:
port: parseInt(secret.secretValueFromJson('port').toString())
无效,同上:
port: +secret.secretValueFromJson('port').toString()
您可以使用 CDK 的 Token
class 将令牌转换为数字:
https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_core.Token.html#static-aswbrnumbervalue
port: cdk.Token.asNumber(secret.secretValueFromJson('port'));
它将在部署时解析为正确的值。
我正在尝试获取 Secret 作为每个 CDK 的整数值(端口号)以创建另一个资源。基本上,当我需要字符串参数的字符串值时,一切正常,但是当我尝试将字符串解析为 int 以提供数字参数时,它不再起作用。问题是 CDK 为这些值生成一个引用,它不能转换为数字值。 问题是:有没有办法将秘密值取回数字?
这里有一些代码片段:
SecretManager 对象:
const secret = secretsmanager.Secret.fromSecretAttributes(this, "SecretId", {
secretCompleteArn: someValidSecretArn
});
工作正常:
host: secret.secretValueFromJson('host').toString()
无效,因为参数需要是数字值:
port: secret.secretValueFromJson('port').toString()
不工作因为端口为null(不是!),基本上无法解析引用:
port: parseInt(secret.secretValueFromJson('port').toString())
无效,同上:
port: +secret.secretValueFromJson('port').toString()
您可以使用 CDK 的 Token
class 将令牌转换为数字:
https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_core.Token.html#static-aswbrnumbervalue
port: cdk.Token.asNumber(secret.secretValueFromJson('port'));
它将在部署时解析为正确的值。