6

제목과 같습니다. 나는 API 게이트웨이 방법을 구름 형성을 사용하는 SQS와 통합하려고한다. 제가 누락 된 부분은 SQS에 대한 올바른 URI입니다. 만약 당신이 이미 그것을했다면, URI는 어떻게 생겼을까요? API 게이트웨이를 SQS와 통합하는 방법

나는 그런 일 함께했다,하지만 여기 어디에
"arn:aws:apigateway:${AWS::Region}:sqs:action/SendMessage" 

이 방법에 대한 전체 구성 인 SQS ARN을 넣어하는 아무 생각이 :

PostMethod: 
    Type: "AWS::ApiGateway::Method" 
    Properties: 
     ApiKeyRequired: "true" 
     HttpMethod: "POST" 
     ResourceId: !Ref "SomeResource" 
     RestApiId: !Ref "SomeRestApi" 
     Integration: 
     IntegrationHttpMethod: "POST" 
     IntegrationResponses: 
     - StatusCode: 200 
     Type: "AWS" 
     Uri: "arn:aws:apigateway:${AWS::Region}:sqs:action/SendMessage" 

을 그리고 여기 예입니다 URI의 람다 함수와 통합하는 경우 :

arn:aws:apigateway:us-west-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:function_name/invocations 
- 

답변

9

내 질문에 답하십시오. API 게이트웨이에서 서비스 프록시로 SQS를 통합하는 방법은 다음과 같습니다.

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" 

마지막으로 다양한 질문에 대한 모든 대답을 발견했습니다. RTFM 같아.

편집 :

여기 RestApiRole에 대한 코드 :이 예를 들어

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" 
+0

감사합니다, 나는 온라인으로 찾을 수 수행 할 작업에 그것의 가장 가까운 것. 내가 여기에있는 한 가지 질문은 RestApiRole이 어떻게 생겼는지입니다. 내 클라우드 포메이션 템플리트에서 사용할 sqs 큐를 생성하고 있습니다. 해당 리소스에 액세스 할 수 있도록 템플릿에서 역할을 만들 수있는 방법이 있습니까? – fantapop

+0

@fantapop RestApiRole으로 내 대답을 편집했습니다. 이것은 api gateway와 sqs와 같은 템플리트에 있습니다. – greg

+0

고맙습니다. 나는이 일을 할 수 있었다. – fantapop

관련 문제