Kid*_*g_C 0 amazon-web-services amazon-elb aws-cloudformation amazon-vpc aws-api-gateway
这对后端来说是一件非常痛苦的事情,浪费了好几个小时,而且仍然无法弄清楚 AWS CloudFormation 的一行语法。
如果 AWS 的人员可以更好地编写他们的文档 - 只需多花一点时间 - 这对开发人员来说会更容易。
我正在尝试使用 CloudFormation 来部署具有 VPC Link 和 NLB 的 API Gateway。目标是将所有请求代理传递到 NLB:
ApiProxyMethod:
Type: AWS::ApiGateway::Method
Properties:
RestApiId: !Ref ApiGatewayRestApi
ResourceId: !Ref ApiProxyResource
# AuthorizationScopes: # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-authorizationscopes
AuthorizationType: COGNITO_USER_POOLS
AuthorizerId: !Ref ApiAuthorizer
HttpMethod: ANY
OperationName: "ProxyAllRequests"
Integration:
ConnectionType: VPC_LINK
ConnectionId: !Ref ApiGatewayVpcLink
IntegrationHttpMethod: ANY
PassthroughBehavior: String
Type: "VPC_LINK" # Member must satisfy enum value set: [HTTP, AWS_PROXY, HTTP_PROXY, AWS]
Uri: "http://NLB-myapp-internal-beta-12345.elb.ap-northeast-1.amazonaws.com/{proxy}"
Run Code Online (Sandbox Code Playgroud)
然而,这失败了,它抱怨错误的Type值:Member must satisfy enum value set: [HTTP, AWS_PROXY, HTTP_PROXY, AWS]
现在,哪一个适用于 VPC_Link / NLB?
他们本可以在 的文档中列出这些值AWS::ApiGateway::Method Integration,但他们选择不这样做。
为了代理将所有请求传递到 NLB,您需要将该Type字段指定为HTTP_PROXY
在这里您可以找到有关集成参数的更多有用文档
ApiProxyMethod:
Type: AWS::ApiGateway::Method
Properties:
RestApiId: !Ref ApiGatewayRestApi
ResourceId: !Ref ApiProxyResource
AuthorizationType: COGNITO_USER_POOLS
AuthorizerId: !Ref ApiAuthorizer
HttpMethod: ANY
OperationName: "ProxyAllRequests"
Integration:
ConnectionType: VPC_LINK
ConnectionId: !Ref ApiGatewayVpcLink
IntegrationHttpMethod: ANY
PassthroughBehavior: String
Type: HTTP_PROXY
Uri: "http://NLB-myapp-internal-beta-12345.elb.ap-northeast-1.amazonaws.com/{proxy}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |