🐡

CodePipelineのパイプラインをUpdatePipelineしようとしたらValidationException

2023/07/15に公開

Node.jsのAWS SDK for JavaScript v3でUpdatePipelineしようとしたらValidationExceptionが発生した。

"errorType": "ValidationException",
"errorMessage": "The following account ID is not authorized to set a value for ExecutionMode: 012345678901",

以下のようにGetPipelineで取得したオプジェクトのパラメータを更新してそのままUpdatePipelineCommandに渡していた。

  let pipeline = (
    await codepipelineClient.send(
      new GetPipelineCommand({
        name: pipelineName,
      })
    )
  ).pipeline;
  
  // pipelineのパラメータを更新
  
  await codepipelineClient.send(
    new UpdatePipelineCommand({
      pipeline: pipeline,
    })
  );
  

どうやらpipelineオブジェクトがexecutionModeというメンバーを持っており、この値も更新の対象として受け取られたためValidationExceptionが発生していた模様。

{
  artifactStore: { location: 'codepipeline', type: 'S3' },
  executionMode: 'SUPERSEDED',
  name: 'ci',
  roleArn: 'arn:aws:iam::012345678901:role/codepipeline-ci',
  stages: [
    { actions: [Array], name: 'Source' },
    { actions: [Array], name: 'Build' }
  ],
  version: 10
}

executionModeと、自動更新されるversionも削除することでUpdatePipelineできるようになった。

  delete pipeline.executionMode;
  delete pipeline.version;

Discussion