2016-03-27 31 views
1

私は開かれたメールを追跡しようとしています。 AWS APIゲートウェイとLambdaをバックエンドとして使用しており、メールに添付されている1x1ピクセルをタックしています。AWS LambdaからリダイレクトURL

現在のところ、私のラムダ関数は、リダイレクト先の実際のイメージに場所を返すだけです。私は、リダイレクトが機能したら、このラムダ関数を使用して、自分のデータベースへのカウンタの増分を追加する(電子メールトラッキング):

def handler(event, context): 
Location = 'https://s3-eu-west-1.amazonaws.com/stylezz.biz/email-sig/1.png' 
return Location 

私のAPIゲートウェイでは、私は301であると応答を設定してからの出力をマッピングしましたラムダ関数を自分のLocationヘッダに追加します。しかし、URLは単純にJSON形式で位置を返します。: enter image description here

私は実際にAPIが

答えて

1

1をリダイレクトするために得ることができる方法誰もが知っている)状態302、およびA「のメソッド応答を定義するようにリダイレクトされません。 Location "ヘッダが定義されている
2)空白の正規表現を使用して"デフォルト "の統合レスポンスマッピングを定義し、302.
にマッピングする3)このレスポンスに対して、ラムダ関数で返されたリダイレクトURLから" Location "ヘッダマッピングを定義します。すなわち「integration.response.body.location」
3)身体にリダイレクト先を返すために、あなたのラムダ関数を設定し、すなわち

闊歩例:

/lambdaredirect-default: 
    get: 
     produces: 
     - "application/json" 
     parameters: [] 
     responses: 
     200: 
      description: "200 response" 
      schema: 
      $ref: "#/definitions/Empty" 
      headers: {} 
     302: 
      description: "302 response" 
      headers: 
      Location: 
       type: "string" 
     x-amazon-apigateway-integration: 
     responses: 
      default: 
      statusCode: "302" 
      responseParameters: 
       method.response.header.Location: "integration.response.body.location" 
     uri: "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:[ACCOUNT_ID]:function:redirect-default/invocations" 
     httpMethod: "POST" 
     type: "aws" 

ラムダ関数

exports.handler = function(event, context) { 
    context.succeed({ 
     location : "https://example.com" 
    }); 
}; 

続きを読むhere

関連する問題