How to define API Gateway to Eventbridge integration?

0

I am building an API Gateway (v1) integration such that posts to a given endpoint should route the body of the POST to my custom eventbus in Eventbridge. I have created the gateway endpoints, event bus etc but I am struggling with the definition of the integration.

I am doing this in Terraform, which basically wraps the AWS API for PutIntegration and I cannot seem to figure out the correct format of the request-parameters map required by AWS.

since eventbus payloads have a specific structure, I assume I need to build the map to construct that payload. I also saw a post about needing a custom X-Amz-Target header as well. Are there any AWS documented examples of just how to build this integration & mapping?

My attempts invariably lead to an error response along the lines of:
Error updating API Gateway Integration: BadRequestException: Invalid mapping expression specified: Validation Result: warnings : [], errors : [Invalid mapping expression specified: tagmodernization-dev-us-west-2-eventbus-information-reporting, Invalid mapping expression specified: integration.request.body.Entries[0].EventBusName]

mapping variations I have tried include:
integration.request.body.EventBusName
integration.request.body.Entries[0].EventBusName]
EventBusName

I realize I can achieve a similar goal using VTL with the request templates capability, but I am still unclear on the output format of the mapping anyway.

1回答
0
承認された回答
profile pictureAWS
エキスパート
回答済み 2年前
profile picture
エキスパート
レビュー済み 10ヶ月前
  • I was trying to achieve this via request-parameters which does not accept values as described in the linked blog. However, I will pivot to using request templates as described in the blog as I think it will give us more flexibility in the future. update... marking this as accepted. Just one warning to others, velocity templates seem to only function well on leaf node of json object. thus $elem.entry as shown only works because the contents are a string not a json body. if you are not delimiting, expect to see velocity render a string of name value pairs - eg { a= b, c=d} from input of {"a":"b","c":"d"}

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

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

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

関連するコンテンツ