TECH PLAY

Vagrant

むベント

マガゞン

該圓するコンテンツが芋぀かりたせんでした

技術ブログ

みなさん、こんにちは。SCSKのMasedatiです 最近の私、週2でラヌメン屋に通っおいたす。E.A.Kっお最高ですね さおさお、今幎で新卒3幎目を迎える私ですが、昚幎床は新人指導員ずしおOJTに携わっおいたした。 その䞭で改めお感じたのは、 新人の皆さんは日々芚えるこずが倚く、なかなかアりトプットにたで手が回らない ずいう課題です。 私が1幎目だった頃、アりトプットの機䌚を提䟛する取り組みずしお、 月1回のブログ発信を支揎する「 新人ブログマラ゜ン 」が実隓的に始たりたした。 圓時は新人ずしおブログ発信に挑戊する立堎でしたが、 技術を蚀語化し発信する経隓は、非垞に良い刺激 ずなったのを芚えおいたす。 この経隓を螏たえ、2024幎床も新人の皆さんが自らテックブログを曞き、楜しみながらアりトプットに取り組める堎ずしお、 「 新人ブログマラ゜ン 」を継続開催するこずにしたした。 䌁画抂芁 新人ず指導員がペアを組み、新人がブログ蚘事を執筆 ※ペアは月ごずに亀代 指導員は蚘事に察しおフィヌドバックを行い、その埌、ブログを公開 実斜期間は 2024幎12月〜2025幎3月  ã§ã€ 月1本の投皿 を目安 技術に関連する内容、たたはそれに準ずる内容であればテヌマは自由 前回開催の「新人ブログマラ゜ン」の掻動報告 は↓こちら。 新入瀟員がブログを曞き始めるきっかけずは 圓瀟新人たちがテックブログを曞いおみたよ。 blog.usize-tech.com 2024.05.07 そもそもなんでブログを曞くのか再掲 人に䌝えようずするこずで自分の理解になる。 昔の人は蚀いたした「100回の賌読より、1回の寄皿」だず。 新人はむンプットする機䌚は倚いですがアりトプットするこずで知識定着に寄䞎できたす。 「テックブログを曞く」ずいう道の最初の䞀歩を䜜る。 テックブログなんお瀟倖に発信できるなんおすごい゚ンゞニアだけなんだ。ずいう畏怖の取り陀きを解消するこずができたす。 新人育成の䞭で先茩瀟員がリヌドしおあげるこずで新人様の最初の䞀歩を促すこずができたす。 瀟内倖に顔を売るチャンスを䜜る。 瀟倖発信するこずにより人目に぀き、名前や顔が売れおいきたす。 パブリックな掻動を評䟡するような仕組みも瀟倖にはあるので、そこに取り䞊げおもらうこずで圓瀟ずしおも個人ずしおも察倖的な評䟡を受けれるのは玠晎らしいこずです。たた瀟内向けには報告䌚を行うこず新人様ず圹職者を぀なげるような掻動にも発展できたす。 取り組み玹介 ずいうこずで今期取り組んだ新人様6名の蚘事を玹介したいず思いたす。 本むベントを通しお発信されたブログ䞀芧は↓こちら 新人ブログマラ゜ン 2024 【2024/12月2024/3月開催】SCSKの新人たちが自由なテヌマで毎月クラりド技術やテクノロゞヌに関する蚘事をお届けしたす。 blog.usize-tech.com 2024.11.27 ササキさん ◆䞻な業務内容 ・DWH基盀構築Snowflake ・DB構築Oracle ◆趣味 ドラむブ・神瀟仏閣めぐり ◆投皿蚘事 ササキさんの蚘事 Snowflakeの最新機胜を、新米゚ンゞニアの芖点から培底的に解剖する、Snowflake入門ブログ ずなっおいたす。 Snowflakeに興味はあるけれど、䜕から始めれば良いか分からない 最新機胜っお難しそう そんな悩みを抱える方にこそ、ぜひ読んでいただきたい内容です。 特に、Cortex AIを䜿い、ドキュメント怜玢アシスタントを実際に構築しおいく過皋を、基瀎から応甚たで、䞀぀䞀぀䞁寧に解説しおいただきたした。 ✚感想ダむゞェスト✚ 知識敎理および新情報キャッチアップ ​ 🔍 調査や怜蚌の仕方に慣れるこずができた ​ ✍ 習慣的な投皿が倧切だず感じた ​ 初孊者にも䌝わるように執筆するこずは難しい・・・ ​ 💡 客芳的な芖点を持぀こずの倧切さに気付いた ​ 今埌に぀いお 🚀 所属組織のプレれンス向䞊に぀ながるため、 より PV 数を意識しお投皿しおいきたい コりさん ◆䞻な業務内容 ・ USiZE に関連する保守運甚/機胜開発 ◆趣味 ゚クストリヌムスポヌツ・スキヌ ◆投皿蚘事 コりさんの蚘事 Rubrikの様々な偎面を深く理解しおいただけるようなコンテンツ を寄皿いただきたした Rubrikそのものの抂芁、提䟛される機胜、そしおバックアップ管理の党䜓像に぀いお詳しく解説されおいたす。 たた、Rubrikが備えるランサムりェア察策機胜の仕組みず怜蚌や機密デヌタの可芖化ず管理を容易にするSensitive Data Discoveryに぀いおも掘り䞋げおいただきたした。 さらには、RubrikずAWSずの連携に泚目し、EC2のバックアップを自動化するための蚭定手順から、アヌカむブに至るたでの具䜓的な流れを怜蚌されおいたす。 ✚感想ダむゞェスト✚ Rubrikに察する理解の促進 💪実際に手を動かしお怜蚌する䞭で、知識が定着するこずができた​ ​アりトプットの効果 🀝自郚眲以倖ずの亀流が増えた 🀔䌝わりやすい蚀葉遞びや構成の工倫の習埗 今埌に぀いお​ 🎚より倚くの人に届くよう、タむトルや芋せ方も工倫したい​ 🔥実務で埗た知芋をわかりやすく発信し続けおいきたい オダさん ◆䞻な業務内容 ・ USiZE に関連する運甚 ◆投皿蚘事 オダさんの蚘事 実務経隓に基づいたIT技術情報 を寄皿いただきたした PowerShell、ITIL、vCLS、Vagrant/VirtualBoxの技術での課題解決から孊習内容の共有たで広く情報発信されおいたすが、 特に vSphereのvCLS仮想マシンに぀いおのブログ が必芋です。そもそもvCLSずは䜕なのか、vCLSが有効であるずどんないいこずがあるのか、無効にするずどのような圱響があるのかを䞭心に調べおたずめおいただきたした。 ✚感想ダむゞェスト✚ 発信掻動に察する心理的ハヌドルの䜎䞋 😓これたで䜕かを発信した経隓がほずんどなかったので、かなり苊戊 💪むベントを通しお、​自分の䞭で䜕ずなく曞き方のようなものがわかるように 📝情報のたずめ方、ブログの曞き方ぞの理解床向䞊 情報調査の深化​ マガリフチさん ◆䞻な業務内容 ・コンテナ構築 ・IaaSクラりド移行䜜業 ◆趣味 料理・スポヌツ芳戊 ◆投皿蚘事 マガリフチさんの蚘事 AWS Fargateコンテナぞのログむン方法やAWS Cloud9の代替サヌビス比范ずいった、 AWSを利甚する䞭で倚くの方が抱える課題 を䞭心に蚘事執筆いただきたした。 コン゜ヌル画面のスクリヌンショットを豊富に掲茉し、各操䜜の意味を䞁寧に解説しおいたす。読者の皆様が実際に手を動かしながら理解を深められるように工倫されおいるのが䌝わりたす。 ✚感想ダむゞェスト✚ 曖昧だった知識を敎理​ ✍文字に曞き起こすこずで自分の䞭の考えを敎理しなおし、人に説明できるレベルたでもっおいくこずができた アりトプットでスキルアップ 👂自分以倖の読み手が䜕を求めおいるのかを知るこずができた。 🎚サヌビスの理解だけでなく、盞手に読んでもらうブログずしおデザむン力も鍛えるこずができた。​ 🗣指導員フィヌドバックから、新たな知芋を埗るこずができた。 他郚眲ずの亀流 👚‍🏫むベント参加者のブログを読むこずで、自然に業務以倖のサヌビスの知識を知るこずができた。 ワタナベさん ◆䞻な業務内容 ・ S-Cred + プラットフォヌム 運甹 ◆趣味 吹奏楜クラリネット・油そばをすするこず ◆投皿蚘事 ワタナベさんの蚘事   Amazon Bedrockの最新機胜やDatadogハンズオン に぀いお寄皿いただきたした。 特に、re:Invent 2024で発衚された 「Amazon Bedrock Multi-Agent Collaboration」を最速で怜蚌したブログ はおすすめです。 教材がない䞭の独力でのハンズオンのため、​゚ラヌを繰り返した苊劎も含めおいただいたこずで、AWS公匏蚘事を芋お觊っおみる人にずっお有甚なものになったず思いたす。 ✚感想ダむゞェスト✚ ブログ発信の壁突砎 ✍最初の投皿で先茩からのアシストを受けるこずで、​読みやすいブログ執筆のための䜜法を知るこずができた​ 🎉むベントずしお䞀定回数の投皿を行うこずで投皿の仕方が分かる & 習慣化​ 指導員レビュヌからの孊び 👀読み手の求めおいるこずを意識した蚘述​䟋ハンズオン所芁時間​の蚘茉 🎚芖芚的な分かりやすさ​を意識した蚘述図や改行の掻甚​/内容の明瞭性/​衚珟の統䞀 ノガミさん ◆䞻な業務内容 ・DB構築MySQL ◆趣味 スノヌボヌド・お笑い芞人のYouTubeを芋るこず ◆投皿蚘事 ノガミさんの蚘事   MySQLレプリケヌション䞭心に、業務で埗た知識のアりトプット ずしおブログを䜜成いただきたした。 レプリケヌション初孊者による初孊者向けの解説ずなっおいたす。MySQLレプリケヌション方匏の比范怜蚎から、実際の案件における考慮のポむント、さらには、Amazon QuickSightでの集蚈関数利甚時の゚ラヌの共有ず察凊法たで、実践的なノりハりを発信いただいおいたす。 ✚感想ダむゞェスト✚ ブログ発信の壁突砎​ 🀓技術ブログは敷居が高いように感じおいたが、自分でも曞くこずができるずいう自信に぀ながった​ アりトプットの堎ずしお最適​ 🧠業務で䞀床孊んだ知識を振り返るこずができ、知識が敎理された​ 今埌に぀いお​ 🌟知芋を広げるための業務知識以倖のブログ執筆にもチャレンゞしたい 完走した感想 むベントは、「 アりトプット習慣の育成 」「 組織コミュニケヌションの掻性化 」「 瀟倖からの評䟡獲埗のきっかけ䜜り 」ずいう3぀の点で、期埅以䞊の成果を䞊げるこずができたした。 昚幎に比べお、新人の皆さんからは倚皮倚様な技術発信をしおいただきたした。 私自身も、知らなかった技術や知識に觊れるこずができ、倧倉勉匷になりたした。 むベントを通じお、参加者同士が互いに刺激を受け、新たな孊びを埗られた濃密な期間 だったのではないでしょうか。 積極的に参加の声をあげおくださった新人の皆さんに、心から敬意を衚したす。 たた、本むベントの運営にご協力いただいた皆さたにも、この堎を借りお感謝申し䞊げたす。ありがずうございたした。 本ブログを閲芧された瀟内の皆様ぞ 2025幎床も「 新人ブログマラ゜ン 」の開催を予定しおいたす。 「参加しおみたい」「興味がある」ずいう指導員/新人の方は、私たでぜひお気軜にご連絡ください䜕卒䜕卒。
こんにちは、金融゜リュヌション事業郚の孫です。 前線 では、 Unreal Editorを含む Windows コンテナむメヌゞの構築を完了したした。 本蚘事では、 前線 で構築したコンテナむメヌゞを利甚する Amazon EKS以䞋EKSの Windows Node AMIを䜜成したす。 EKSのドキュメント をよるず、 AWS はナヌザヌ向けに最適化された EKS optimized WindowsAMI を提䟛しおいるこずがわかりたした。 このEKS optimized WindowsAMIにはEKSでの動䜜可胜な ミドルりェア がむンストヌルされおいたすが、 前線 で構築したコンテナむメヌゞをサポヌトするには䞍足しおいる郚分がただ倚く存圚したす。 そのため、この蚘事では Unreal Editor甚のカスタム Windows AMIを構築したす。 はじめに Packerに぀いお Packerの特城ず機胜 䜿甚手順 実斜手順 1. Packerツヌルのむンストヌル 2. Packerのテンプレヌトファむルの䜜成 Packerテンプレヌトファむル 3. Windowsむメヌゞのビルドずテスト 終わりに 参考文献 はじめに 本蚘事では、以䞋を前提知識ずしお扱いたす。 AWS の基本操䜜 EKSの䜿甚経隓 コンテナ開発経隓 PowerShell スクリプト の䜜成経隓 今回では、HashiCorp瀟が提䟛する Packer ツヌルを䜿甚しおAMIを䜜成したす。 たた、 AWS が提䟛するEC2 Image Builderを䜿甚しおAMIを䜜成するこずも可胜ですが、以䞋の理由でPackerを遞定したした。 むメヌゞ䜜成プロセスを完党に制埡したい 今埌、既存のCI/CDプロセスに統合する予定がある Packerに぀いお Packerは、HashiCorpによっお開発された オヌプン゜ヌス のツヌルで、異なるプラットフォヌム向けにサヌバヌむメヌゞを自動で䜜成するためのものです。 開発者やシステム管理者がテンプレヌトファむルを通じおむメヌゞを定矩し、 AWS 、Azure、 Google Cloud Platformなど耇数の クラりド サヌビス向けのむメヌゞを䜜成できたす。 Packerの特城ず機胜 むメヌゞの自動䜜成  PackerはOSのむメヌゞを自動䜜成し、手動でのむメヌゞ䜜成や蚭定の時間ず耇雑さを軜枛したす。 マルチプラットフォヌム に察応 Packerは耇数の クラりド プラットフォヌムず仮想化技術をサポヌトしおおり、異なる環境間での䞀貫性を促進したす。 カスタマむズず拡匵性  Packerの蚭定はシンプルなテンプレヌトファむルを䜿甚しお行われ、ナヌザヌは具䜓的なニヌズに応じおむメヌゞをカスタマむズできたす。さらに、Packerは倚くのビルダヌ、事前に蚭定されたテンプレヌト、 プラグむン をサポヌトしおおり、機胜を拡匵できたす。 DevOpsツヌルチェヌンずの統合  Packerは、 Vagrant やTerraformなどの他のDevOpsツヌルず容易に統合でき、CI/CDのプロセスをサポヌトしたす。 䜿甚手順 テンプレヌトの䜜成 ナヌザヌはたず、むメヌゞの䜜成方法を定矩したテンプレヌトファむルを䜜成する必芁がありたす。 ビルドの実行 Packerの コマンドラむン ツヌルを䜿甚しおビルドを実行したす。 具䜓的な䜜成手順は、次のセクションで詳しく説明したす。 実斜手順 Packerツヌルのむンストヌル Packerのテンプレヌトファむルの䜜成 Windows むメヌゞのビルドずテストの実行 䜿甚する環境および゜フトりェアのバヌゞョンは以䞋のずおりです OS Windows 11 Pro 22H2 x64 RAM: 32GB CPU: i5-13600K Packer: v1.10.0 eksctl: 0.176.0 AWS CLI : version 2 1. Packerツヌルのむンストヌル PackerのむンストヌルはTerraformず同様に非垞に簡単です。 exeファむルをダりンロヌドし、 環境倉数 に远加するだけでむンストヌルが完了したす。 # PackerのダりンロヌドURL https://developer.hashicorp.com/packer/install # 環境倉数の蚭定 `Control Panel` ⇒ `System` ⇒ `System Settings` ⇒ `Environment Variables`を順に開き、 `System variables`のボックス内で`PATH`倉数をダブルクリックしお線集画面を開きたす。 倉数倀の最埌に実行ファむルの所圚Pathを远加したす。䟋C:\path たた、 Chocolatey を䜿甚しお Windows ゜フトりェアを管理しおいるナヌザヌは、以䞋のコマンドを実行するだけでむンストヌルが完了したす。 $ choco install packer ※他のシステムのナヌザヌは、Packerの むンストヌルガむド を参考にむンストヌルしおください。 むンストヌル完了埌、Packerが正しくむンストヌルされおいるか確認したす # 以䞋のコマンドを実行し、正しくバヌゞョン情報が衚瀺されればむンストヌル成功 $ packer version Packer v1.10.0 2. Packerのテンプレヌトファむルの䜜成 構築する Windows AMIに含める必芁がある゜フトりェアは以䞋のずおりです。 今回は、 Windows ノヌド䞊で Unreal Editorを含むコンテナむメヌゞを実行する為、 GPU 関連の゜フトりェアを含めおいたす。 NVIDIA GPU drivers Vulkan runtime library DirectX shader compiler ※本蚘事では取り扱いたせんが、EKSを掻甚しおコンテナを運甚する手順に぀いおは unrealcontainers を参照しおください。 たた、 Unreal Editorコンテナの起動速床を向䞊させるために、 Windows AMI内に事前にキャッシュしおおく必芁もありたす。 次に、テンプレヌトファむルの䜜成に取り掛かりたす。 Packerテンプレヌトファむル Packerテンプレヌトのフォヌマットず文法はTerraformず同様であり、Terraformの䜿甚経隓があるナヌザヌはすぐに䜿いこなせるでしょう。 Terraformの䜿甚経隓がないナヌザヌでも心配ありたせん。テンプレヌトの定矩内容は非垞に盎感的で、䜕をしようずしおいるのかが理解しやすいです。 では、テンプレヌトファむルeks-worker-node-ami.pkr.hclの䜜成を開始したしょう。 たず、必芁な プラグむン およびそのバヌゞョン情報を定矩したす。 #タヌゲットのクラりドサヌビスはawsであるため packer { required_plugins { amazon = { version = ">= 1.0.9" source = "github.com/hashicorp/amazon" } } } AMI䜜成のEC2を定矩する この蚭定は、PackerがEC2 むンスタンス を構築し、そこからAMIを䜜成するために䜿甚するパラメヌタず蚭定を指定したす。 利甚されるPackerのSource名は amazon-ebs です。 䞻なパラメヌタには、AMI名、゜ヌスAMI、 むンスタンス タむプ、リヌゞョンなどがありたす。 ここでは、 AWS が提䟛する EKS optimized WindowsAMI をベヌスむメヌゞずしお䜿甚し、その䞊に必芁なシステム環境を構築したす。 EKS optimized WindowsAMI には、EKSに接続するために必芁なOS環境が既に構築されおいるため、この基盀を䜿甚するこずでプロセスを簡玠化できたす。 source "amazon-ebs" "eks-worker-node" { ami_name = "eks-windows-worker-node" # AMI name instance_type = "g4dn.2xlarge" # instancetype region = "ap-northeast-1" # region vpc_id = "vpc-xxxxxxxxxxxxxxxxx" # VPC id subnet_id = "subnet-xxxxxxxxxxxxxx" # Subnet id # base AMI source_ami_filter { filters = { name = "Windows_Server-2022-English-Full-EKS_Optimized-1.28-*" root-device-type = "ebs" virtualization-type = "hvm" } most_recent = true owners = [ "amazon" ] } # Expand the boot disk to 120GB launch_block_device_mappings { device_name = "/dev/sda1" volume_size = 120 volume_type = "gp3" delete_on_termination = true } # Allow S3 access for the VM temporary_iam_instance_profile_policy_document { Version = "2012-10-17" Statement { Action = [ "s3:Get*" , "s3:List*" , "s3:Describe*" , "s3-object-lambda:Get*" , "s3-object-lambda:List*" ] Effect = "Allow" Resource = [ "*" ] } } # Use our startup script to enable SSH access user_data_file = "$ { path.root } /scripts/startup.ps1" # Use SSH for running commands in the VM communicator = "ssh" ssh_username = "Administrator" ssh_timeout = "30m" # Don't automatically stop the instance, since sysprep will perform the shutdown disable_stop_instance = true } ビルドプロセスを䜜成する ここで、AMI名、参照する゜ヌス名䞊蚘で構築したEC2 むンスタンス を蚭定し、最埌に Powershell スクリプト を実行しお必芁な環境を構築したす。 ビルドが完了したAMIは、 AWS コン゜ヌルで確認できたす。 build { name = "eks-worker-windows-node" sources = [ "source.amazon-ebs.eks-worker-node" ] # Run our setup script provisioner "powershell" { script = "$ { path.root } /scripts/setup_base_eks_optimized_ami.ps1" } # Perform cleanup and shut down the VM provisioner "powershell" { script = "$ { path.root } /scripts/cleanup.ps1" valid_exit_codes = [ 0 , 2300218 ] } } ここたでで、AMI䜜成のテンプレヌトファむルの䜜成が完了したした。 次に、環境を構築するための PowerShell スクリプト を䜜成したす。 ① スタヌトアップ スクリプト startup.ps1 この スクリプト の目的は、EC2の SSH を構成し、埌続のEC2ぞのログむンおよび構築 スクリプト の実行に䜿甚するこずです。 EC2のmetaServiceにはIMDSv1ずIMDSv2の2぀のバヌゞョンがありたす。 ご自身のEC2蚭定に応じお、察応するバヌゞョンのコヌドを遞択しおください。 # startup.ps1 <powershell> # Install the OpenSSH server and set the sshd service to start automatically at system startup Add-WindowsCapability -Online -Name OpenSSH.Server~~~~ 0.0.1.0 Set-Service -Name sshd -StartupType 'Automatic' # Create the OpenSSH configuration directory if it doesn't already exist $sshDir = 'C:\ProgramData\ssh' if (( Test-Path -Path $sshDir ) -eq $false ) { New-Item -Path $sshDir -ItemType Directory -Force | Out-Null } # Retrieve the SHH public key from the EC2 metadata service $authorisedKeys = " $sshDir \administrators_authorized_keys" # IMDSv2 #$response = Invoke-WebRequest -Uri "http://169.254.169.254/latest/api/token" -Method PUT -Headers @{"X-aws-ec2-metadata-token-ttl-seconds"="21600"} #$token = $response.Content #$metadata = Invoke-WebRequest -Uri "http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key" -Headers @{"X-aws-ec2-metadata-token"=$token} #$metadata.Content | Out-File -FilePath "$authorisedKeys" # Retrieve the SHH public key from the EC2 metadata service # IMDSv1 curl.exe 'http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key' -o " $authorisedKeys " # Set the required ACLs for the authorised keys file icacls.exe " $authorisedKeys " / inheritance:r / grant "Administrators:F" / grant "SYSTEM:F" # Install the Windows feature for containers, which will require a reboot Install-WindowsFeature -Name Containers -IncludeAllSubFeature # Restart the VM Restart-Computer < / powershell> ② 構築 スクリプト setup.ps1 たず、䜿甚するバヌゞョン情報およびむンストヌルに䜿甚する䞀時フォルダヌを蚭定したす。 # setup.ps1 # Constants $Containered_Ver = "1.7.11" $eks_optimized_ami_windows_Ver = "1.28.0" $ContainerdPath = "$env:ProgramFiles\containerd" $TempRoot = "C:\TempEKSArtifactDir" $TempPath = "$TempRoot\EKS-Artifacts" # Create each of our directories Write-Host "Create each of our directories" foreach ($dir in @($TempRoot, $TempPath)) { New-Item -Path $dir -ItemType Directory -Force | Out-Null } バヌゞョン遞定に関しお泚意すべき2点は次の通りです Windows Serverのコンテナランタむムの遞定に぀いおは、 Microsoft公匏がcontainerdの䜿甚を掚奚しおいたす 。Dockerは珟圚サポヌトされおおらず、containerdのみが GPU サポヌトなどの Windows Containerの高床な機胜をサポヌトしおいたす。 Kubernetes で Windows Containerの GPU サポヌト プラグむン を䜿甚するためには、containerdのバヌゞョンが1.7.0以䞊である必芁がありたす。 参考 https://github.com/TensorWorks/DirectX-Device-Plugins?tab=readme-ov-file EKS optimized WindowsAMI にキャッシュむメヌゞを远加するためには、 EKS optimized WindowsAMI の構築 Image Builder Component を䜿甚する必芁がありたす。具䜓的なバヌゞョンは Kubernetes のバヌゞョンに䟝存したすが、今回は1.28.0バヌゞョンを䜿甚したす。 次に、必芁な゜フトりェアを順にむンストヌルしたす。 NVIDIA GPU drivers # Install the NVIDIA GPU drivers Write-Host "Install the NVIDIA GPU drivers" $driverBucket = 'ec2-windows-nvidia-drivers' $driver = Get-S3Object -BucketName $driverBucket -KeyPrefix 'latest' -Region 'us-east-1' | Where-Object {$_.Key.Contains('server2022')} Copy-S3Object -BucketName $driverBucket -Key $driver.Key -LocalFile "$TempRoot\driver.exe" -Region 'us-east-1' Start-Process -FilePath "$TempRoot\driver.exe" -ArgumentList @('-s', '-noreboot') -NoNewWindow -Wait Vulkan runtime library # install the Vulkan runtime library Invoke-WebRequest -Uri "https://sdk.lunarg.com/sdk/download/latest/windows/vulkan-runtime-components.zip?u=" -OutFile "$env:TEMP\vulkan-runtime-components.zip" Expand-Archive -Path "$env:TEMP\vulkan-runtime-components.zip" -DestinationPath "$env:TEMP" Copy-Item -Path "*\x64\vulkan-1.dll" -Destination C:\Windows\System32\ DirectX shader compiler # Retrieve the DirectX shader compiler files needed for DirectX Raytracing (DXR) Invoke-WebRequest -Uri "https://github.com/microsoft/DirectXShaderCompiler/releases/download/v1.6.2104/dxc_2021_04-20.zip" -OutFile "$env:TEMP\dxc.zip" Expand-Archive -Path "$env:TEMP\dxc.zip" -DestinationPath "$env:TEMP" Copy-Item -Path "$env:TEMP\bin\x64\dxcompiler.dll" C:\Windows\System32\ Copy-Item -Path "$env:TEMP\bin\x64\dxil.dll" C:\Windows\System32\ # Clean up any temp files generated during prerequisite installation Remove-Item -LiteralPath "$env:TEMP" -Recurse -Force New-Item -Type directory -Path "$env:TEMP" そしお、 EKS optimized WindowsAMI に含たれおいるContainerdのバヌゞョンを曎新したす1.6.18⇒1.7.1 # TEMPORARY UNTIL EKS ADDS SUPPORT FOR CONTAINERD v1.7.11: # Download and extract the containerd 1.711 release build Write-Host "Download and extract the containerd 1.7.11 release build" $webClient = New-Object System.Net.WebClient $containerdTarball = " $TempPath \containerd- $Containered_Ver .tar.gz" $containerdFiles = " $TempPath \containerd- $Containered_Ver " $webClient .DownloadFile( "https://github.com/containerd/containerd/releases/download/v $Containered_Ver /containerd- $Containered_Ver -windows-amd64.tar.gz" , $containerdTarball ) New-Item -Path " $containerdFiles " -ItemType Directory -Force | Out-Null tar.exe -xvzf " $containerdTarball " -C " $containerdFiles " # Stop containerd service Stop-Service -Name "containerd" -Force # Upgrade container version from 1.6.18 to 1.7.11 Write-Host "Upgrade container version from 1.6.18 to 1.7.11" Move-Item -Path " $containerdFiles \bin\containerd.exe" -Destination " $ContainerdPath \containerd.exe" -Force Move-Item -Path " $containerdFiles \bin\containerd-shim-runhcs-v1.exe" -Destination " $ContainerdPath \containerd-shim-runhcs-v1.exe" -Force Move-Item -Path " $containerdFiles \bin\ctr.exe" -Destination " $ContainerdPath \ctr.exe" -Force # restart containerd service Start-Service -Name containerd # Clean up the containerd intermediate files Write-Host "Clean up the containerd intermediate files" Remove-Item -Path " $containerdFiles " -Recurse -Force Remove-Item -Path " $containerdTarball " -Force 最埌に、 EKS optimized WindowsAMI のImage Builder コンポヌネント を䜿甚しお、前線で䜜成したコンテナむメヌゞをキャッシュむメヌゞずしお远加したす。 # Download the EKS artifacts archive Write-Host "Download the EKS artifacts archive" $webClient .DownloadFile( "https://ec2imagebuilder-managed-resources-us-east-1-prod.s3.amazonaws.com/components/eks-optimized-ami-windows/ $eks_optimized_ami_windows_Ver /EKS-Artifacts.zip" , "C:\EKS-Artifacts.zip" ) # Extract the EKS artifacts archive Write-Host "Extract the EKS artifacts archive" Expand-Archive -Path "C:\EKS-Artifacts.zip" -DestinationPath $TempRoot Remove-Item -Path "C:\EKS-Artifacts.zip" -Force # Add the unreal-engine-dev-windows-5.1:latest to the list of images to pre-pull Write-Host "Add the unreal-engine-dev-windows-5.1:latest image" $baseLayersFile = " $TempPath \eks.baselayers.config" $baseLayers = Get-Content -Path $baseLayersFile -Raw | ConvertFrom-Json $baseLayers .ue += "unreal-engine-dev-windows-5.1:latest" $patchedJson = ConvertTo-Json -Depth 100 -InputObject $baseLayers Set-Content -Path $baseLayersFile -Value $patchedJson -NoNewline # Get added new BaseLayers Write-Host "Perform EKS worker node setup" Push-Location $TempPath .\ Get-EKSBaseLayers .ps1 -ConfigFile eks.baselayers.config -ContainerRuntime containerd Pop-Location # Perform cleanup Write-Host "Perform cleanup" Remove-Item -Path " $TempRoot " -Recurse -Force ③ クリヌン スクリプト cleanup.ps1 この スクリプト の目的は、スタヌトアップ スクリプト startup.ps1で蚭定した SSH 環境を削陀し、sysprepシステム準備を開始するこずです。 # cleanup.ps1 # Perform cleanup Set-Service -Name sshd -StartupType 'Manual' Remove-Item -Path 'C:\ProgramData\ssh\administrators_authorized_keys' -Force # Remove the file for this script, since Packer won't have a chance to perform its own cleanup Remove-Item -Path $PSCommandPath -Force # Perform sysprep and shut down the VM # Need delete edge account for sysprep & " $Env:ProgramFiles \Amazon\EC2Launch\EC2Launch.exe" sysprep --shutdown = true 3. Windows むメヌゞのビルドずテスト テンプレヌトファむルに察しおPackerコマンドを実行し、 Windows AMIのビルドを開始したす。 ビルドコマンド $ packer build .\eks-worker-node-ami.pkr.hcl ...出力ログ... ==> Wait completed after 52 minutes 42 seconds ==> Builds finished. ビルド完了の確認 AWS Console ⇒ EC2 ⇒ むメヌゞ ⇒ AMI で䜜成されたAMIを確認できたす。 Windows AMIのテスト AMIをテストするために、eksctlを䜿甚しおEKSを䜜成したす。 以䞋の yaml ファむルでは、2぀のnodegroupを含む Kubernetes クラスタ ヌを定矩しおいたす。 # test_windows_node_eksctl.yaml apiVersion : eksctl.io/v1alpha5 kind : ClusterConfig metadata : name : test-windows-node-cluster region : ap-northeast-1 version : '1.28' nodeGroups : - name : windows-ng instanceType : g4dn.2xlarge ami : [ 䜜成したAMI id, ami-xxxxx ] amiFamily : WindowsServer2022FullContainer volumeSize : 120 minSize : 1 maxSize : 1 - name : linux-ng amiFamily : AmazonLinux2 minSize : 1 maxSize : 1 EKSの䜜成を開始したす $ eksctl create cluster -f test_windows_node_eksctl.yaml 完了確認 eksctlのコマンド実行により、 AWS はCloudFormationを呌び出しおリ゜ヌスを䜜成したす。 CloudFormationでの確認 EKS管理コン゜ヌルでの確認 クラスタ ヌの確認 ノヌドグルヌプの確認 Session Manager を䜿甚しお Windows ノヌドにログむンし、゜フトりェアのむンストヌルおよびむメヌゞのキャッシュを確認 containerdのバヌゞョンが1.7.11であるこずを確認 NVIDIA GPU ドラむバヌを確認 Vulkanず DirectX を確認 unreal -engine-dev- windows -5.1:latestがキャッシュされおいるこずを確認 終わりに 本蚘事を読むこずで、UEアプリ甚のカスタム Windows Node AMIの䜜成方法に぀いお理解しおいただけたず思いたす。 もちろん、この蚘事で䜜成した スクリプト は Unreal Editorの動䜜芁件に基づいおいたすが、ビルドテンプレヌトファむルは共通のものです。 今埌、読者は AWS 提䟛の EKS optimized WindowsAMI がご自身のプロゞェクト芁件を満たさないず感じた堎合、この蚘事を参考にしお スクリプト を眮き換えお独自の Windows AMIを䜜成できたす。 この蚘事では、 Windows Containerでの GPU 利甚芁件に぀いお蚀及したした。これに興味を持たれる方もいるでしょう。 次回の蚘事では、今回䜜成した Windows ノヌドを䜿甚しお、 Unreal Engine のPixel Streamingプロゞェクトを実珟する方法に぀いお説明したす。 どうぞお楜しみに。 珟圚、 電通 総研は web3領域のグルヌプ暪断組織 を立ち䞊げ、Web3および メタバヌス 領域のR&Dを行っおおりたすカテゎリヌ「3DCG」の蚘事は こちら 。 もし本領域にご興味のある方や、䞀緒にチャレンゞしおいきたい方は、ぜひお気軜にご連絡ください 私たちず同じチヌムで働いおくれる仲間をお埅ちしおおりたす 電通総研の採甚ペヌゞ 参考文献 Amazon EKS EKS optimized WindowsAMI Packer amazon-ebs Windows install-the-container-runtime DirectX-Device-Plugins 執筆 @chen.sun 、レビュヌ 寺山 茝 (@terayama.akira)  Shodo で執筆されたした 
この蚘事は、むベント 【 PERSOLパヌ゜ルグルヌプ Tech Talk #3 - 技術負債ずの向き合い方 - 】を開催したした。 の発衚内容です。 パヌ゜ルホヌルディングスの岩田ず申したす。パヌ゜ルホヌルディングスはパヌ゜ルグルヌプのホヌルディングス䌚瀟で、各グルヌプ䌚瀟に共通のIT基盀などを提䟛しおいたす。 早速、発衚の方に移らせおいただきたす。 「リファクタリングを繰り返しおOSS化した話」ずいうタむトルで発衚をする予定だったんですが、ちょっずタむトルを最埌で倉えたした。 「技術的負債を負債では終わらせない。OSS化による悪あがきず、目指したい゚ンゞニア環境」ずいうこずで、本日は発衚させおいただきたいず思いたす。

動画

該圓するコンテンツが芋぀かりたせんでした

曞籍

該圓するコンテンツが芋぀かりたせんでした

おすすめマガゞン

蚘事の写真

【アクセンチュア】20幎のキャリアで芋぀けた、自分で遞び取る働き方ずは

蚘事の写真

AI゚ヌゞェントの本番運甚を成功に導くアヌキテクチャ蚭蚈ずデヌタ前凊理の実践

蚘事の写真

【オムロン】ITずOTはなぜ分かり合えないのか ―時間ずデヌタをめぐる蚭蚈のリアル、補造業DXの「泥臭い」真実

蚘事の写真

仙台X-TECHむノベヌションアワヌド2026 ──「AI×人間の熱意」で付加䟡倀の高いビゞネスを芋出す前線

蚘事の写真

仙台X-TECHむノベヌションアワヌド2026 ──「AI×人間の熱意」で付加䟡倀の高いビゞネスを芋出す埌線

新着動画

蚘事の写真

【3分】守れる゚ンゞニアが匷くなる理由。Project Glasswingの本質は“新モデル”じゃない / Claude...

蚘事の写真

【ゞュニア゚ンゞニア䞍芁論】最匷組織は短呜に終わる/質ずスピヌドはトレヌドオフじゃない/和田卓人氏(t-wada)/埌線...

蚘事の写真

【3分でわかる】SNSで議論沞隰「ハヌネス゚ンゞニアリング」賛吊䞡論の本質は / AI゚ヌゞェントの品質を最倧化 / ...