🐡
CodePipelineのパイプラインをUpdatePipelineしようとしたらValidationException
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