【问题标题】:Working with the generated API Gateway url in CDK在 CDK 中使用生成的 API Gateway url
【发布时间】:2022-09-24 06:36:52
【问题描述】:
我正在使用创建 Telegram 机器人AWS API 网关和AWS 拉姆达,并使用 AWS CDK v2 定义基础设施。
在使用cdk deploy 部署我的堆栈后,我在控制台输出中获得了为 API 网关生成的 URL。理想情况下,我想使用该 URL 在 Telegram 中注册一个 webhook,作为部署过程的一部分。这将只涉及向 URL 发出 GET 请求,从AWS 机密管理器以及生成的网关 URL。
有没有办法在 CDK 中部署期间执行该 HTTP 请求?
标签:
amazon-web-services
aws-api-gateway
aws-cdk
telegram-webhook
【解决方案1】:
这样做的方法是创建一个 cloudformation 自定义资源来在 api 网关启动后处理请求。 cdk 看起来像
const api = new apigateway.RestApi(this, 'Api', {
restApiName: 'MyApi',
});
const provider = new cr.Provider(this, 'Provider', {
onEventHandler: new nodeLambda.NodejsFunction(this, 'handler', {
handler: 'handler',
}),
});
new cdk.CustomResource(this, 'registerApi', {
serviceToken: provider.serviceToken,
properties: {
apiGatewayUrl: api.url,
},
});
您的 lambda 代码将从事件中传递的资源属性中获取 api url,然后从秘密管理器中获取您的秘密,并调用电报以注册您的新 api