通过AWS Lambda重定向URL

时间:2016-03-27 11:14:38

标签: .htaccess amazon-web-services redirect aws-lambda

我正在尝试跟踪已打开的电子邮件。我使用AWS API网关和Lambda作为后端,并通过附加到电子邮件的1x1像素进行处理。

目前我的lambda函数只是将一个位置返回到我想要重定向到的实际图像。我将在重定向运行后使用此lambda函数向我的数据库添加计数器增量(电子邮件跟踪):

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

在我的API网关中,我将响应设置为301,并将lambda函数的输出映射到Location头。但是,URL不会重定向,只需返回JSON格式的位置: enter image description here

任何人都知道如何让API实际重定向

1 个答案:

答案 0 :(得分:1)

1)定义状态为302的方法响应,并定义“位置”标题 2)使用空白正则表达式定义“默认”积分响应映射,映射到302 3)对于此响应,请从Lambda函数中返回的重定向URL定义“Location”标头映射。即“integration.response.body.location”
3)配置lambda函数以返回正文中的重定向位置,即

招摇的例子:

/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"

lambda函数

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

了解更多here