AWSCodeBuildのプロジェクトをコピーしたいという要望があったのでCLIで実施

方法

AWS CLIでプロジェクト設定を取得し、登録できる形に変形させCLIから登録する。
コピー元のプロジェクトのロールがプロジェクト作成時にデフォルトで作成されたロール(コピー元のプロジェクト名入りのポリシーが付与されている)のため、そのままだと実行時にエラーとなる。
コピー先のプロジェクトのロールを指定できるようにした。

sh
srcProjectName="コピー元プロジェクト名"
dstProjectName="コピー先プロジェクト名"
dstProjectServiceRoleArn="コピー先プロジェクトのサービスロールARN"
aws codebuild batch-get-projects --names ${srcProjectName} | jq -r ".projects[0] | del (.arn, .created, .lastModified, .badge, .projectVisibility) | .name |=\"${dstProjectName}\" | .serviceRole |=\"${dstProjectServiceRoleArn}\"" > "${dstProjectName}.json"
aws codebuild create-project --cli-input-json "file://${dstProjectName}.json" 1> /dev/null
Ex.
srcProjectName="sample-builder"
dstProjectName="sample-builder2"
dstProjectServiceRoleArn="arn:aws:iam::123456789012:role/service-role/codebuild-sample"
aws codebuild batch-get-projects --names ${srcProjectName} | jq -r ".projects[0] | del (.arn, .created, .lastModified, .badge, .projectVisibility) | .name |=\"${dstProjectName}\" | .serviceRole |=\"${dstProjectServiceRoleArn}\"" > "${dstProjectName}.json"
aws codebuild create-project --cli-input-json "file://${dstProjectName}.json" 1> /dev/null