To answer my own question. Here's how you integrate SQS as a service proxy in the API gateway:
PostMethod: Type: "AWS::ApiGateway::Method" Properties: AuthorizationType: "NONE" ApiKeyRequired: "true" HttpMethod: "POST" ResourceId: !Ref "SomeResource" RestApiId: !Ref "RestApi" MethodResponses: - StatusCode: 200 Integration: Credentials: !GetAtt "RestApiRole.Arn" IntegrationHttpMethod: "POST" IntegrationResponses: - StatusCode: 200 Type: "AWS" Uri: !Sub "arn:aws:apigateway:${AWS::Region}:sqs:action/SendMessage" RequestParameters: integration.request.querystring.QueueUrl: !Sub "'${SomeQueue}'" integration.request.querystring.MessageBody: "method.request.body"
Finally, I found the answers to all the questions in different documents. RTFM, I think.
EDIT:
and here is the RestApiRole code:
RestApiRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Action: - "sts:AssumeRole" Principal: Service: - "apigateway.amazonaws.com" Effect: "Allow" Policies: - PolicyName: "InvokeLambda" PolicyDocument: Version: "2012-10-17" Statement: - Action: - "lambda:InvokeFunction" Resource: !GetAtt "LambdaFunction.Arn" Effect: "Allow"
source share