首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ApiGateway:如果基路径为空,则只允许一个基路径映射。

ApiGateway:如果基路径为空,则只允许一个基路径映射。
EN

Stack Overflow用户
提问于 2020-05-19 20:52:13
回答 2查看 2.3K关注 0票数 0

创建一个API网关--我得到了以下错误:

如果基路径为空,则只允许一个基路径映射(apimappingXXXXXXX)。(服务: AmazonApiGateway;状态代码: 409;错误代码: ConflictException;

我的代码是:

代码语言:javascript
复制
 // External API Gateway
 const externalApi = new apigateway.RestApi(this, 'external-api-gw',
 {
   apiKeySourceType: apigateway.ApiKeySourceType.AUTHORIZER,
   restApiName: 'external-api',
   deploy: false,
   endpointConfiguration: {
     ...
   },
   policy: new iam.PolicyDocument({
     statements: [
      ..
         ],
       }),
     ]
   })
 }
);

const domainName = externalApi.addDomainName('domain-name', {
 domainName: props.apigatewayRecordName + '.' + props.hostedZone,
 certificate: existingCertificate,
 endpointType: apigateway.EndpointType.REGIONAL,
});

const myApiGateway = new route53targets.ApiGateway(externalApi);

// deployment
const apiDeployment = new apigateway.Deployment(this, 'deployment', {
  api: externalApi
});

// stage
const apiStage = new apigateway.Stage(this, 'stage', {
  stageName: 'api',
  accessLogDestination: new apigateway.LogGroupLogDestination(logGroup),
  accessLogFormat: apigateway.AccessLogFormat.jsonWithStandardFields(),
  loggingLevel: apigateway.MethodLoggingLevel.INFO,
  dataTraceEnabled: true,
  deployment: apiDeployment
});
externalApi.deploymentStage = apiStage;
domainName.addBasePathMapping(externalApi, { basePath: 'api', stage: apiStage} );

似乎自动创建了一个空基路径映射,而无法添加第二个路径映射。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2020-05-21 08:30:59

正如注释中提到的,下面可以找到工作代码片段:

创建CfnDomainName:

代码语言:javascript
复制
// import relevant data from ssm
const certificateArn = ssm.StringParameter.valueFromLookup(this, 'CertificateArn');
const domainNameURL = ssm.StringParameter.valueFromLookup(this, 'ApiCustomDomainUrl');
const certificate = cert.Certificate.fromCertificateArn(this, 'Certificate', certificateArn);

// create DomainName
const domainName  = new apigateway.DomainName(this, 'DomainName', {
    domainName: domainNameURL,
    certificate: certificate ,
    endpointType: apigateway.EndpointType.REGIONAL, 
});

添加基本路径映射:

代码语言:javascript
复制
// create the api
const api = new apigateway.RestApi(this, id, {
    restApiName: 'API GW ' + id,
    deployOptions: {
        stageName: 'dev',
    },
    endpointTypes: [apigateway.EndpointType.REGIONAL]
});

// add new base path to domain name
new apigateway.BasePathMapping(this, 'my-mapping', {
    domainName: domainName,
    restApi: api,
    basePath: 'my-mapping'
});

// add new base path to domain name
new apigateway.BasePathMapping(this, 'my-mapping-two', {
    domainName: domainName,
    restApi: api,
    basePath: 'my-mapping-two'
});

更多关于BasePathMappingDomainName的报道。

票数 1
EN

Stack Overflow用户

发布于 2020-08-11 01:58:37

不确定版本是否发生了变化,但这不适用于1.57的CDK。

将生成:“错误: API不定义默认名称”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61900570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档