我们希望使用AWS将现有API设置为SAAS 我们的代码已通过elastic-beanstalk部署,我们通过Gateway创建了对方法的访问权限以管理权限。
我们现在正在尝试记录用户的活动,以便进行结算
目前,我们发现的最佳解决方案是完整记录呼叫(启用CloudWatch Logs + Log完整请求/响应数据),这看起来非常繁重,甚至可能最终变得昂贵。
我们在集成请求中重新设计了请求体,为身体添加了一个映射模板,但这看起来很复杂,希望我们错过了更好的解决方案。
基本上,我们更换了默认" passthrough"生成的基本" passthrough"代码,并添加了一个值" MyUserArn" :" $ context.identity.userArn"在它里面,它填满了请求主体一大堆,但看起来像是#34;避免破坏某些东西的最可靠的方法"。
我们只想在标头或查询字符串参数中添加IAM用户标识符,但无法找到是否可能。几个帖子提到了一个" Invoke with caller credentials"选项,但我们也没有找到。
是否与认知或其他相关的东西?
我们做错了吗?
答案 0 :(得分:1)
您可以通过几种不同的方式获取此信息,这两种选择都有权衡:
$context.identity
中提取值并作为正文的一部分发送到Lambda。看起来你反对这个,因为你的#34;大混乱"评论,但最终你可以控制传递给Lambda的内容。 更新道歉,我不知道你错过了使用Beanstalk而不是Lambda。您绝对可以只在集成请求中添加标题,只需从$context.identity.userArn
中提取其值。
UPDATE 2 双重道歉,在标题中使用上下文变量时,省略$,因此您需要使用context.identity.userArn
。