6

タイトルのように。私は、雲の形成を使ってSQSにAPIゲートウェイメソッドを統合しようとしています。私が欠けているのは、SQSの正しいURIです。もしあなたが既にそれをしていたら、URIはどのように見えるでしょうか?APIゲートウェイとSQSを統合する方法

私はそのような何かを思い付いたが、ここでの方法のための完全な設定されたSQS ARNに

"arn:aws:apigateway:${AWS::Region}:sqs:action/SendMessage" 

を置くには考えていません:

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

私自身の質問に答えるにはどうすればいいですか?

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" 

は、私は最終的に、様々なドキュメントの私の質問にすべての答えを見つけた:ここでは、APIゲートウェイでサービスプロキシとしてSQSを統合する方法です。 RTFMだと思います。

EDIT:

、ここ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

おかげで、私は私がオンラインで見つけることができることをやりたいものに最も近いもの。ここで私が持っている1つの質問は、RestApiRoleの外観です。私のクラウドフォーメーションテンプレートでは、使用するsqsキューを作成しています。テンプレートにロールを作成してそのリソースにアクセスできる方法はありますか? – fantapop

+0

@fantapop私はRestApiRoleで自分の答えを編集しました。これはapi gatewayとsqsと同じテンプレートにあります。 – greg

+0

ありがとうございました。私はこれを得ることができました。 – fantapop

関連する問題