Skip to content

no-construct-in-public-property-of-construct

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

このルールは、CDK Construct の public プロパティに Construct 型 (例: Bucket) を指定することを禁止します。

Construct の public プロパティに Construct 型を使用すると、Construct 同士が密結合になり、また可変状態が外部に公開されるため、推奨されません。

代わりに、読み取り専用リソースのための interface (例: IBucket) を指定することが推奨されます

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


🔧 使用方法

js
// eslint.config.mjs
export default [
  {
    // ... some configs
    rules: {
      "cdk/no-construct-in-public-property-of-construct": "error",
    },
  },
];

✅ 正しい例

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

class MyConstruct extends Construct {
  // ✅ 読み取り専用の interface (`IBucket` など) は使用できます
  public readonly bucket: IBucket;

  constructor(scope: Construct, id: string) {
    super(scope, id);
    this.bucket = new Bucket(this, "MyBucket");
  }
}

❌ 不正な例

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

class MyConstruct extends Construct {
  // ❌ Construct 型 (`Bucket` など) のプロパティは使用すべきではありません
  public readonly bucket: Bucket;

  constructor(scope: Construct, id: string) {
    super(scope, id);
    this.bucket = new Bucket(this, "MyBucket");
  }
}