通过 CDK 创建 CfnDeployment 时如何检索 apiId?
How do I retrieve the apiId when creating a CfnDeployment via CDK?
我正在使用 aws-cdk-lib
版本 2 创建 CloudFormation 堆栈。我定义我的 API 如下:
const api = new apigatewayv2.CfnApi(this, 'MyApi', { body: YAML.parse(apiSpec), failOnWarnings: true });
这在部署时成功创建了我的 API。现在我想自动为此 API 创建一个舞台。这就是我正在尝试的:
new apigatewayv2.CfnStage(this, 'dev-stage', {
stageName: 'dev',
apiId: '???????', // <--- How do I find this value?
autoDeploy: true,
});
如您所见,创建 CfnStage
时所需的参数之一是 apiId
,它似乎无法通过之前创建的 CfnApi
对象使用(有一个 logicalId
属性,但这不是 CfnStage
期望的值)。
CDK 脚本运行后我可以在 AWS 控制台上找到正确的值,但是如果我尝试自动创建通过 CDK 的舞台全部在一次部署中。
所以:在创建 CfnStage
时如何确定正确的 apiId
而不必已经部署 API?
使用Ref
.
AWS::ApiGatewayV2::Api CloudFormation docs: Ref: When you pass the logical ID of this resource to the intrinsic Ref function, Ref returns the API ID, such as a1bcdef2gh.
// synth-time token, deploy-time string
const apiId = cdk.Fn.ref(api.logicalId);
我正在使用 aws-cdk-lib
版本 2 创建 CloudFormation 堆栈。我定义我的 API 如下:
const api = new apigatewayv2.CfnApi(this, 'MyApi', { body: YAML.parse(apiSpec), failOnWarnings: true });
这在部署时成功创建了我的 API。现在我想自动为此 API 创建一个舞台。这就是我正在尝试的:
new apigatewayv2.CfnStage(this, 'dev-stage', {
stageName: 'dev',
apiId: '???????', // <--- How do I find this value?
autoDeploy: true,
});
如您所见,创建 CfnStage
时所需的参数之一是 apiId
,它似乎无法通过之前创建的 CfnApi
对象使用(有一个 logicalId
属性,但这不是 CfnStage
期望的值)。
CDK 脚本运行后我可以在 AWS 控制台上找到正确的值,但是如果我尝试自动创建通过 CDK 的舞台全部在一次部署中。
所以:在创建 CfnStage
时如何确定正确的 apiId
而不必已经部署 API?
使用Ref
.
AWS::ApiGatewayV2::Api CloudFormation docs: Ref: When you pass the logical ID of this resource to the intrinsic Ref function, Ref returns the API ID, such as a1bcdef2gh.
// synth-time token, deploy-time string
const apiId = cdk.Fn.ref(api.logicalId);