IT業界の様々な商売の仕方についてのメモ

モノまたはコトを売るのはIT業界でも同じ。でもIT業界ならではの様々な形態が存在する。 汎用製品の販売 最初になんらかの汎用製品を開発し、それを売って対価を貰うスタイル。料金の徴収スタイルによっても若干の違いがある。 一括で対価を貰う(パッケ…

GitHub Copilot in Visual Studio Codeを試してみた

かねてから気になっていたGitHub Copilotを試してみることにした。開発効率やコード品質の向上に繋げられるなら月額10$くらい安いものだが、その実力やいかに。 サインアップ 使ってみた 関数名が重要? ある程度抽象的な関数にも対応してくれるのか? 実際…

AWSでなぜコンテナ・Dockerを使うのか?

Software Design (ソフトウェアデザイン) 2022年11月号で"なぜコンテナ・Dockerを使うのか?"という問いかけがなされていたので、自分も思うところを書いてみたい。 コンテナのメリットは? 1. 環境を再現しやすい 2. 一つ一つのコンテナの設定が分離するの…

Cannotpullcontainererror: pull image manifest has been retried 5 time(s): failed to resolve ref docker.io/library/nginx:latest: failed to do request

先の記事の後にもIPv6 Only VPCを試していたのだが、思わぬところに落とし穴がやはりあった。 問題 解決 その他 問題 "Cannotpullcontainererror: pull image manifest has been retried 5 time(s): failed to resolve ref docker.io/library/nginx:latest: …

IPv6オンリーのVPCで遊んでみた

タイトルの通り、IPv6オンリーのVPCを試してみた。以前の記事でIPv6オンリーは業務用だと要注意、と書いたばかりだが、個人用途で試す分にはイケイケでいける。NAT ゲートウェイがいらない(Egress Only IGWが使えるので)ため安くあがる点が個人用途だとポ…

多段SSHでPrivate SubnetにあるEC2インスタンスに接続する

Private SubnetにEC2インスタンスを立てて使う場合、踏み台を経由して接続できるようにしたほうが色々と便利なことが多い。 というわけで多段SSHの設定を書き残しておく。 結論 ~/.ssh/config に、ProxyCommandを使いつつ、例えば下記のように記載する。 bas…

AWSのVPCでIPv6にするべきか?

AWSのVPCでIPv6が使えるようになってからしばらく経つ。 そろそろIPv6にすべきなのか、IPv4にすべきなのかを考えてみた。 結論 特にIPv6を使う理由はなく判断しかねるならまだIPv4にしておいたほうが無難。 IPv6だけで行けると確信できるならIPv6オンリーに…

AWS CLIをMFA付きで使う際のbatファイル(Windows用)

公式で公開されているMFAのためのコマンドを毎回コピペコピペで実行するのは嫌すぎるので、簡略に――作り込むほどのものではないので――バッチファイルを作って使うことにした。 言うまでもなくWindows用である。 内容 一部マスキングしているが、下記のような…

DockerでTerraformを利用してみる

しばらく暫定的にWindow直でTerraformを利用していたが、環境を再現しづらく、従って環境の統一もしづらい問題が気になる。ついでに、AWSをMFA付きで利用するにあたっては、いちいち公式で紹介されている手順を使うのも地味に手間がかかるので、こちらで紹介…

AWSのVPC作成に"VPC and more"が増えていたので使ってみた

今日別件でVPC画面を触っていたら、VPCに新しい操作画面が追加されていたので早速触ってみた。 なにこれ素敵 なんとVPCと一緒に作るリソース、すなわちSubnet、Route Table、igw、S3 Endpoint、Nat gatewayをセットで作ってくれる。 試してみたところ、これ…

読書感想文:稼ぐ力を手にするたったひとつの方法 Kindle版

稼ぐ力を手にするたったひとつの方法 Kindle版を呼んだため、自分の中のまとめがてらにメモ。 相手の立場で物事を考える というのが"たったひとつ"であるようだ。 大事なことであるのはたしか。そして自分のことばかり考えているとおろそかになりやすいのも…

Visual Studio Code Draw.io Integrationを試してみた

Draw.ioをVSCodeから使えるという拡張機能Draw.io Integrationを試してみた。 こんな感じ 感想 こんな感じ 素晴らしいことに、編集結果をエクスポート作業なしに普通のsvgファイルとして扱うことができる。 ということは、VSCodeをいれていない人にも作成し…

Terraformを使えるならAmplifyを使わずにS3+CloudFrontでよさそう

この比較記事をたまたま見ていたのでメモ。 結論、現段階では、Terraformを使っているならS3+CloudFrontでよいという印象。 Amplifyは、手軽さとのバーターなのである意味当然なのだが、カスタマイズ性が弱い。たとえばDevelop環境のCloudFrontにWAFをセット…

The API with ID XXXXXXXXXX doesn’t include a resource with path /* having an integration arn:aws:lambda:ap-northeast-1:XXXXXXXXXX:function:product-send-mail on the ANY method.

課題 Lambdaの実行権限をAPI Gatewayに与えると、どういうわけかタイトルのエラーメッセージが、コンソール上で、下記のように赤字で表示された。 解決 表示の問題にすぎないので気にしなくていいらしい。自分の環境ではAPI GatewayからLambdaを実行すること…

【日記】個人サイトをリニューアル

ここ数年くらい放置していた個人サイトを、技術検証も兼ねてリニューアルした。 といってもメインコンテンツはブログなので、個人サイトのほうはトップページとお問い合わせフォームくらいしかないのだが、 Visual Studio Codeの活用。 同じくWSLとコンテナ…

本番環境へのデプロイはどう行うべきなのか?

ITサービスの開発・運用を行うにあたって避けて通れないのがデプロイである。プロジェクトのたびに一から考えると(そしてドキュメント化するのも)手間がかかるので、よくある方針や例を記しておく。 方針 それぞれどう実現すればいいか? 構成例 環境の分…

CORSで困ったときのリンク

先日CORSのエラーに散々悩んだので、解決のための参考になったリンクを記載。 ちなみに構成はFront(Next.js) + Back(AWS API Gateway + Lambda(Python)) 。 リンク たとえば リンク CORSの切り分け方法を載せてくれている。神。 https://future-architect.gi…

CloudFrontのCNAMEは重複不可

問題 新旧の個人用サイトを並行で動かそうとしたところ、CloudFrontの作成でエラー発生(CNAMEAlreadyExists)。 module.personal_website_frontend.aws_cloudfront_distribution.front_cdn: Creating... ╷ │ Error: error creating CloudFront Distribution…

Terraformの*.tfstateファイルを保存するためのS3のバケットをCLIで作る

TerraformのtfstateファイルをS3に保存する場合、そのバケット自体はTerraformを使わずに作成することが推奨されている。 というわけで、CLIを使ってバケットを作成することにした。 コマンド 先にコマンドを記載する。結論、以下のようにした。 aws s3api c…

S3のバケットをどのように分けるか?

S3を利用するにあたっては、通常、いくつかのバケットに分けて利用することになる。一つのバケットに全部おさめるとバケットの中がカオスになるからだ。 だが思いつき次第にバケットを作っていくのも不味い。今度はS3自体がカオスになってしまう。そもそも1…

Next.jsで静的HTMLエクスポートをするとリンク先が変わる

課題 Next.jsで静的HTMLエクスポートをすると、各ページごとに*.htmlの拡張子が付いたHTMLファイルが作られる。 ところが、このためにhttps://www.example.com/contactではリンクが繋がらず、https://www.example.com/contact.htmlとしなければいけなくなっ…

MUIを使って個人サイトをリニューアル

Next.jsで個人サイトをリニューアルするにあたり、MUIのテンプレートがFreeかつ便利そうであったため、これを採用することにした。WEBデザインまでは手が回らない自分にとり、テンプレートはありがたい存在である。自前で一からデザインするより早いし高クオ…

API GatewayをTerraformで構築するのはあまり向かないかも

AWS Lambda + API Gatewayでサーバーレスのメール送信関数を用意することにした。 そして、そのインフラ構築にTerraformを利用してみたのだが、結論、API GatewayとTerraformはどうにも相性がよくないように思われる。 なにが困るのか ではどうするか なにが…

Error: Image Optimization using Next.js' default loader is not compatible with `next export`.

課題 Next.jsで作成したアプリケーションを静的ウェブサイトとしてExportしたい。そこでpackage.jsonのbuildの箇所を書き換えた上で "scripts": { "dev": "next dev", "build": "next build && next export", <----ここ "start": "next start", "lint": "nex…

はてなブログで画像を利用する

はてなブログに画像を投稿したいが、記事をすべてgit管理しているためブログ投稿画面から画像を投稿する通常の手順が使いづらい。 画像を大量にGitに保存するのもあまり好ましいことではない。というわけで少しばかりひねった解決策が必要となった。 やりた…

Next.jsをインストールして動かしてみる。(Windows)

やったこと やったこと 手順はこちらにある。 https://nodejs.org/en/ からNode.jsをDownloadしてインストール npx create-next-app@latest --typescriptと打ち、対話式でプロジェクト名を聞かれるため入力。今回はpersonal-website。 typescriptを使いたい…

AWS利用時のセキュリティについて考えた際のメモ(2022/10)

AWSのセキュリティ関連知識の復習のため、AWS認定 セキュリティ-専門知識を読んだときのメモ。 セキュリティ意識の高まり 数年前は影が薄かったセキュリティ用のサービスも、今や使って当然のものになりつつある。昔はCloudTrailとConfigさえも恐る恐るそっ…

.tfvarsをDRYに保つには?

課題 同じ設定であれば、設定ファイル(*.tfvars)をコピーして各ディレクトリに置くのではなく、共通の設定ファイルとして読み込むようにしたい。 だがTerraformに外部ファイルの読み込みらしき機能が見当たらない。どうすればよいか。 解決 実行時に-var-fil…

GitHub ActionsにAWS リソースへのアクセス権を渡すには?

課題 解決 その1 アクセスキーを払い出す その2 OpenID Connect + Role 参考 課題 GitHub ActionsでAWSのリソースを操作したい場合、当然に権限を持つ必要がある。 どうすればいいか。 解決 その1 アクセスキーを払い出す まず思いつくのは専用のIAMユー…

GitHub Actionsの手動起動ボタンが出ない場合のヒント

課題 解決 参考 課題 GitHub Actionsでも手動起動が可能なはずだが、あるはずのボタンがない。なぜか。 解決 workflow_dispatchをファイル内で指定する必要がある。 on: workflow_dispatch: inputs: env: description: "environment" required: true default…