2024-01-01から1年間の記事一覧

Amazon Cognitoカスタム属性を活用したPostgreSQLのRow Level Securityの実装

はじめに 先日からPostgreSQLのRow Level Securityを使ったマルチテナントアプリケーションを実装することをやっています。 miyohide.hatenablog.com 上の記事では直接curlでテナントIDを指定していましたが、今回はAmazon Cognitoのユーザー属性に追加した…

AWSのセキュリティ強化に役立つVPCの新機能 ブロックパブリックアクセス

はじめに 今日は小ネタ。だらっとAWSの新着情報を眺めていたら、VPCのブロックパブリックアクセスというものがリリースされていました。 aws.amazon.com 実験 簡単に実験してみます。 適当なVPCを作成したのち、VPCの画面を下にスクロールすると一番下に「設…

Spring Boot + Amazon Cognitoのログアウト機能の実装で発生したInvalid Requestとその対処方法 サンプル実装の改善を添えて

先日よりAmazon Cognitoを使ってSpring Bootアプリに対して認証機能を実装しています。 miyohide.hatenablog.com miyohide.hatenablog.com 今回はログアウト機能の実装中に少しハマったことがあったのでそのことについて記載します。 陥った現象 今回陥った…

re:Inventで発表されたAmazon Q Developerの新機能を体験してみた

先日、Amazon Q Developerを使ってドキュメントの生成をやってみました。 miyohide.hatenablog.com そんな中、先日のre:InventにてAmazon Q Developerにも色々と更新が入りました。詳細は以下のブログ。 aws.amazon.com 今回は以下のブログで紹介されたReact…

Spring Securityを活用したAmazon Cognitoの属性情報取得

はじめに 前回、新しいAmazon Cognitoを使ってSpring Bootで作ったWebアプリに認証機能をつけてみました。 miyohide.hatenablog.com 今回はその続きで、Cognitoのユーザーの属性情報を取得することをやってみます。 ユーザー属性 Cognitoが標準で用意してい…

Amazon Cognitoの新しいUIへの変更とSpring Bootへの認証機能追加

はじめに 自作のWebアプリに認証機能をつけようと、Cognitoを開いたらガラッとUIが変わってびっくりしました。 どうも以下の更新に伴う変更のようです。 aws.amazon.com この更新に伴いCognitoで用意されるログイン画面もモダンなものになっています。 ちな…

Spring BootでPostgreSQLのRow Level Securityを利用する方法

はじめに 先日、マルチテナントなアプリケーションの実装のためにPostgreSQLのRow Level Securityの検証結果を記しました。 miyohide.hatenablog.com 今回はRow Level Securityを設定したPostgreSQLのテーブルに対してSpring Bootアプリケーションからアクセ…

AWSのシステム構成図作成ツール Diagram-as-codeの活用方法

はじめに なんらかのシステムを構築する際、全体像を掴むためにシステム構成図を描くことが多いです。ただ、このシステム構成図を描くのが自分はあまり得意ではなく、できれば描きたくない人です。 例えばCloudFormationからこれらのシステム構成図を生成し…

Amazon Q Developerのmiyohide的活用例(ドキュメント編)

はじめに 生成AIのプログラミングでの活用が謳われて久しい今日この頃ですが、今回はAmazon Q Developerをちょっと時間をとって試してみたのでその結果をここに記します。主にドキュメント生成について。 aws.amazon.com ワークショップ AWSがワークショップ…

マルチテナントなアプリケーションのデータベース設計におけるPostgreSQLとRow Level Securityの活用

はじめに マルチテナントなアプリケーションを作る際、データベースをどのように使うようにするかは色々と選択肢があります。AWSでは以下のホワイトペーパーに設計と留意事項が記載されています。 docs.aws.amazon.com 設計内容は分かったとして、実際に実装…

ECSでRailsアプリをCDKで実装する方法(RDSのパスワードなどをSecrets Manager経由で参照させる)

はじめに 先日、Rails 7.2で作ったアプリをECSで動かすことをやりました。 miyohide.hatenablog.com ここで課題として挙げたCDKでの実装をやってみたので、そのやり方を紹介します。 RDSの作成とパスワードなどの情報をSecrets Managerに登録する aws-cdk-li…

ECSアプリのRDS接続情報をSecrets Managerに設定したものを使う

はじめに 先日、Rails 7.2で作ったアプリをECSで動かすことをやりました。 miyohide.hatenablog.com 発展的な話題として、環境変数で指定したRDSの接続先情報をSecrets Managerに登録しているものを参照する形式に変えることにします。 事前準備 事前準備と…

ECSでRails 7.2製のアプリを動かすための最低限の設定

はじめに 先日より、RailsアプリをECS(Fargate)で動かすことを実施しています。今回はECSの設定です。 当初はCDKを使って実装しようとしていましたが、あまりうまくいかなかったこともあり、コンソール上で実装することにしました。 なお、今回動かそうと…

CDKで既存のECRの情報をソースコードに埋め込まずにコマンド実行時にパラメータとして与えたい

はじめに CDKを使ってECS環境を作ろうとしたときに、色々とハマったのでその内容をメモとして残しています。今回は、ECRの取得について。 ECRの取得 ECS環境を作ろうとしたときに、新規にECR環境を作ることは少なく、すでに既存のECR環境があることが多いか…

AWS CodeBuildでのコンテナイメージ作成Tips

はじめに とあるWebアプリをCodeBuildにてコンテナイメージを作成し、ECRにpushすることをやったのですが、細かい点でTipsが出てきたので、ここでまとめて書いておきます。 ECRの権限 ECRにpushする際にaws ecr get-login-passwordを使ってパスワードを取得…

ECSにおけるVPC設計のポイント

はじめに RailsアプリをECS上で稼働させることをやったのですが、そのときに色々と学んだので備忘録として残しています。今回はVPCについて。 VPC設計 AWSを使う上で欠かせない設計項目の一つがVPCです。色々な設計考慮ポイントがあるかなと思いますが、個人…

コンテナ上でのRailsアプリ開発ステップガイド

はじめに RailsアプリをECS上で動かす必要性があり、ちょっとやろうとしたところ地味にハマったので何回かに渡って実装してみます。 Railsは7.1から本番環境用のDockerfileなどを生成してくれます。 railsguides.jp ただ、開発環境をコンテナ上で行いたい場…

インスタンスタイプの選定方法とEC2 Instance Selectorの活用

はじめに EC2のインスタンスタイプが200を超えている中、自身にあったインスタンスタイプを見つけ出すのは至難の業です。命名規則からある程度の選択はできますが、AWSのWebページから探し出すのは難しいです。 aws.amazon.com 特に難しいのは料金の見積もり…

VPCフローログの重要性と設定方法

はじめに クラウド上に仮想マシンを立てたときにあるあるのトラブルとして「接続できない」があるかなと思います。丁寧に設定を確認することで問題解決することができることが多いのですが、ログがないと推測でデバックすることになり結構大変です。そこでお…

AWS SDK for Ruby V3に導入されたRBSの検証結果

はじめに 少し前ですが、AWS SDK for Ruby V3に対して型定義情報を提供するRBSが追加されたというアナウンスがありました。 aws.amazon.com 実際にこれを実装したのがksssさんで、そのことをブログ記事にもされています。 ksss9.hatenablog.com RBSについて…

magnitoを使ったAmazon Cognitoの実装体験

はじめに 先日、Cognitoのローカルエミュレータというものが存在することを知りました。magnitoというものです。 github.com 以前、AWSのサービスのエミュレータとしてLocalStackを試してみましたが、Cognitoは有償機能であるためちょっと使いにくいなと思っ…

CloudFormationテンプレートの確認: cfn-lintを利用した効果的なチェック方法

はじめに CloudFormationでテンプレートを書くとき、実際にAWS環境で実行しようとしたときにTypoとかで失敗するとがっくりします。こんなことを防ぐために、実際にAWS環境で実行する前になんらかの検証したいことがよくあります。その方法としてLocalStackの…

RDS(PostgreSQL)のパラメータ設定値の確認方法

RDSにおいて、パラメータグループをみていると結構な頻度で値が「-」になっているものがあります。以下はPostgreSQL 16のデフォルトパラメータグループの例。 「-」のものになっていると値が未設定なのかなと思ったりしますが、実際にはデフォルト値が設定さ…

CDKで作ってすぐに消したRDSに対して思いのほか料金が高かった件

はじめに 先日、AWSの課金を見ていたら、思いのほかRDSの課金が高いなと感じました。対象期間で使用したRDSは作ったらすぐさま消していたので、ちょっとした違和感を覚えたのが始まりだったのですが、よく見てみるとスナップショットに課金されていることが…

EventBridge Schedulerを使ったEC2停止

はじめに よくある話ですが、AWSの利用料金を節約するためにEC2の自動停止を実施したいという要望があります。方法は色々あるかなと思いますが、2024年7月時点で一番お手軽なのはEventBridge Schedulerを使う方法かなと考えています。 aws.amazon.com 簡単に…

LocalStackを活用したAWSの挙動確認(CloudFormation編)

はじめに 少し前に無償版LocalStackを使ってAWS上の挙動確認をローカル環境でシミュレーションすることをやってみました。 miyohide.hatenablog.com 今回はそれを少し発展させてCloudFormationを実行させてみます。 compose.ymlの作成 環境はDockerで構築し…

AWS LambdaでSpring Cloud Functionで作ったアプリを動かす

はじめに 先日、Spring Cloud Functionを使ってAWS Lambda向けのアプリケーション実装について記しました。 miyohide.hatenablog.com 上記の記事では、ローカルで動かしてみたところまでやりましたが、実際にAWS Lambda上で動かしてみます。 AWS Lambda上で…

Amazon RDSにてDBインスタンスのパラメータを変更する手順

はじめに Amazon RDSを使う時に、チューニングやログ出力などでパラメータのデフォルト値から変更したい場合が結構あります。そのとき、パラメータの値を変更しようとするが、デフォルトで用意されたパラメータグループには編集ボタンが出てこずにあれ?って…

DynamoDB Local: AWS公式のローカルデータベース

はじめに だらっとDocker Hubを見ていたらDynamoDBのlocal版がDocker Hubにて公開されていることを知りました。 https://hub.docker.com/r/amazon/dynamodb-local よくよく調べてみたら、DynamoDB localとしてAWSのドキュメントがありました。 docs.aws.amaz…

AWS LambdaとSpringの融合:Spring Cloud Functionの活用

はじめに SpringプロジェクトにはServerless用のフレームワークとしてSpring Cloud Functionというものがあります。 spring.io Webアプリで使い慣れたSpring Bootと同じ考えをAWS LambdaやAzure Functionsなどに適用できることから、魅力的に映る人もいるか…