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

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

AWS Lambdaにおけるランタイムバージョンの制御(2)

はじめに 先日、AWS LambdaのRubyランタイムバージョンを確認するということをやりました。 miyohide.hatenablog.com この記事を書いてから2週間、現在のバージョンはどうなっているかを確認しました。 2024年6月2日時点のRubyのランタイムバージョン 確認し…

データ処理に挑戦する:Amazon Athenaクエリ実行の手引き

はじめに 私の興味分野の多くはアプリケーション開発なのですが、ちょっと幅を持たせるために今回Amazon Athenaを触ってみることにします。 まずは適当なデータに対して簡単に検索を実施してみることまでをやります。 前提知識の取得 前提知識を取得するため…

AWS Lambdaにおけるランタイムバージョンの制御

今日は小ネタ。 AWS Lambdaは実行環境のセキュリティ更新やバグ修正などに気を使わなくて良いコンピュートサービスです。実際には動作するマシンがあるので、セキュリティ更新やバグ修正はAWSがやってくれるのですが、これの更新を制御するための「ランタイ…

セキュリティリスク回避のためのRDS(MySQL)へのIAM認証導入 Spring Boot編

はじめに 最近、RDSのIAM認証を実装しています。 MySQLは以下のものを。 miyohide.hatenablog.com PostgreSQLは以下のものを。 miyohide.hatenablog.com 上記ではコマンドライン上での操作を実装してみたのですが、アプリケーションとして実装する方法を検証…

LayerにGemを格納してAWS Lambda関数を成功させる方法(3)Ruby 3.3版

はじめに 先日、Rubyで実装したAWS Lambda関数にてpg gemを使う方法を記しました。 miyohide.hatenablog.com 上記の記事では、Ruby 3.2のバージョンで実装したのですが、この記事を記したのちにRuby 3.3版がリリースされました。 aws.amazon.com Ruby 3.3版…

セキュリティリスク回避のためのRDS(PostgreSQL)へのIAM認証導入

はじめに 先日、RDS(MySQL)へのIAM認証を導入したことをブログに書きました。 miyohide.hatenablog.com 今回は、RDS(PostgreSQL)へのIAM認証を導入してみます。 また、この検証をするためにCDKも実装してみたのでそれも紹介します。 公式ドキュメントの…

Amazon Linux 2023でのプライベートサブネットへのパッケージインストール方法

はじめに プライベートサブネットに配置しているEC2に対してインストールしたいアプリやセキュリティパッチなどを当てたい場合、一般的にはインターネットに接続する必要があります。 ただ、Amazon Linuxにおいてはインターネットにアクセスせずに更新したり…

セキュリティリスク回避のためのRDS(MySQL)へのIAM認証導入

はじめに Amazon RDSではユーザー名とパスワード以外にIAM認証という機能があります。RDSなどの接続用パスワードをソースコードに書き込むのはよくあるセキュリティリスクの一つではあるんですが、環境変数やParameter Store、Secrets Managerに格納するのは…

無償版LocalStackでのRuby SDKを用いたS3操作検証方法

はじめに AWS上でのシステムを構築する際に簡単な挙動をローカル環境で確認したいという要望はちょくちょく聞きます。そのときによく使われるのがLocalStackです。 www.localstack.cloud 有償版・無償版それぞれあるのですが、無償版でも多くの機能が使えま…

AWS SAMを使ったAWS Lambda関数のVPC設定

はじめに ちょっと前までAWS Lambda上で動くアプリをJavaで実装することをやっていました。 AWS Lambda関数をJavaで実装する(1) - miyohide's blog AWS Lambda関数をJavaで実装する(2)LambdaからRDSへ接続する - miyohide's blog AWS Lambda関数をJavaで…

GemをLayerに登録する際のAWS Lambda制限への対応

はじめに AWS LambdaにてAWS SDK for Rubyを使うことになり、単純にgemをLayerとして登録しようとしたら少しトラブったのでその対処方法を以下に記します。 何が起きたか? 前回までのブログ記事のようにgem 'aws-sdk'と書いたGemfileを用いてLayer用のzipフ…

LayerにGemを格納してAWS Lambda関数を成功させる方法(2)

はじめに 先日、Layerにgemを格納してAWS Lambda関数を動かす記事を書きました。 miyohide.hatenablog.com この記事では、Rubyで実装されたgemを使ってみたのですが、この記事ではネイティブ拡張を使ったgemを使う方法を記します。具体的には、PostgreSQLと…

LayerにGemを格納してAWS Lambda関数を成功させる方法

はじめに AWS LambdaでRubyを使って実装しようとしたとき、Gemを使いたいことがよくあります。Gemを使う際にちょっとハマったので、解決方法を記します。 例 とりあえずGemの使用例としてActiveSupportを使った以下のプログラムを動かしてみたいと思います。…

RDS(PostgreSQL)におけるデータベース所有者設定でのエラー回避方法

はじめに RDSにてPostgreSQLを使っているとき、マスターユーザーとは別のユーザーを作ってそのユーザがオーナーのデータベースを作ろうとするとERROR: must be member of role "xxxxx"というメッセージが出ることがあります。例を以下に記します。 postgres=…

AWS CDKを使ったEC2 Instance Connect Endpointの実装

はじめに プライベートサブネットにおいてあるEC2に対して、Instance Connect Endpointを使って接続するということを実施しています。 docs.aws.amazon.com ただ、セキュリティグループの設定などを毎回誤ったりするので、同じミスを繰り返さないようにCDKを…

Container Insightsを活用したECSクラスターの監視

はじめに 先日、Amazon Elastic Container ServiceにてSpring Bootで作ったアプリを動かすことをしました。 miyohide.hatenablog.com 今回は、このアプリに対してContainer Insights機能を試してみます。 Container Insightsとは コンテナ化されたアプリのメ…

Spring BootのコンテナアプリをAmazon Elastic Container Serviceで動かす

はじめに 先日まではApp Runner上でコンテナアプリを動かすことをしていました。今日からは、Amazon Elastic Container Serviceを使ってX-Rayなどを試してみようかと思います。 まずはSpring Bootで作ったコンテナアプリをAmazon Elastic Container Service…

App Runner上でのメトリックス監視のためのSpring BootとCloudWatchの設定

はじめに 先日、AWS App Runner上で動くコンテナ化したSpring Bootアプリケーションの可観測性に関する実装の一環でトレースをX-Rayに送ることを実装しました。 miyohide.hatenablog.com ただ本番環境においてはトレースだけでは足りず、リクエスト数やJVMの…

AWS App Runner上での可観測性向上に向けた取り組み(Spring Bootを使った実装例)

はじめに SREとして語られるものの一つに可観測性というものがあります。単純にログを吐けば良いというものから、どのようなリクエストが行われているのかや各種メトリックスなどの情報を取得することが必要となってきています。ここではAWS App Runner上で…

AWS CDKでリソースの構築とテストコードの書き方について

はじめに 最近はAWS CDKでリソースを構築することが多いのですが、AWS CDKは一般的なプログラミング言語でAWSのリソースを定義するものなので、テストコードを書くことができます。そのテストコードの書き方についてまとめてみます。 前提条件 本記事は、以…

LambdaとRDSの連携をCDKで簡単実装する

はじめに 先日、Lambda上でコンテナイメージを動かしRDSに接続するということをやりました。 miyohide.hatenablog.com このときは手作業でぽちぽちやりましたが、環境設定が面倒くさかったのでCDKで実装してみました。 VPCを作る まずはVPCを作成します。こ…

Lambdaで動くコンテナイメージ(Ruby)を作成し、RDS(PostgreSQL)と接続してみた

はじめに・動機 先日、RDS(PostgreSQL)に接続するLambda関数をRubyで実装しようとしたとき、pg gemの動作がうまく動きませんでした。このため、今回はLambda関数をコンテナイメージで動かすことをやってみます。 コンテナイメージを作る AWSのドキュメント…

AWS Application ComposerのIDE拡張機能の試用と生成AIの挑戦

はじめに AWS re:Invent 2023の内容を見てみると、AWS Application ComposerのIDE拡張機能が出たことを知りました。 aws.amazon.com Application Composerはサーバーレスアプリケーションのインフラ部分を視覚的に作成できるサービスという説明が目についた…

AWS LambdaからRDSへの接続設定が簡単になっていた

AWS LambdaからRDSへの接続設定をするのは地味に面倒くさいのですが、RDSのアクションメニューから「Lambda接続のセットアップ」から簡単に設定できるようになっていたので、試してみました。振り返ると2023年8月4日の更新が該当するようです。 aws.amazon.c…

AWS CDKでAWSリソースを作成する(3)

はじめに 先日からAWS CDKを使ってAWSリソースを作成してみることをしています。前回までは以下の記事を参照。 AWS CDKでAWSリソースを作成する(1) - miyohide's blog AWS CDKでAWSリソースを作成する(2) - miyohide's blog 今日はAppRunnerからElastiCa…

AWS CDKでAWSリソースを作成する(2)

はじめに 先日からAWS CDKを使ってAWSリソースを作成してみることをしています。前回は以下の記事を参照。 AWS CDKでAWSリソースを作成する(1) - miyohide's blog 今日はAppRunnerを作成してみます。 AppRunnerを作成する 今回はコンテナイメージをAppRunn…

AWS CDKでAWSリソースを作成する(1)

はじめに 先日からApp RunnerとかElastiCacheとかを使った検証をしていましたが、マネージメントコンソールで作業をするのは時間がかかり、料金節約のためにリソースを削除するのも大変なので、AWS CDKで実装してみることにしました。 プロジェクト作成 プロ…

Spring Session Redisの接続先をAmazon ElastiCacheにする

はじめに Spring Bootアプリの開発でセッション管理をする際にSpring Sessionを使うことが多いかなと思います。今回、Spring Session Data Redisの接続先としてAmazon ElastiCacheを使ってみましたので、その内容を記します。 前提条件 今回、Spring Bootは3…

AWS Lambda関数をCodeDeployでデプロイする

はじめに AWS Lambda関数をCodeDeployでデプロイすることができたので、ここにまとめておきます。 AWSのドキュメントが以下にあるのですが、試してみたところ動かなかったのでゼロから実装してみました。 docs.aws.amazon.com 言語は慣れていてサクッと動か…