typescript - การดึงค่า Secret ของ AWS SecretManager เป็นค่าจำนวนเต็มต่อ CDK
ฉันกำลังพยายามดึงค่า Secret เป็นค่า integer (หมายเลขพอร์ต) ตาม CDK เพื่อสร้างทรัพยากรอื่น โดยพื้นฐานแล้วเมื่อฉันต้องการค่าประเภท String สำหรับพารามิเตอร์ String ทุกอย่างทำงานได้ดี แต่เมื่อฉันพยายามแปลง String เป็น int เพื่อใช้เป็นพารามิเตอร์ตัวเลข มันกลับไม่ทำงานอีกต่อไป ปัญหาคือ CDK สร้างการอ้างอิงสำหรับค่าพวกนี้และไม่สามารถแปลงเป็นค่าตัวเลขได้ คำถามคือ: มีวิธีใดในการดึงค่า Secret เป็นตัวเลขหรือไม่?
นี่คือโค้ดตัวอย่างบางส่วน:
อ็อบเจ็กต์ 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()
คำตอบ #1
คุณสามารถใช้คลาส Token ของ CDK เพื่อตีความค่าโทเค็นเป็นตัวเลขได้:
https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_core.Token.html#static-aswbrnumbervalue
port: cdk.Token.asNumber(secret.secretValueFromJson('port'));
มันจะถูกแก้ไขเป็นค่าที่ถูกต้องในเวลาการปรับใช้
