tech.guitarrapc.cóm

Technical updates

.NET

AWS Secret Manager を使ってASP.NET Core のシークレット情報を扱う

.NET CoreでAWSにおいて機微情報を扱うときに、AWS Secret ManagerやSystem ManagerのParameter Storeが候補に上がります。 ここでは、Secret Managerを使ったASP.NET Coreでの組み込みについて書いておきます。 TL;DR AWS Secret の選択 AWS SecretManager …

非ASP.NET Coreなプロジェクトで UserSecretsを使うためのVisual Studio 拡張を作りました

非ASP.NET Core、特にGeneric Hostで開発するなら必要になるVS拡張を公開していたのを忘れていました。*1 今回は、GenericHostなど非ASP.NET Coreなプロジェクトでも、ASP.NET CoreなプロジェクトにあるManage UserSecrets (ユーザーシークレットの管理) と…

.NET Core でgitなどSCM情報をCIで埋め込んでアプリケーションに表示する方法と選択

開発中、リリースのいずれにおいても「今どのバージョンなのか」という情報は重要な情報です。 とはいえ、実際に埋め込みたいのはバージョンというより「ソースコード」とくに「コミット」と連動する情報、加えて「ビルド」と紐づく情報もほしいでしょう。 …

.NET Core で AssemblyInfo.cs の生成を制御する

C# のアセンブリ情報はAssemblyInfo.csによって制御されています。 .NET Coreでいくぶん取り扱いが変わったものの基本は一緒です。 たびたび忘れるので、どのように取り扱いが変わったのか制御方法をメモしておきます。 TL;DR Microsoft.NET.GenerateAssembl…

.NET Core Global Tools のインストールとアップグレードを状態に応じて行う

.NET Core Global Toolsは.NET Core SDKがインストールされている環境でdotnet系cliツールをlist/install/upgrade/uninstallを行う仕組みです。 docs.microsoft.com この仕組みがでたことで、少なくともdotnet core製のCLIツールの配布はnugetを経由すること…

Azure Storage Queue を Application Insightsで監視する

あるあるなQueueの監視ですが、自前でやらなきゃいけないならServerlessにぺちって任せるのは楽ちんですよ、というのはよくあるパターンです。 実際にQueue Storageのモニタリングをしてみましょう。 TL;DR Azure Storage QueueやService Busなどのキューサ…

Slotを用いたAppService のステージング環境とAzureDevOps PipelineのリリースによるBlueGreen Deployment

AzureのApp ServiceにはSlotがあります。 Slotはただ利用してもそれなりにうれしいのですが、Terraformでの構成とAzure DevOpsのリリースパイプラインでの展開を行えるようにすることで、「CI/CDによるApp ServiceのSlotによる展開前のステージング環境での…

base64urlを扱えるNuGetライラブラリと.NET Core Global Toolを作りました(MicroBatchFrameworkも使ったよ)

最近JWTを取り扱っているのですが、仕様上base64urlフォーマットを頻繁に利用します。 C# でbase64というと、Convert.FromBase64Stringあたりですが、base64urlにしてくれるような気の利いた仕組みはなく、入力がbase64url仕様に沿ってないとすぐに例外を吐…

.NET CoreのGeneric Host で Windows Service を作成する

.NET FrameworkでWindows Serviceを作るときは、Windows Serviceのために地道に実装するのは大変.... なので、TopShelfを使うことが定番でした。以前NancyをWindows Serviceでホストする記事を書いたこともあります。 tech.guitarrapc.com では、.NET Coreで…

.NET Standard や .NET Core におけるAzureのStorage関連nugetパッケージの選択

AzureのC# 向けStorage SDKはnugetでサクッとアプリケーションに追加できます。 しかし、現時点ではWindowsAzure.StorageパッケージとMicrosoft.Azure.Storage.Xxxxパッケージに分かれており、お互いが干渉合うために混在するとAssembly Bindingsを含む解決…

.NET Core の Generic Host で WebJobs を利用する

Generic Hostを使った場合でも、これまで .NET Coreで書いてきた処理は問題なく組み込むことができます。 最近Azure WebJobsをGeneric Hostで使う機会があったので見てみましょう。 ※ 社内向けブログの転載なのでシリーズ化します。 TL;DR; 事前に読んでおき…

.NET Core で Generic Host を利用する

ASP.NET Core 2.1で追加されたGeneric Host (汎用ホスト) は、non-Web Appアプリの作成をASP.NET Coreと似た書き心地で提供します。 今後のスタンダードとなる見込みですが、どのようにしてGeneric Hostを利用するのか見てみましょう。 ※ 社内向けブログの転…

パスワード管理をTeamsId から Bitwarden に移行した

今のパスワード管理に小さな不満があるので長年次のパスワード管理をさがしていたのですが、Bitwardenが今ある全ての望みをかなえてくれました。 bitwarden.com 今回、TeamsIdからBitwardenに全面移行したのでその移行についてメモをしておきます。 今まで使…

はてなブログを https 対応するためにmixed content を検知する MixedContentCheckerを作った

前回の記事でhttps化の前段階として、はてなブログの全URLを取得しました。 tech.guitarrapc.com https化を有効にすると、mixed contentが出るようになるので有効にします。 あとは、https化したページにhttpコンテンツが混じっている時に起こる、mixed cont…

はてなブログの全エントリーURLを取得する

このブログ、実はhttpのままです。 はてなブログをやめるか考えているのですが、いったんhttps対応を進めましょう。 困るのがmixed contentなのですが、とっかかりとしてこのブログの全URLを取得します。 sitemap の取得 PowerShell CSharp Golang まとめ si…

PowerShellでマルチプラットフォームに動くモジュールの作成と継続的なテスト

この記事は、PowerShell Advent Calendar 2018 の 22日目です。 qiita.com 今年は、PowerShell Coreについて本を書いたのですが、その中で書ききれなかった.NET Core と .NET Framework の両方で動くPowerShellモジュールの実用的なサンプルです。 目的 Utf8…

.NET Core App を Docker コンテナとして公開する

C# を使っていて最も困るのがランタイムと感じます。 C#は書きやすい、Visual Studio も使いやすいは良く耳にします。実際享受しやすいメリットだと思いますが、C# を Windows 以外で実行したいはどうでしょうか? 今回はその実行方法についてコンテナを用い…

.NET Core on Lambda で Unity Cloud Build のWebhook処理とLambda をネスト実行する

今回は、Unity 開発に欠かせない存在になってきた Unity Cloud Build のビルド通知をAWS Lambda (.NET Core) でいい感じに処理することを考えてみます。手始めに、他のチャット基盤 (Chatwork) への通知に取り組んでみましょう。 結果こんな通知がくるように…

.NET Core on Lambda の CI を組んでみる

パッケージの利用、ローカルテスト、ビルド、Visual Studioからのデプロイまで来たのでローカル開発は問題なくできそうですね。ただCIがないままではチーム開発がしにくいです。 tech.guitarrapc.com tech.guitarrapc.com tech.guitarrapc.com そこで今回は…

.NET Core on Lambda で nuget パッケージを利用してみた

といいつつ、当初から Json.NET を利用しているのですが、そこはおいておきましょう。 今回は、AWS Lambda で nuget パッケージを利用してみます。とはいっても難しいことは何もなく、通常の.NET Core アプリと同様です。 Azure Fucntions とは少し違うので…

.NET Core on Lambda のローカルデバッグでロガーと変数確認する

Serverless といっても大事なのはローカルで実行できるかです。どんなに便利でも高速なイテレーションが回せないものは継続せず触らなくなったり進化の波に乗れません。 さて、.NET Core on Lambda が出た当初にローカルデバッグで ILambdaContext がないた…

.NET Core on Lambda で Github 連携をSlack に飛ばしてみよう

私の中で Serverless ななんとかネタで鉄板なのが、Github の PRやIssue などの通知連携です。日々使っているものなのでついつい。 もちろん過去にも Lambda + Node.js や Azure Functions で作っています。 tech.guitarrapc.com では .NET Core でもやって…

.NET Core on Lambda で Slack Slash Command を作ってみよう

さて、前回、前々回と .NET Core on Lambda の下回りを見てきました。 tech.guitarrapc.com tech.guitarrapc.com 大事なパッケージ周りやデプロイについては別の機会にするとして、そろそろ簡単なコマンドをWebhook で投げて返してみましょう。ついでに Lamb…

.NET Core on Lambda で テスト、ローカル実行、async/await、ロギングについて

さて、AWS Lambda の続きです。 tech.guitarrapc.com Lambda というか サーバーレスに限らず、ローカル実行ができるか、言語機能の対応状況、ログ確認方法は開発の基本となります。NuGetパッケージの対応状況や他を見る前にざっと確認しておきましょう。 テ…

.NET Core on AWS Lambda がリリースされました

今年は非常にうれしいことが Azure と AWS 両方でありました。Azure Functions と .NET Core on AWS Lambda です。 これまで多くの AWS Lambda関数 (Node.js) と Azure Functions (C#) を書いてきましたがこれでようやく AWS Lambda に完全に寄せることがで…