AWS CDK - 尝试使用类 aws_cdk.aws_events.RuleTargetInputProperties 添加输入转换器

问题描述

正如标题所述,我正在尝试使用 RuleTargetInputProperties 复制输入转换器,但我似乎找不到任何示例或获取正确的输入格式。

我要复制的模板如下:

            InputTemplate: |
              {
                "sourceVersion": <sourceVersion>,"artifactsOverride": {"type": "NO_ARTIFACTS"},"environmentvariablesOverride": [
                   {
                       "name": "PULL_REQUEST_ID","value": <pullRequestId>,"type": "PLAINTEXT"
                   },{
                       "name": "REPOSITORY_NAME","value": <repositoryName>,{
                       "name": "SOURCE_COMMIT","value": <sourceCommit>,{
                       "name": "DESTINATION_COMMIT","value": <destinationCommit>,{
                      "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"

我尝试过使用 RuleTargetInput,但这并没有给我正确的模板

        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>}'

有没有人有使用 RuleTargetInputProperties 添加模板的经验?

解决方法

根据输入,我猜您正在处理公关工作流程。这就是我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]'),{
                "name": 'sourceCommit',"value": EventField.from_path('$.detail.sourceCommit'),{
                "name": 'destinationCommit',"value": EventField.from_path('$.detail.destinationCommit'),{
                "name": 'revisionId',"value": EventField.from_path('$.detail.revisionId'),],})