0

我想使用 Alias 创建连接到 Lambda 函数的 API Gateway,我有IntegrationRouteTargetProvider它提供到 API 的集成路由。我从 lambda 获得了 URI,所以我认为它是正确的。我还检查了 SO 问题的数量,并且在文档中也是arn:aws:apigateway:{region}:{subdomain.service|service}:path|action/{service_api}.

我的 uri 是

arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:051069080387:function:deploy-test-4-lambda/invocations.

但是,当我尝试创建 api 时出现错误:

无法对路径“/”处的资源进行“任何”集成:“AWS_PROXY”类型的集成目前仅支持 Lambda 函数和 Firehose 流调用。

这是我的IntegrationRouteTargetProvider

export class AliasLambdaProvider implements IntegrationRouteTargetProvider {
    target(name: string, parent: pulumi.Resource): pulumi.Input<IntegrationTarget> {
        return {
            type: "aws_proxy",
            uri: 'arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:051069080387:function:deploy-test-4-lambda/invocations',
        };
    }
}

而不是在创建 API 时使用它

return new API(name, {
        routes: [
            {
                path: "/",
                target: new AliasLambdaProvider()
            }
        ],
        stageName: name + "-stage"
    }, { provider });
4

1 回答 1

0

您正在使用:

类型:“aws_proxy”

这意味着所有内容都传递给 lambda,并且需要在 lambda 处处理标头。AWS_Proxy类型的集成被禁用,因此出现错误。但是,如果您想定义集成方法/映射模板等,请使用:

类型:“aws”

于 2020-06-02T06:47:36.277 回答