kakakakakku blog

Weekly Tech Blog: Keep on Learning!

AWS

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…

Amazon Inspector Lambda 標準スキャンで Lambda Layer に含まれる CVE を検出する

Amazon Inspector Lambda 標準スキャンを有効化すると「AWS Lambda 関数」と「AWS Lambda Layer」を対象に脆弱性 (CVE) を検出できる Lambda Layer もサポートしていることを確認してみた docs.aws.amazon.com requests 2.30.0 今回は Python パッケージの r…

Powertools for AWS Lambda (Python) の Feature flags で「時間ベースフィーチャーフラグ」を試す

Powertools for AWS Lambda (Python) の Feature flags を使って「時間ベースフィーチャーフラグ (Time based feature flags)」を試してみた.Powertools for AWS Lambda (Python) の Feature flags はデフォルトだと AWS AppConfig をバックエンドにしてい…

Powertools for AWS Lambda (Python) の Parameters で DynamoDB GSI からパラメータを取得するカスタムプロバイダ

Powertools for AWS Lambda (Python) の Parameters を使うと AWS Systems Manager Parameter Store / AWS Secrets Manager / AWS AppConfig / Amazon DynamoDB から AWS Lambda 関数で使うパラメータ(何かしらの値)を簡単に取得できる❗️また取得したパラ…

Amazon S3 署名付き URL 経由のアップロードでオブジェクトメタデータを設定する

Amazon S3 署名付き URL を発行してオブジェクトをアップロードするときに「オブジェクトメタデータ」も設定できるできるのかな〜と気になって試してみたらできた.署名付き URL 経由でアップロードされたオブジェクトに対して付加情報を設定しておくという…

Casbin 認可ポリシーを DynamoDB に保存できるアダプター「python-dycasbin」を試した

Casbin で認可ポリシーを保存する1番簡単な選択肢は CSV ファイルだけど,アダプターを使うと認可ポリシーをデータベースで管理できる今回は PyCasbin で,ドキュメントに載っている DynamoDB Adapter (python-dycasbin) を使って,Casbin 認可ポリシーを Am…

Powertools for AWS Lambda (Python) の Validation で UUID フォーマットをバリデーションする

Powertools for AWS Lambda (Python) の Validation でプロパティの「UUID フォーマット」をチェックする場合は以下のようにスキーマを実装すると良さそう { '$schema': 'http://json-schema.org/draft-07/schema', 'type': 'object', 'required': ['id'], '…

boto3 Config で Amazon S3 Transfer Acceleration エンドポイントを使えるようにする

Amazon S3 で Transfer Acceleration を有効化すると,エッジロケーションを活用してオブジェクトを高速にアップロード・ダウンロードできるようになる.そして bucketname.s3-accelerate.amazonaws.com というエンドポイントが追加される aws.amazon.com do…

LocalStack を使って CloudWatch Logs サブスクリプションフィルタをローカル環境で試す

Amazon CloudWatch Logs サブスクリプションフィルタを使ってログを AWS Lambda に流す構成を AWS アカウントにデプロイする前に LocalStack にデプロイして確認してみた❗ docs.aws.amazon.com LocalStack は Amazon CloudWatch Logs サブスクリプションフィ…

localstack-utils: 単体テスト実行時に使い捨て可能な LocalStack を起動しよう

LocalStack から公式に提供されている localstack-utils を使うと,pytest など Python で単体テストを実行するときに一時的な(使い捨て可能な)LocalStack 環境を起動できる docs.localstack.cloud ちなみに僕は普段仕事で testcontainers-python の Local…

LocalStack を使って Amazon Transcribe をローカル環境で操作する

Amazon Transcribe で Speech-to-Text を実現するときに,LocalStack を使えば Amazon Transcribe を「AWS アカウントを使わずにローカル環境で」動かせるLocalStack 自体は仕事でもプライベートでも使ってるけど,Amazon Transcribe は今まで試したことがな…

アプリケーションの認可ソリューションを体験できる「Amazon Verified Permissions workshop」

Amazon Verified Permissions を学ぶため「Amazon Verified Permissions workshop」を実施してみた3時間ほどで Amazon Verified Permissions の基本的な概念・マネジメントコンソール操作から,実際にサーバーレスアプリケーションに組み込んだときの実装例…

AWS CDK でプレフィックス集計のために Amazon S3 Storage Lens を設定する

Amazon S3 でオブジェクトの使用状況(合計サイズ・平均サイズなど)を「プレフィックス別(フォルダ別)」で可視化する場合,Amazon S3 Storage Lens の「高度なメトリクスとレコメンデーション機能」で「プレフィックス集計」を設定する❗️ docs.aws.amazon…

Terraform の AWS Cloud Control Provider (awscc) で Amazon Inspector「抑制ルール」を設定しよう

現時点(2024年5月)だと Terraform AWS Provider では Amazon Inspector の「抑制ルール」を設定できないという制約がある github.com Terraform AWS Provider 以外だと マネジメントコンソール AWS CLI(参考: AWS CLI で Amazon Inspector「抑制ルール」…

AWS CLI で Amazon Inspector「抑制ルール」を設定する

Amazon Inspector の「抑制ルール (suppression rules)」を使うと,条件に一致する検出結果を除外できる.また Amazon Inspector では FindingStatus: SUPPRESSED として AWS Security Hub に検出結果を統合するため,過剰に増えてしまう AWS Security Hub …

AWS CDK の --exclusively オプションでスタック間の依存関係を考慮せずに実行する

AWS CDK の cdk diff コマンド・cdk deploy コマンドで --exclusively オプションもしくは -e オプションを指定して実行すると,スタック間の依存関係を考慮せずに指定したスタックのみ操作できる実行時間を短くしたり,デプロイの影響範囲を狭めたりすると…

Terraform で Amazon ECS の fargateTaskRetirementWaitPeriod を設定する

2024年5月17日にリリースされた Terraform AWS Provider v5.50.0 で Amazon ECS の「Fargate タスクリタイア待機時間 (fargateTaskRetirementWaitPeriod)」を設定できるようになった. github.com デフォルトでは「7日間」に設定されていて,選択肢としては …

AWS Step Functions の TestState API でステートをテストしよう!

AWS Step Functions ワークフローを実装しているときに,ステートをデプロイする前にテストしたり,デプロイしたワークフローの特定のステートのみを実行したいという場面があったりする.実は AWS Step Functions の「TestState API」を使うと,ワークフロ…

Amazon Rekognition / Amazon Lookout for Vision などを試しながら学べる「AWS コンピュータービジョン開発の教科書」を読んだ

2024年3月19日に出版された「AWS コンピュータービジョン開発の教科書」を読んだ コンピュータビジョンは今取り組んでいる仕事にも関連していて,本書の目次を見たら今まで試したことがなかったようなサービスも学べそうだったので,実は出版前から興味を持…

CodeBuild の GitHub Actions ランナーサポートを Lambda 実行環境で試した

2024年4月24日に AWS CodeBuild で GitHub Actions ランナーがサポートされた❗️そして,2023年11月には AWS CodeBuild の実行環境として AWS Lambda を選択できるようになっているため,今回は個人的な検証として GitHub Actions x AWS CodeBuild (AWS Lambd…

SageMaker の地理空間機能を試そう: How to use SageMaker Processing with geospatial image

Amazon SageMaker が「地理空間 (Geospatial)」に特化した機能を限定的に(us-west-2 のみ)提供していることを最近知った aws.amazon.com そして Amazon SageMaker Examples を確認したら地理空間機能を試せるサンプルがあったため,「How to use SageMaker…

AWS CDK で AWS Step Functions から Amazon SageMaker Processing を .sync で実行する

AWS Step Functions から別のサービスを直接統合するときに「最適化された統合 (Optimized integrations)」と「AWS SDK 統合 (AWS SDK integrations)」という選択肢がある.例えば AWS Step Functions から Amazon SageMaker Processing を実行する場合,AWS…

AWS Chatbot で AWS Lambda 関数の集約したロググループからログを取得する

AWS Lambda 関数の Errors メトリクスなどを Amazon CloudWatch Alarm でモニタリングして,エラー発生時に Amazon SNS と AWS Chatbot を組み合わせて Slack に通知すると Show error logs ボタンと Show logs ボタンが表示される✅ そして AWS Chatbot に権…

Amazon API Gateway の Lambda オーソライザーで "User is not authorized to access this resource" と出たら

Amazon API Gateway の Lambda オーソライザー(旧カスタムオーソライザー)を使ってアクセス制御をするときに,Authorization ヘッダーは正しいはずなのに {"Message":"User is not authorized to access this resource"} というエラーが出てしまう場合,La…

CloudFormation の IaC ジェネレーター機能をサクッと試せる「IaC Generator Workshop」

2024年2月にリリースされた AWS CloudFormation の「IaC ジェネレーター機能」を使うとマネジメントコンソール・AWS CLI などを使って作った(作ってしまった)リソースをスキャンして,自動的に AWS CloudFormation テンプレート化 (YAML / JSON) できる❗️…

Terraform で無料利用枠の VPC IP Address Manager (IPAM) を設定する

2023年11月から VPC IP Address Manager (IPAM) に「無料枠利用枠」が追加されて Public IP Insights などの機能が無料で使えるようになったそして,2024年2月から課金対象になった IPv4 の最適化のために Public IP Insights を使いたいという場面もあると…

AWS CDK で外部パッケージを含む Python の AWS Lambda 関数をデプロイする

AWS CDK で外部パッケージを含む Python の AWS Lambda 関数をデプロイする場合,requirements.txt から依存関係を解決して,デプロイするアセットとして ZIP にまとめる(バンドルする)必要がある 今回は aws-cdk-lib.aws_lambda module と @aws-cdk/aws-l…

JSON Schema で簡単にバリデーションを実装できる Powertools for AWS Lambda (Python) の Validation

Powertools for AWS Lambda (Python) の「Validation」を使うと AWS Lambda 関数に渡されたイベント情報のバリデーションを JSON Schema に沿って実現できる.例えば,必須パラメータ・文字数制限・ENUM・正規表現などをチェックできる Powertools for AWS L…

testcontainers-python: pytest 実行時に使い捨て可能な LocalStack を起動する

Testcontainers を使うと,テストコードを実行するときに必要になるデータベース・キャッシュ・キューなどの依存関係をコード上で管理できて,実行後にはコンテナを自動的に消してくれるという使い捨て可能な仕組みを簡単に作れる❗️Testcontainers のサイト…