Estoy usando aws-cdk-lib versión 2 para crear una pila de CloudFormation. Defino mi API de la siguiente manera:
const api = new apigatewayv2.CfnApi(this, 'MyApi', { body: YAML.parse(apiSpec), failOnWarnings: true });Esto crea con éxito mi API en la implementación. Ahora me gustaría automatizar la creación de una etapa para esta API. Esto es lo que estoy intentando:
new apigatewayv2.CfnStage(this, 'dev-stage', { stageName: 'dev', apiId: '???????', // <--- How do I find this value? autoDeploy: true, }); Como puede ver, uno de los parámetros necesarios al crear CfnStage es apiId , que no parece estar disponible a través del objeto CfnApi creado anteriormente (hay una propiedad logicalId , pero no es el valor que espera CfnStage ).
Puedo encontrar el valor correcto en la consola de AWS después de que se ejecuta el script de CDK, pero eso no me sirve de mucho si intento automatizar la creación del escenario a través de CDK en una sola implementación.
Entonces: ¿Cómo determino el apiId correcto al crear un CfnStage sin tener que haber implementado la API?
Usar Ref .
AWS::ApiGatewayV2::Api CloudFormation docs : Ref: cuando pasa el ID lógico de este recurso a la función Ref intrínseca, Ref devuelve el ID de la API, como a1bcdef2gh.
// synth-time token, deploy-time string const apiId = cdk.Fn.ref(api.logicalId);