投稿

2021の投稿を表示しています

CDKのスタックにタグをつけるときは除外リソースの設定(excludeResourceTypes)に注意する

まえおき 久々のブログ投稿!最近はエンジニア関係ない業務が多く、ネタがあんまりない…。 久しぶりにCDKでリクエストがあって対応したけど、確認せず大丈夫だろうーと思ったら、大丈夫ではなかったので書いてみる。   やりたかったこと 全体のスタックにAというタグをつける タグの付け方はこちらの ドキュメント を参照 ただし、特定のAWSリソースについてはAタグではなくBタグをつけたい   やったこと 一番上のスタックについて、Bタグをつけるリソース以外にAタグを設定する Tags.of(MyStack).add('A', 'AA', exclude_resource_types=['AWS::Xxx::Zzz']) Bタグをつけるリソースに直接Bタグをつける Tags.of(MyResource).add('B','BB')   デプロイ結果 BタグのみをつけるリソースにAタグもBタグもついてしまう   理由と回避策  タグのPriority調整もしてみたが、結局解決できずサポートに問い合わせへ…。理由としては スタック にタグを付与するとデプロイ時にCloudformationがすべてのリソースにタグを付与してしまうらしい( exclude_resource_types が適用されない)。また、githubのレポジトリでも議論が行われていること( https://github.com/aws/aws-cdk/issues/16742 )。  スタック以下のレベルでタグを設定したり、逆に include_resource_types を設定する、Bタグをつけるリソースだけスタックを分離ことで回避できるらしい。前の2つはCDKで生成するリソースが多くあるので、別途分離もスタック構成のアーキテクチャを考慮しないといけないので、難しい…。  結局対応としては、これからCDK変更がほぼないこと、Bタグの適用は期間限定で必要なことから、コンソールから手でAタグを削除することになった。   まとめ  CDKでタグを扱うときはスタックレベルの動作に気を付ける必要があることがわかった。githubのイシューが10月に作られている

AWS CDKで生成されるCloudformationリソースの一部を削除したいとき

発生した課題  AWS CDKのL2 ConstructのSubnet( ドキュメント )を利用してSubnetを生成している。ConstructはCloudformationの AWS::EC2::Subnet , AWS::EC2::RouteTable , AWS::EC2::SubnetRouteTableAssociation を生成する。SubnetとRouteTableを生成し、その二つのアタッチまでやってくれる。 しかし、今の環境ではRouteTableを別途生成されたものを利用する必要があり、生成されたRouteTableを手で削除してテンプレートを修正しようとすると、RouteTableがないとエラーになり、修正ができなくなってしまった…。   解決策  すぐ思いつく方法としては、L1 ConstructのCfnSubnetで生成する方法である。ただ、今回はL2 Subnetのipv4CidrBlockを別のリソースで利用していて、広い範囲でコードを修正しないといけなかった。 (なんで、 AWS::EC2::Subnet はgetAttでipv4CidrBlockをゲットできないのか…ipv6はできるのに…?)  他の方法はないかと検索してみたら、githubのAWS CDKに同じ問題のissueがあり、そこで方法を探すことができた( https://github.com/aws/aws-cdk/issues/4308 )。 subnetA.node.tryRemoveChild('RouteTableAssociation') subnetA.node.tryRemoveChild('RouteTable')  上記のコードを追加し、再度デプロイを試したら、無事Subnetのみをデプロイすることができた。   コメント  AWS CDKのL2 Constructは、今回のRouteTableとAssociationやIAMの権限など普段使うことには便利ではある。しかし、実際の業務ではいろんな制約があるので、それをCDKに取り入れようとするとややこしくなる場合が多い。今回の場合も、無理やり削除している感があったり、最初にこのことに気づいたらL1 Constructを利用していただろう。L1 Co

Google Cloud - Professional Cloud Architect更新してみた

イメージ
まえおき  今月で有効期限が切れるGoogle CloudのProfessional Cloud Architectの更新をして、その内容を社内勉強会で発表した。それを少し修正を加えて書いてみる。 勉強開始の前に 筆者のスペック SI会社に入社して5年目 業務はAWSのインフラ周りを担当、Google Cloudを触ることはない AWS資格も何個か持っています(Solution architectとかDevOps Engineerとか)   Google Cloudの資格を受ける&更新する理由  業務ではAWS触るのになぜGoogle Cloudの資格を受けてるかというと、以下の理由で受けている いろんなクラウドを勉強することで、各クラウドの強み弱みがわかる AWSを利用していても、データ分析と機械学習部分はGoogle Cloudを利用するハイブリッド構成を取る会社が多い気がする Google Cloudの取り組み(?)が面白い&好き(そこまで詳しくはないが) Monitoringサービスって一応AzureやAWSの監視にも使える オープンソースベンダーと戦略的提携を組んでいる 合格するとグッズがもらえる こういうグッズは結構好きなので、結構モチベーションになる。 もらったものは大体押し入れ行きになるけど(笑)、Hoodieとかはテレワーク時の部屋着として活躍してる 昔はAssociate Cloud Engineerにも、グッズがもらえたけど、1、2年前からはもらえなくなったらしい。マグカップとかタオルとかよかったけどなー   Professional Cloud Architectについて  詳細は Professional Cloud Architectの概要 を参考するといいと思う Google Cloudの技術 を組織が 活用するために 、 必要なクラウドアーキテクチャと専門的な知識を持っているか 評価する資格 AWSのSolution Architect Professionalの位置 受験料は200ドル 資格の有効期限は2年 有効期限の3か月前に案内が来て、2か月前、1か月前にまたリマインドが来る 更新は60日(2か月)前から可能 今回