TL; DR
.DS_Store ファイルが Lambda Layer などの中に紛れ込むと Lambda Layer 用 Asset のための hash 値に影響を与えるので macOS は CDK に向かない。 Windows とか Linux 使おう。
例
Lambda Layer はこんな感じに定義できます
new LayerVersion(this, 'NodeModulesLayer',
{
code: AssetCode.fromAsset('../backend/src/layer/SharedLayer'),
...
}
);
ここの例では AssetCode.fromAsset('../backend/src/layer/SharedLayer')
として ../backend/src/layer/SharedLayer
フォルダの内容から Lambda Layer を構築していますが、このLayerが更新されたかどうかは、フォルダの中に含まれる全ファイルの内容で決まります。
つまり、同一の内容である限りは更新不要の内容として取り扱ってくれるわけです。
そのため、この中にこっそり .DS_Store ファイルが紛れ込むと、それは異なるアセット(更新されたアセット)として扱われてしまいます。
特にまずいのは、gitなどの管理システムによって複数の場所で開発を行っているときで、どこかの環境で .DS_Store ファイルが紛れ込んでしまうと、何もしてないのに Lambda Layer の状態が、常に更新が存在するものとして判断されてしまいます。
deploy する前は .DS_Store をすべて消し去るようにするのが直感的な解決方法ですが macOS とはそういう一手間が必要な OS であるので、もっと楽に開発したければ別の OS を使うのが低コストかも知れません。