投稿

TIL (Today I Learned) - Programmatic programming #2

Today's 3 Line Summary When you are write code, you should consider ETC and DRY, orthogonality There are no final decisions. you should prepare about reversibility The only way to determine the timetable for a project is by gaining experience on that same project TIL (Today I Learned) date 2022.03.21 The scope I read today 2.A Pragmatic Approach What you want to remember in the book Topic 8 The Essence of Good Design ETC:Easier to Change You may need to spend a week or so deliberately asking yourself “did the thing I just did make the overall system easier or harder to change?” Topic 9 DRY The Evils of Duplication Programmers are constantly in maintenance mode.maintenance is not a discrete activity, but a routine part of the entire development process. Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. DRY is about the duplication of knowledge, of intent. It’s about expressing the same ...

TIL (Today I Learned) - Programmatic programming #1

Today's 3 Line Summary It is your life. Software development skills are in demand in the world. You can change it if you have frustrated the job. You should be responsible for what you did. Don't blame others, don't excuse problems. Don't leave broken windows(bad designs, wrong decisions, or poorcode) Your knowledge becomes out of date. As the value of your knowledge declines, so does your value.You should keep learning. TIL (Today I Learned) date 2022.03.19 The scope I read today Foreword ~ 1.A Pragmatic Philosophy What you want to remember in the book you can change your organization or change your organization. Don’t blame someone or something else, or make up an excuse. but it is up to you to provide solutions, not excuses That’s the way it must be with software: don’t cause collateral damage just because there’s a crisis of some sort. Great software today is often preferable to the fantasy of perfect software tomorrow. Don’t spoil...

CDKでインフラとコードを 一緒にデプロイしてみよう(CDKでLambdaをデプロイしてみた)

イメージ
まえおき  今週の水曜日に開催された JAWS-UG 初心者支部の勉強会(#44) に参加した。今回はAWS Builders Online Series recap2 ということで AWS Builders Online SeriesのTrack2 開発者向けAWS入門に関する内容の勉強会だった。私は「CDKでLambdaをデプロイしてみた」をタイトルでLT発表をした。せっかくなので(ブログのアクセスを増やすためにも(笑))ここにもブログ版としても書いてみる。 当時発表した発表版はこちら。 サービス紹介  デプロイをする前に、今回使うサービスの紹介を簡単にする。 AWS CDKとは   AWS Cloud Development Kit(AWS クラウド開発キット) と呼ばれ、慣れたプログラミング言語でAWSリソースを定義できるフレームワークである。プログラミング言語が利用できるので、プログラミング言語の知識と表現力を使用できるのが特徴で、例えばCloudFormationでは利用が難しいif文(条件関数があるけど、複雑に作るのは難しい)やfor文を利用できる。また、言語もCDKライブラリについてもエディターの補完が聞いたり、AWSのベストプラクティスがデフォルト値として入っているため、コード記述量が少なくなるというメリットもある。ただし、CDKコードがそのままAWS環境にデプロイされるわけではなく、CloudFormationのテンプレートに変換されて、AWS環境にデプロイされる仕組みとなっている。 AWS CDK紹介ページより( https://aws.amazon.com/jp/cdk/ ) AWS Lambdaとは   AWS Lambda はサーバーレスでプログラムを実行できるAWSのサービスで、サーバーレスの名前通りにサーバーがないので、インフラ周りのプロビジョニングや管理が不要である。また、リクエスト数に応じて自動スケールしたり、様々なAWSサービスと連携が便利という特徴を持っている。課金もリクエスト数&実行時間という利用した分だけ払えばいい構造となっている。   AWS Lambda紹介ページより( https://aws.amazon.com/jp/lambda/ ) 写真をS3バケットに入れるとLambdaがトリガー...

7か月遅れたSecurity Jamに参加した感想

イメージ
まえおき  2021年のAWS Summit OnlineでSecurity Jamに参加したので、紹介と感想を書いてみる。実はブログは途中まで書いたものの放置してしまい、今はあんまり思い出せないけど、頑張って思い出してみる。 Security Jamの紹介  まず、AWS Jamとはユースケースや運用関連のタスクを一連のシナリオで参加者(チーム)に提供し、提供されるAWS環境から課題の解決に取り組むイベントである。いくつかの課題とAWS環境が与えられ、課題を解決すると得点が入り、制限された時間内にどれくらい大きい点数を得るかを競うイベント。その中、Security JamはSecurity系のユースケースに特化した課題が出るJamとなる。  AWSの学習にはいろいろコンテンツがあるけど、やはり実際に触ってみたり、トラブルシューティングしてみないとわからないものが多い。個人のAWS環境で軽く触ってみることはできるが、トラブルシューティングまでは難しい。そういう面でAWS Jamはゲーム形式で様々な課題(トラブル)解決に取り組むことができ、楽しくAWSの学習とスキル検証ができるので、ぜひ参加をおすすめするイベントである。 Security Jamで楽しんでいただきたいこと(Security Jamの紹介スライドより) 今回のJam 申し込み AWS Summit Onlineが開催される何日前くらいに、Summitの次の日にAWS Security Jamを開催するとの案内が、AWS Japan Blogに上がってきた。 AWS Security Jam開催のご案内 AWS Security Jamの歩き方 申し込みはAWS Summitがある5月11(火)、12日(水)にできるということだったが、何時に開放されるかが書いてなかった…(アクセス集中防止のため?)。また先着100名までとのことで、Twitterでは1時間おきでチェックしまくるとかの話もあり、私もライブチケットを予約するくらいの覚悟(?)を決めてSummitの当日を迎えた。 実際には思ったよりは余裕があって、11日の8時から申し込み開始が始まり、12時過ぎに締め切ったようで、私も無事申し込むことができた。 イベント準備 当日のスケジュール 当日のスケジュールはこんな感...

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でタグを扱うときはスタックレベルの動作に気を付ける必要があることがわかっ...

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か月)...