hhh0505
hhh0505

Reputation: 33

AWS CDK - trying to add Input Transformer using class aws_cdk.aws_events.RuleTargetInputProperties

As the title mentions, I'm trying to replicate a Input Transformer using RuleTargetInputProperties but i can't seem to find any examples or get the correct format to input.

The template i'm trying to replicate is the following:

            InputTemplate: |
              {
                "sourceVersion": <sourceVersion>,
                "artifactsOverride": {"type": "NO_ARTIFACTS"},
                "environmentVariablesOverride": [
                   {
                       "name": "PULL_REQUEST_ID",
                       "value": <pullRequestId>,
                       "type": "PLAINTEXT"
                   },
                   {
                       "name": "REPOSITORY_NAME",
                       "value": <repositoryName>,
                       "type": "PLAINTEXT"
                   },
                   {
                       "name": "SOURCE_COMMIT",
                       "value": <sourceCommit>,
                       "type": "PLAINTEXT"
                   },
                   {
                       "name": "DESTINATION_COMMIT",
                       "value": <destinationCommit>,
                       "type": "PLAINTEXT"
                   },
                   {
                      "name" : "REVISION_ID",
                      "value": <revisionId>,
                      "type": "PLAINTEXT"
                   }
                ]
              }
            InputPathsMap:
              sourceVersion: "$.detail.sourceCommit"
              pullRequestId: "$.detail.pullRequestId"
              repositoryName: "$.detail.repositoryNames[0]"
              sourceCommit: "$.detail.sourceCommit"
              destinationCommit: "$.detail.destinationCommit"
              revisionId: "$.detail.revisionId"

I've tried with RuleTargetInput, but this doesn't give me the correct template

        on_pr_rule = repo.on_pull_request_state_change("PR",
            target=targets.CodeBuildProject(project,
                dead_letter_queue=dead_letter_queue,
                event=events.RuleTargetInput.from_object({
                    "sourceVersion": events.EventField.from_path("$.detail.sourceCommit"),
                    "pullRequestId": events.EventField.from_path("$.detail.pullRequestId"),
                    "repositoryName": events.EventField.from_path("$.detail.repositoryNames[0]"),
                    "sourceCommit": events.EventField.from_path("$.detail.sourceCommit"),
                    "destinationCommit": events.EventField.from_path("$.detail.destinationCommit"),
                    "revisionId": events.EventField.from_path("$.detail.revisionId")   
                })
            )
        )
          InputTransformer:
            InputPathsMap:
              detail-sourceCommit: $.detail.sourceCommit
              detail-pullRequestId: $.detail.pullRequestId
              detail-repositoryNames-0-: $.detail.repositoryNames[0]
              detail-destinationCommit: $.detail.destinationCommit
              detail-revisionId: $.detail.revisionId
            InputTemplate: '{"sourceVersion":<detail-sourceCommit>,"pullRequestId":<detail-pullRequestId>,"repositoryName":<detail-repositoryNames-0->,"sourceCommit":<detail-sourceCommit>,"destinationCommit":<detail-destinationCommit>,"revisionId":<detail-revisionId>}'

Has anyone had any experience with adding a template as such using RuleTargetInputProperties?

Upvotes: 3

Views: 1447

Answers (1)

cheezespread
cheezespread

Reputation: 110

From the input, I am guessing you are working on the PR workflow. This is what I ended up with .

    _pr_build_events_input = events.RuleTargetInput.from_object({
        "sourceVersion": events.EventField.from_path("$.detail.sourceCommit"),
        "artifactsOverride": {"type": "NO_ARTIFACTS"},
        "environmentVariablesOverride": [
            {
                "name": 'pullRequestId',
                "value": EventField.from_path('$.detail.pullRequestId'),
                "type": 'PLAINTEXT',
            },
            {
                "name": 'repositoryName',
                "value": EventField.from_path('$.detail.repositoryNames[0]'),
                "type": 'PLAINTEXT',
            },
            {
                "name": 'sourceCommit',
                "value": EventField.from_path('$.detail.sourceCommit'),
                "type": 'PLAINTEXT',
            },
            {
                "name": 'destinationCommit',
                "value": EventField.from_path('$.detail.destinationCommit'),
                "type": 'PLAINTEXT',
            },
            {
                "name": 'revisionId',
                "value": EventField.from_path('$.detail.revisionId'),
                "type": 'PLAINTEXT',
            },
        ],

    })

Upvotes: 2

Related Questions