서버리스와 모의 통합 AWS API 게이트웨이 추가
3911 단어 uncategorizedserverlessaws
리소스
AWS 콘솔의 이 스크린샷은 우리가 끝내고자 하는 것을 명확하게 보여줍니다.

/{proxy+}
리소스만 있었습니다. 이것은 경로가 람다로 전송되고 람다가 라우팅을 처리함을 의미합니다. 프록시 통합이라고 하는 것을 사용하는 대신 API 게이트웨이에 리소스를 배치하도록 선택할 수 있지만 여기서는 실제로 문제가 되지 않습니다(또한 제 생각에는 선호도 문제일 뿐입니다). https://example.com/goodtenant/whatever
에 요청이 있을 때 우리는 Lambda를 호출하고 응답을 반환하려고 합니다. 그러나 우리의 나쁜 테넌트가 https://example.com/badtenant/whatever
에 요청을 하는 경우, 우리는 그들을 짧게 멈추고 즉시 오류를 반환하기를 원합니다.따라서 위의 스크린샷에서
/badtenant
에 대한 모든 요청 또는 해당 하위 경로는 오류를 반환해야 합니다.통합
이제 모의 통합을 가리키고 (이 경우) HTTP 403을 반환하려면 이
badtenant
리소스도 필요합니다. 다음과 같이 표시됩니다.
서버리스 파일
이제 가장 중요한 부분은 serverless.yml이 다음과 같아야 한다는 것입니다(흥미롭지 않은 부분 생략).
functions:
main:
handler: lib/index.handler
name: myLambda
events:
- http: POST /{proxy+}
...
resources:
Resources:
ApiGatewayResourceBadTenant:
Type: AWS::ApiGateway::Resource
Properties:
ParentId:
Fn::GetAtt: ["ApiGatewayRestApi", "RootResourceId"]
PathPart: "badtenant"
RestApiId:
Ref: ApiGatewayRestApi
ApiGatewayResourceBadTenantProxyVar:
Type: AWS::ApiGateway::Resource
Properties:
ParentId:
Ref: ApiGatewayResourceBadTenant
PathPart: "{proxy+}"
RestApiId:
Ref: ApiGatewayRestApi
ApiGatewayResourceeBadTenantProxyVarAny:
Type: AWS::ApiGateway::Method
Properties:
HttpMethod: ANY
ResourceId:
Ref: ApiGatewayResourceBadTenantProxyVar
RestApiId:
Ref: ApiGatewayRestApi
Integration:
Type: MOCK
PassthroughBehavior: NEVER
RequestTemplates:
application/json: "{\"statusCode\":403}"
IntegrationResponses:
- SelectionPattern: .*
StatusCode: 403
MethodResponses:
- StatusCode: 403
AuthorizationType: NONE
본질적으로 이것이 하는 일은
ApiGatewayResourceBadTenant
라는 새 리소스를 정의하는 것입니다. 상위( ApiGatewayRestApi
)는 서버리스 프레임워크에 의해 생성되며 항상 ApiGatewayRestApi
라고 합니다. 리소스 아래에 프록시 리소스를 만듭니다. 그리고 그 아래에 메서드를 만듭니다.이 메서드는
MOCK
통합을 포함하고 403을 반환합니다.테스트
이를 서버리스로 배포한 후 필요한 리소스를 생성해야 합니다. 나쁜 세입자에게 전화를 걸면 403이 표시됩니다.

그게 다야!
조각들을 모으는 데 시간이 좀 걸렸지만 결국에는 상당히 간단하고 우아한 해결책이 되었습니다. AWS 콘솔에서 수동으로 아무 것도 할 필요가 없습니다. 즉, 모든 것이 자동화되고 소스 제어에 남아 있습니다. 그러나 우리는 나쁜 세입자가 Lambda를 너무 많이 트리거하는 것을 막을 수 있습니다. 이는 Amazon 청구서에 좋습니다!
Reference
이 문제에 관하여(서버리스와 모의 통합 AWS API 게이트웨이 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/petermorlion/adding-a-mock-integration-aws-api-gateway-with-serverless-589g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)