Skip to content

no-parent-name-construct-id-match

recommended を使用した場合、このルールが有効になります。

このルールでは、Construct ID に 親クラスの名前を指定することを禁止します。

Construct ID に、親クラス名と一致する (または含む) 文字列を指定すると、CloudFormation リソースの階層が不明瞭になるため推奨されません。


🔧 使用方法

js
// eslint.config.mjs
export default defineConfig([
  {
    // ... some configs
    rules: {
      "awscdk/no-parent-name-construct-id-match": "error",
    },
  },
]);

✅ 適切な例

ts
import { Construct } from "constructs";
import { Bucket } from "aws-cdk-lib/aws-s3";

export class MyConstruct extends Construct {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    // ✅ 親クラスと異なる名前を指定している
    const bucket = new Bucket(this, "MyBucket");

    // ✅ 親クラス名を含むコンストラクト ID を指定しているが、完全に一致していない
    const bucket = new Bucket(this, "MyConstructBucket");
  }
}

❌ 不適切な例

ts
import { Construct } from "constructs";
import { Bucket } from "aws-cdk-lib/aws-s3";

export class MyConstruct extends Construct {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    // ❌ 親クラスと同じ名前を指定している
    const bucket = new Bucket(this, "MyConstruct");
  }
}

オプション

ts
type Options = {
  disallowContainingParentName: boolean;
};

const defaultOptions: Options = {
  disallowContainingParentName: false,
};

disallowContainingParentName

true の場合、親クラス名を含むコンストラクト ID を使用することを禁止します。
false の場合、親クラス名を含むコンストラクト ID の使用は許可されますが、親クラス名と完全に一致するコンストラクト ID の使用は禁止します。

{ disallowContainingParentName: true } とした場合

✅ 適切な例

ts
import { Construct } from "constructs";
import { Bucket } from "aws-cdk-lib/aws-s3";

export class MyConstruct extends Construct {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    // ✅ 親クラスと異なる名前を指定している
    const bucket = new Bucket(this, "MyBucket");
  }
}

❌ 不適切な例

ts
import { Construct } from "constructs";
import { Bucket } from "aws-cdk-lib/aws-s3";

export class MyConstruct extends Construct {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    // ❌ 親クラスと同じ名前を指定している
    const bucket = new Bucket(this, "MyConstruct");

    // ❌ 親クラス名を含む名前を指定している
    const bucket = new Bucket(this, "MyConstructBucket");
  }
}