投稿

最新の投稿

AWS-CDKでECSの構成作ってみた

  AWS-CDK で ECS/Fargate の NativeのBlue/Green 使える構成を作ってみた。とはいえほとんど Cline 任せでしたが・・・・ ECSのCDK構成に関しては他の方々が色々と作成されているし、そちらの方が有益な記事だと思うのでそちらを読んでいただいた方がいいかなと。 まぁ他と違う点としては ・configのtsファイルを使用してパラメータ可変にしているところ ・scripts配下にEC2のユーザスクリプト埋め込める ・configgenerator使えばウィザードとかCSVからconfig生成できるところ ・buildspec.yamlをファイル、Git、インラインから選べる 位ですね。 あまり有益じゃないと思いますが、まぁ備忘録的に残しておこうかと思います。 かなり複雑なので、なんかイケてないし残念な感じです。 CDKは構成決めてからシンプルに作らないと意味がないなという教訓は得られました。 一応、CI/CDをCodePipeline経由でできるようにしています。GitHubとAWS接続させて連動させることはできます。 awscdk_ecs_backendsample の方がECS用のコードで、 awscdk_ecs_frontendsample がCloudFront+S3のStaticWebSiteHosting用です。buildspec.yamlはGitHub側で制御する感じです。 完全にテストしたってわけでないので挙動怪しいし、意図通り動かないかもしれないです。 ちなみに全リソース構築すると完了までに50分位かかります。CI/CDのSNSのメールのSubscriptionも飛んでくるので許可してやる必要あります。 ◆GitHub(作成したCDKなど) https://github.com/Otazoman/awscdk_ecs_sample https://github.com/Otazoman/awscdk_ecs_backendsample https://github.com/Otazoman/awscdk_ecs_frontendsample ◆参考サイト ・ECSのCDK化 https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/...

エンベデッドシステムスペシャリスト試験用メモ①

 IPAの エンベデッドシステムスペシャリスト試験 、R6年、R7年と2年連続落ちてます。 特に午後1が壊滅的にわからなくて内容がさっぱりです。そもそも問題が何言ってるかわからない。本文抜粋して対応しようとしても本文から答えが抜き出せないという類のやつなので、少しずつ整理してイメージつくようにしていければと思います。 フリーレンではないけど「イメージできないものは回答できない」 ので まぁメモなのであまり内容ないです。リンク集ですね。 午後1試験でよく出てくるのが ・ IMU  「慣性計測ユニット」:「角速度と加速度」を計測する  カーナビ、スマホ、ゲーム機のリモコンで使われてたりするらしい。姿勢制御とかに使う。    キーワードは加速度と角速度速度と距離を求めるあと積分計算。 ◆参考サイト https://www.keisokuten.jp/article/3mins-learning/sp_imu.html https://www.marubun.co.jp/products/4590/ https://note.com/ss_sports_lab/n/n428fc0a7e3de https://corporate.epson/ja/technology/overview/microdevice/imu.html https://www.analog.com/jp/resources/analog-dialogue/articles/enhancing-robotic-localization.html     https://ja.wikipedia.org/wiki/%E6%85%A3%E6%80%A7%E8%88%AA%E6%B3%95%E8%A3%85%E7%BD%AE ・ ミリ波レーダー  短い波長の電波を使って対象物との距離と相対速度を検出するらしい。  キーワードは天候とか関係なく対象物を検出することができる ◆参考サイト https://www.marubun.co.jp/technicalsquare/9153/ https://biz.kddi.com/content/column/smartwork/what-is-mmwave/#:~:text=1%EF%BC%8E-,%E3%83%9F%E3%83%AA%E6%B3%A2%E3%...

CDKTFがサービス終了になるのでCDKTNに移行した話

 CDKTFがサービス終了 するとかいう話、今頃になって知った。昨年から マルチクラウドバックエンド作るので 格闘していたけど、いきなりサービス終了というのは正直なところかなり困る。 選択肢としては 1.cdktf synth --hclでHCLにしてterraformで管理 2.1で変換後に Pulumi に移行する となるけど、結構設定ファイルに外だししてたりするので正直、移行するのが非常につらい。それにPlumiいろいろとややこしいみたいで安定性に難ありみたい。 どうしようかと考えていたら、 CDK Terrainとかいうのが爆誕 しているらしい まぁリリースされるまで待とうかと思っていたら、 もう使えるらしい 。しかも4日前でバージョンも0.22となっている。 移行は ガイド に従ってやればスムーズにいった。 立ち上がっていたコンテナを破棄して、node_modules削除してから Dockerfile を書き直して コンテナを立ち上げ。 コンテナにログインしてnpm入れなおして スナップショットテスト 走らせて必要なコード修正かけて(importとか修正)1時間ほどでなんとか[cdktn plan]まで成功しました。 Opentofu とか全然追っかけてなかったけど、今回のcdktnでopentofuの方がよいかなと思ったりしてます。まぁ terraform 完全に捨てれないので併用にはなると思いますけど スナップショットテスト書いてたので、移行も素早くできた。インフラでもテストコード大事なんだと実感しました。 まぁバックエンドの方はまだ先は長そうですけどね。なんとかcdktfで培った資産は無駄にならなさそうです。よかったよかった ◆参考サイト https://khuonglab.dev/ja/posts/cdktf-deprecation-migration-guide/ https://cdktn.io/docs

Hyper-Vで一気に複数VMを作成する

9月の WindowsUpdate というテロ行為にあって RAID1 組んでいたOSディスクが完全に認識されなくなり、おまけに別ドライブにしていたSSDまで別のPCでも認識できないという目にあいました。 CDKTF で作成していた3クラウドのバックエンドの追加作業も吹っ飛んで、データ復旧業者にまで頼んだんですが、データは取り戻せませんでした。 Git にあげときゃよかったという後悔しかなくその後の復旧とかにもかなり時間がかかっています。 幸い NAS に昨年の12月分のバックアップがあって、そっから更新されたデータは吹っ飛んで泣きそうになりながらもなんとか使える状態には戻しました。 RAID1は解除し、 1TBのSSD 4基購入してきて、NASのディスクを WDの6TB のものに切り替えて復旧作業もようやく落ち着いてきたかなという感じです。 そんでCDKで作業するにあたって、 Hyper-V の復旧作業が必要になったんですが、手動で20台近くのVMを作るなんて狂気の沙汰的なことはやりたくないので、 PowerShell で一撃で作成するスクリプト準備しました。 外部と接続できるスィッチも作成する感じにしてます。ベタ書き嫌だったので外部ファイルから読み込ませて動くようにしています。自分はヨワヨワなので Gemini 君に書いてもらいました。ほんとに自分なんてもういらないなと思うようになってきましたよ。ええ ◆スクリプト本体 param( [Parameter(Mandatory=$true)] [string]$ConfigFilePath ) # ============================================ # メインスクリプト:Hyper-V 仮想マシン一括作成 # 設定ファイルは $ConfigFilePath で指定されます。 # ============================================ # 設定ファイル名 (引数から取得) $ConfigFileName = $ConfigFilePath # ============================================ # 設定ファイルの読み込み # ===============================...

マルチクラウドでVPC同士接続してみるその⑤(AWS,Azure,GoogleCloudをcdktfで構築)【最終回】

  前回 で一応マルチクラウドVPNを terraform で構築するところまではできました。 そこまででいいかと思っていましたが、少し前に興味をもった CDK for Terraform の入門がてら、マルチクラウドVPNでVPC接続を試してみました。生成AIを駆使して何とか完成させてます。 最初は ChatGPT 、 Claude のfree版、んで Cline にやらせてたんですがClineが結構な頻度でソースコード壊してくれるので後半は Gemini とか DeepSeek 、ChatGPTとかと併用でやってく感じになってました。 Clineは調子いい時は調子いいんですけどね。勝手に修正かけないようにPlanで止めといて、質問しつつ、GeminiとかChatGPTで補完しながらって感じで進めました。まぁほとんど何もしてないんですけどね。かなり時間かかってしまいました。それでもイケてないものしか作れていないので 生成AI の力を借りてもイケてない人間はイケてないということが分かりました。あと嘘をつくので結局、 ここのサイト を頼ってパラメータ確認したりしてました。 後は AzureのVPNgateway が構築まで1時間弱かかるので、テストが全然進まず時間ばかり溶けます。 AWS と GoogleCloud だけだと10分かからないんですけどね、 Azure 入ると一気に1時間コース、そしてAzureがトラブルばかりしか起こらないのでかなりAzureが嫌いになりました。CDKTF完成させるまでにAWS以外はコストもかなりかかりました。 ◆シリーズ 1.AWSとGCP接続 2.AWSとAzure接続 3.GCPとAzure接続 4.AWSとGCPとAzure接続 5.CDK for terrformで再構成 ◆作成したCDKTF https://github.com/Otazoman/cdktf_multicloud_backend/tree/main/multicloudvpn ◆参考サイト ・CDKTF https://developer.hashicorp.com/terraform/cdktf https://zenn.dev/yutaro1985/articles/cdktf-for-usual-terraform-users https://...

SAM-CLIでServelessのDynamoDB+Lambda+APIGatewayやってみた

ちょっと Lambda と DynamoDB でサクッと CRUD のAPIが欲しかったので SAM を試してみた。 コード自体は生成AIにお任せ状態、ローカルでテストできるようにしたかったのと本番とローカルでDynamoDBの向き先を変える必要があったので、そのあたりをゴニョゴニョとして動かせるようにしました。 あくまでもサンプルなので認証とかバリデーションはきちんとできてないのでダメなやつなのですが、まぁまぁ便利ねということは分かった。 あとはS3にCSV上げたらDynamoDBにバッチでデータ投入する様なこととか、CloudFront+S3構成とかできるのかとか色々と調べてみたい。 まぁこれも色々な人がやってるのでいまさら感はあるし、先人のやつの方がしっかりしていて有益だと思うので、そちらの記事をあたっていただいた方がいいけどね。 ひとまずダメダメな今回のコードもさらしときます。 https://github.com/Otazoman/aws-sam-sample/tree/main ほぼ生成AIにやらせてて自分ではコードは一部しか書いていないというダメさっぷりを発揮しています。これベースにバリデーションとか追加していけば一々、組まなくて済むかなぁ。 ◆参考サイト ・SAM-CLI https://qiita.com/free-honda/items/d1ee8a7507a2e9c9527f https://iret.media/76096 https://www.cyberowl.co.jp/blog/technology/1318 ・複数Lambda https://zenn.dev/na7na/articles/e0be947140fd95 https://kazuhira-r.hatenablog.com/entry/2022/01/02/225530 https://qiita.com/nahiro_tus/items/2095d85ac11f306a79f8 https://qiita.com/charon/items/050942e54bbc5c9d44f1 https://uniforce.co.jp/media/blog/dvi11v9g6s/ ・APIGateway https://tech.fusic.co.jp/posts/2021-1...

EC2を起動したときにRoute53に登録されているAレコードを更新する

既にいろんなとこでやってる人がいる小ネタっす。  EC2で開発環境を作成していて、IPアドレスで接続するのが面倒くさいのでRoute53にIPアドレスを登録した。 まぁそれはそれで便利にはなったもののIP変わる都度、手動でRoute53にIPを設定するのも煩わしいので、EC2インスタンスの電源が入る都度、自動でRoute53を更新する様にした。 ◆コマンド # スクリプトのディレクトリを作成 mkdir init # ここからEOF_SCRIPTまでがroute53.shの内容になります # バッククォート (`) は `\` でエスケープしてください。 # `$` は自動で展開されるのでエスケープ不要です。 cat << 'EOF_SCRIPT' > init/route53.sh #!/bin/bash set -euxo pipefail DOMAIN_NAME="yourdomain.com" SUB_NAME="yoursubname" HOSTED_ZONE_ID="YOUR_HOSTED_ZONE_ID" # IMDSv2 (Instance Metadata Service Version 2) のトークンを取得 TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") # トークンが取得できたか確認 if [ -z "$TOKEN" ]; then echo "エラー: IMDSv2トークンを取得できませんでした。インスタンスのIMDS設定を確認してください。" >&2 exit 1 fi # 取得したトークンを使用してパブリックIPアドレスを取得 # X-aws-ec2-metadata-token ヘッダーにトークンを含める必要があります IP_ADDRESS=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -s ht...