AWS CloudFormation 또는 OpenAPI(Swagger)를 통해 프록시 리소스를 사용하여 API Gateway API를 생성했습니다. API에 URL 경로 파라미터를 추가하려고 하면 "Invalid mapping expression specified" 오류가 발생합니다. 이 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 6월 10일

AWS CloudFormation 템플릿 또는 OpenAPI(Swagger) 정의를 사용하여 프록시 리소스를 사용하는 Amazon API Gateway API를 생성했습니다. API에 URL 경로 파라미터를 추가하려고 하면 "Invalid mapping expression specified" 오류가 발생합니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

이 오류는 프록시 경로 파라미터 {proxy+}("과대(greedy) 경로 변수"라고도 함)에 대한 URL 경로 파라미터 매핑을 정의하지 않은 경우 발생할 수 있습니다.

AWS CloudFormation 템플릿에서 AWS::ApiGateway::Method 섹션의 RequestParameters 속성을 정의합니다. OpenAPI 정의에서 x-amazon-apigateway-any-method 객체 아래 parameters 섹션을 정의합니다.

​해결 방법

AWS CloudFormation 템플릿

1.    다음과 같이 RequestParameters 속성을 정의하여 템플릿을 업데이트합니다.

"RequestParameters": {"method.request.path.proxy":true}

API Gateway 리소스 업데이트에 대한 자세한 내용은 Amazon API Gateway 리소스 유형 참조를 참조하십시오.

2.    템플릿을 사용하여 AWS CloudFormation 스택을 업데이트합니다. 이 작업은 API를 업데이트합니다.

OpenAPI 정의

1.    다음과 같이 x-amazon-apigateway-any-method 섹션 아래에서 parameters를 정의하여 API 정의를 업데이트합니다.

      "x-amazon-apigateway-any-method": {
                "parameters": [
          {
            "name": "proxy",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ]

....

....

}

자세한 내용은 OpenAPI 웹 사이트에서 Describing Parameters를 참조하십시오.

2.    업데이트된 API 정의 파일을 API Gateway로 가져와 API를 업데이트합니다.

(선택 사항) 변경 사항 확인

AWS CloudFormation 템플릿 또는 OpenAPI 정의를 업데이트하고 API를 업데이트한 후 API Gateway 콘솔을 확인하여 문제가 해결되었는지 확인할 수 있습니다.

1.    API Gateway 콘솔에서 API 이름을 선택합니다.

2.    사용 사례에서 필요한 경우 URL 경로 파라미터를 추가합니다. 그러면 더 이상 오류가 발생하지 않습니다.