Skip to content

no-construct-stack-suffix

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

このルールは、Construct ID および Stack ID に "Construct" または "Stack" 文字列を含めることを禁止します。

Construct ID に "Construct" という文字列が含まれていると、CDK の世界で止めるべき問題が CloudFormation テンプレートおよび AWS の世界に漏れてしまうため、好ましくありません。(Stack ID についても同様です)

(このルールは Construct または Stack から派生したクラスにのみ適用されます)

オプション

このルールには以下のプロパティを持つオプションがあります:

  • disallowedSuffixes - 禁止する suffix の配列。"Construct"、"Stack"、または両方を含めることができます。

※1. デフォルトでは ["Construct", "Stack"] が指定されています
※2. recommended ルールセットでは ["Construct", "Stack"] が指定されています


🔧 使用方法

ts
// eslint.config.mjs
export default [
  {
    // ... some configs
    rules: {
      // デフォルト: "Construct" と "Stack" の両方の suffix を禁止
      "cdk/no-construct-stack-suffix": "error",

      // "Construct" suffix のみを禁止
      "cdk/no-construct-stack-suffix": [
        "error",
        { disallowedSuffixes: ["Construct"] },
      ],

      // "Stack" suffix のみを禁止
      "cdk/no-construct-stack-suffix": [
        "error",
        { disallowedSuffixes: ["Stack"] },
      ],
    },
  },
];

✅ 正しい例

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);

    // ✅ "Construct" suffix が追加されていない場合は許可されます
    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);

    // ❌ "Construct" suffix を使用すべきではありません
    const bucket = new Bucket(this, "BucketConstruct");
  }
}