kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Moto を使って Cognito の cognito-idp API をローカル環境で試す

Amazon Cognito を操作するコード/テストを実装するときに LocalStack を使いたいな〜と思うけど,Amazon Cognito は LocalStack Pro Edition でサポートされていて,LocalStack Community Edition では使えないと言う課題がある. docs.localstack.cloud …

Testcontainers for Python と Moto を組み合わせて Boto3 を使った Python コードをテストする

Moto で AWS サービスをモックして AWS SDK for Python (Boto3) を使った Python コードをテストする場合に @mock_aws デコレータや with ブロックを使うという選択肢がある.詳しくは以下のドキュメントに載っている docs.getmoto.org また Moto には「Serv…

AWS CDK で Amazon API Gateway の「CloudWatch ログのロール ARN」を設定する

Amazon API Gateway でアクセスログを有効化してデプロイしようとすると CloudWatch Logs role ARN must be set in account settings to enable logging というエラーが出る場合があるもしかしたら Amazon API Gateway の設定「CloudWatch ログのロール ARN …

AWS CDK で IAM Role に Cognito User Pools の ポリシーを設定する

AWS CDK で IAM Role に Amazon Cognito User Pools のポリシーを設定する場合は grant(grantee, ...actions) メソッドを使う. docs.aws.amazon.com 第二引数の ...actions は可変長引数を受け取るため,以下のようにポリシーを並べて実装できる❗️ userPool…

LangChain / LangGraph を活用した RAG そして AI エージェントを体験しながら学べる新著「LangChain と LangGraph による RAG・AI エージェント[実践]入門」を読んだ

2024年11月9日に出版される新著「LangChain と LangGraph による RAG・AI エージェント[実践]入門」を読んだ RAG そして AI エージェントとは!?という疑問に対して理解を深めることができて,実際に Python コードを実行しながら体験もできる.さらに最…

GitHub Actions のジョブサマリーに Service Quotas のクォータ一覧を出力する

AWS Organizations 未導入のマルチアカウント環境でマネジメントコンソールに入らずに Service Quotas のクォータをシュッと確認できたらちょっと便利かも?と思って(あくまでアイデアとして),検証も兼ねて AWS SDK for Python (Boto3) と GitHub Actions…

Terraform で Service Quotas のクォータリクエストを管理する

特にプロダクション環境でウェブサービスを稼働させるときにトラフィックの多さから AWS サービスのクォータ(サービス制限)に該当する可能性がある AWS Well-Architected Framework (Reliability Pillar) でも REL01-BP01 ~ REL01-BP06 にクォータ関連のベ…

redocly lint コマンドを GitHub Actions に組み込んで OpenAPI の静的解析を実行する

Redocly CLI の lint 機能 (redocly lint コマンド) を使うと OpenAPI の静的解析ができる 今回は redocly lint コマンドを GitHub Actions に組み込んで OpenAPI の静的解析を実行できるようにしてみた \( 'ω')/ redocly.com OpenAPI サンプル 今回は Pet…

Python の mimetypes.guess_type() で .geojson を変換できるようにする

Python 標準ライブラリ mimetypes を使って GeoJSON ファイル名 (.geojson) から MIME タイプに変換しようとしたら (None, None) になってしまった >>> import mimetypes >>> mimetypes.guess_type('example.geojson') (None, None) docs.python.org 前提条…

AWS Step Functions でエラーハンドリングを実装する構成例

AWS Step Functions でタスクがエラーになったときに統一的なエラーハンドリング(エラー処理・リカバリ処理・通知処理など)が必要になることがあるエラーハンドリングを実現する構成例をいくつか考えてみた もちろん最終的には要件次第ではあって絶対にコ…

LocalStack で AWS サポートへの問い合わせを API で操作できる「AWS Support API」を試そう

AWS サポートへの問い合わせを API で操作できる「AWS Support API」は気になるけどビジネスプラン以上じゃないと使えなくて気軽に試せないじゃーんと悩んでいる人がいたら LocalStack をおすすめしたい❗️実は LocalStack(無料版)で一部の AWS Support API…

Lambda@Edge と CloudFront Functions に入門できるワークショップ「Handling Rewrites and Redirects using Edge Functions」

Lambda@Edge と CloudFront Functions を使って HTTP リクエストのリダイレクトとリライトを体験するワークショップ「Handling Rewrites and Redirects using Edge Functions」を実施してみた❗️ Lambda@Edge と CloudFront Functions に入門したいな〜という…

Powertools for AWS Lambda (Python) で Cognito User Pools の トークン生成前トリガーを実装しよう

Amazon Cognito User Pools には AWS Lambda 関数を使って認証フローをカスタマイズできる「Lambda トリガー」という機能があるトークン生成前トリガー (Pre token generation Lambda trigger) を使うと,認証時に発行されるトークン (ID Token / Access Tok…

CloudFormation Git sync で変更セットの結果をプルリクエストにコメントする

2024年9月20日にリリースされたアップデートによって,AWS CloudFormation の「Git sync 機能」で GitHub リポジトリにプルリクエストを出したら自動的に変更セットの結果をコメントしてくれるようになった❗️ aws.amazon.com 試す Git sync の設定画面で Ena…

LocalStack で Lambda の Errors メトリクスを SNS 経由でアラートする

LocalStack を使って AWS Lambda 関数の Errors メトリクスをモニタリングして Amazon CloudWatch Alarm と Amazon SNS でアラートするアーキテクチャを試してみた❗️LocalStack(無料版)ですべて試せる〜 \( 'ω')/ アーキテクチャ図 Webhook.site 今回は …

Vercel Terraform Provider: Vercel の設定を Terraform で管理しよう

最近 Vercel を使っていて,Vercel コンソールでプロジェクト設定をしてしまったけど,継続的なプロダクション運用を考えたらコンソール操作は避けたいな〜と思って,Vercel Terraform Provider を試してみた❗️結論から言うと,期待した通りに Vercel の設定…

AWS CloudFormation の Git sync を既存スタックに導入する

GitHub リポジトリなどにプッシュをしたら自動的にトリガーされて AWS CloudFormation スタックをデプロイできる「Git sync 機能」で,そういえば「既存スタックって途中から Git sync できる?」と疑問に感じて試してみた❗️結論から言うと既存スタックを Gi…

LocalStack v3.7 の新機能!Amazon S3 の conditional writes(条件付き書き込み)を試す

2024年8月20日に Amazon S3 の conditional writes(条件付き書き込み)がサポートされたオブジェクトの上書きを防ぐ仕組みを独自実装せず,Amazon S3 に任せられるようになるところがメリットだと思う. aws.amazon.com 試す さっそく PutObject を試す.AW…

読んだ本を振り返る(2024年1-8月)

2024年に読んだ本を年末の振り返りでまとめようと思っていたけど,2024年2月から「毎日10分間読書」という習慣化を始めたことをキッカケにコツコツ読み進められるようになった.中途半端な時期ではあるけど,2024年8月までに読んだ本とその感想(書評記事 or…

AWS CDK で Amazon API Gateway にカスタムドメインを設定する

AWS CDK で Amazon API Gateway に Amazon Route 53 のカスタムドメインを設定してみた 実際に試したログをまとめておく \( 'ω')/ サンプルコード 今回は Amazon Route 53 でドメインを取得してある前提とする.サンプルコード上では xxxxx.com にしておく…

Auth0 Terraform Provider: Auth0 の設定を Terraform で管理しよう

Auth0 Terraform Provider を使うと Auth0 の設定を Terraform で宣言的に管理できる.もちろん Terraform の仕組みに沿って terraform plan コマンドで確認してから terraform apply コマンドでデプロイできる❗️Auth0 Terraform Provider を試したログをま…

Lambda 関数(コンテナ)をテストできる testcontainers-python v4.8.0 の新機能「AWSLambdaContainer」

2024年8月14日にリリースされた testcontainers-python v4.8.0 の新機能を確認していたら new: Added AWS Lambda module と書いてあって,これは何だろう〜と気になって試してみた❗️ github.com 簡単に言えば,テスト実行時に testcontainers-python で AWS …

フォルダオブジェクトの有無によって aws s3api list-objects-v2 コマンドの結果が異なる

AWS CLI で Amazon S3 の aws s3api list-objects-v2 コマンドを使ってオブジェクト数をカウントしてたときに少しハマったことがあって簡単にメモしておこうと思う awscli.amazonaws.com 起きたこと 例えば Amazon S3 バケットに folder/file.txt というオブ…

GitHub Actions の実践的なノウハウが凝縮されている素晴らしい一冊「GitHub CI/CD 実践ガイド」を読んだ

GitHub Actions の実践的なノウハウが凝縮されている一冊「GitHub CI/CD 実践ガイド」を読んだ 本書ではソフトウェア開発ライフサイクルから GitHub Actions 基礎トピック・GitHub Actions 実践トピックが紹介されていて,さらに GitHub Actions を活用して…

AWS Lambda 関数で Amazon ECR のイメージタグを上書きしたら AWS Lambda 関数を更新する

AWS Lambda 関数をコンテナイメージでデプロイしているときに,latest タグを使っていたり,同じタグを上書きして再利用していたりする場合がある.例えば AWS Well-Architected Framework「Container Build Lens」の設計原則 (Design principles) には「避…

Zenn Book で「LocalStack 実践入門」を公開しました

今週月曜日(2024年8月5日)に Zenn Book で完全無料の学習コンテンツ「LocalStack 実践入門 | AWS アプリケーション開発ワークショップ」を公開しましたー AWS エミュレーターの LocalStack に実践的に入門するワークショップです❗️ zenn.dev 概要 アプリ…

Terraform AWS Provider で AWS Chatbot を構築する

2024年8月2日にリリースされた Terraform AWS Provider v5.61.0 で AWS Chatbot の「Slack 設定 (SlackChannelConfiguration)」と「Teams 設定 (MicrosoftTeamsChannelConfiguration)」を設定できるようになった❗️ github.com 背景 今までは AWS Provider を…

AWS Step Functions で AWS Lambda 関数を使わず Amazon S3 にオブジェクトをアップロードする

AWS Step Functions でワークフローを構築しているときに AWS Step Functions の実行時に渡すインプットの一部をファイルとして Amazon S3 に保存したいという場面があったりする❗️実際に最近あった \( 'ω')/ もちろん AWS Lambda 関数を追加すれば柔軟で…

LocalStack を使って DynamoDB TTL 機能をローカル環境で試す

LocalStack は Amazon DynamoDB TTL (Time To Live) 機能をサポートしている❗️Amazon DynamoDB を実環境にデプロイする前に TTL の動作確認ができて便利最近 LocalStack の Amazon DynamoDB TTL 機能を試す機会があって,簡単にまとめておこうと思う〜 \( '…

GitHub Codespaces で起動した LocalStack に Resource Browser から接続する

GitHub Codespaces で起動した LocalStack に LocalStack Resource Browser から接続できるただし LocalStack ポートを公開するためあくまで一時的な検証用途で使う前提として \( 'ω')/ LocalStack CLI セットアップ ドキュメントを参考に GitHub Codespac…