How can i pass cognito email details($context.authorizer.claims.email) in an api gateway VTL mapping template to a synchronous express workflow

0

I have a rest api gateway with direct integration with aws step functions. I want to get the email of the logged in user and pass it on to the step functions workflow. How can i get the email details in the integration rrequest? I have the following cloudformation but i cannot get the details from $context.authorizer.claims.email being passed on to the step functions workflow despite the other params being passed on. RequestTemplates: application/json: !Sub - |- #set($inputRoot = $input.path('$')) { "params": [

            {
              "OrganisationName": $('$.OrganisationName')
              "OrgCreatedBy": "$context.authorizer.claims.email"
            }
            
            ]
          }
          {
              "input": "$params",
              "stateMachineArn": "${StateMachineArn}"
          }
        - { StateMachineArn: !Ref OrgAdminStateMachine }
1 個回答
1

Finally succeeded ! After trying harder, here is the api gateway body mapping template for any other person out there; The trick is to manipulate the object this way before.

#set($data = $input.path('$'))
#set($input = " { ""OrganisationName"" : ""$data.OrganisationName"", ""OrgStatus"" : ""$data.OrgStatus"", ""OrgCreatedBy"" : ""$context.authorizer.claims.email"" }")
{ 
    "input": "$util.escapeJavaScript($input).replaceAll("\\'", "'")",
    "stateMachineArn": "<put your step machine arn here>"
}

VTL not my cup of tea, there are few resources with examples especially AWS specific VTL. I wish more tutorials are made for this - maybe i will make one!. Lambda would be the go to for somethings but who doesnt want pure serverless and not to worry about compute. Long live AWS! The power this functionality enables for my use case is tremendous!

已回答 2 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南