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年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ