gpt4 book ai didi

javascript - 如何使用 AWS CDK 查找现有的 ApiGateway

转载 作者:行者123 更新时间:2023-12-05 09:06:48 30 4
gpt4 key购买 nike

我正在使用 AWS CDK 构建我的 lambda,我想从 lambda 的 CDK 堆栈注册端点。

我发现我可以使用 fromRestApiId(scope, id, restApiId) 获取现有的 ApiGateway 构造( documentation here )

所以目前这很好用:

    //TODO how to look up by ARN instead of restApiId and rootResourceId??
const lambdaApi = apiGateway.LambdaRestApi
.fromRestApiAttributes(this, generateConstructName("api-gateway"), {
restApiId: <API_GATEWAY_ID>,
rootResourceId: <API_GATEWAY_ROOT_RESOURCE_ID>,
});

const lambdaApiIntegration = new apiGateway.LambdaIntegration(lambdaFunction,{
proxy: true,
allowTestInvoke: true,
})

const root = lambdaApi.root;

root.resourceForPath("/v1/meeting/health")
.addMethod("GET", lambdaApiIntegration);

但我想部署到许多 AWS 账户和许多地区。我不想为每个帐户区域对硬编码 API_GATEWAY_IDAPI_GATEWAY_ROOT_RESOURCE_ID

是否有更通用的方法来获取现有的 ApiGateway 构造(例如,通过名称或 ARN)?

提前谢谢你。

最佳答案

让我们用一个资源来做一个简单的 Api

const restApi = new apigw.RestApi(this, "my-api", {
restApiName: `my-api`,
});
const mockIntegration = new apigw.MockIntegration();
const someResource = new apigw.Resource(this, "new-resource", {
parent: restApi.root,
pathPart: "somePath",
defaultIntegration: mockIntegration,
});
someResource.addMethod("GET", mockIntegration);

假设我们想在另一个堆栈中使用这个 api 和资源,我们首先需要导出

new cdk.CfnOutput(this, `my-api-export`, {
exportName: `my-api-id`,
value: restApi.restApiId,
});

new cdk.CfnOutput(this, `my-api-somepath-export`, {
exportName: `my-api-somepath-resource-id`,
value: someResource.resourceId,
});

现在我们需要导入新的堆栈

const restApi = apigw.RestApi.fromRestApiAttributes(this, "my-api", {
restApiId: cdk.Fn.importValue(`my-api-id`),
rootResourceId: cdk.Fn.importValue(`my-api-somepath-resource-id`),
});

并简单地添加额外的资源和方法。

const mockIntegration = new apigw.MockIntegration();
new apigw.Resource(this, "new-resource", {
parent: restApi.root,
pathPart: "new",
defaultIntegration: mockIntegration,
});

关于javascript - 如何使用 AWS CDK 查找现有的 ApiGateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65706835/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com