kakakakakku blog

Weekly Tech Blog: Keep on Learning!

AWS

正式リリースになった AWS SAM CLI の Terraform サポート機能を試す

2023年9月5日に AWS SAM CLI の Terraform サポート機能が GA (正式リリース)になった Amazon API Gateway や AWS Lambda 関数などサーバーレス関連のコンポーネントは Terraform で統一的に管理しつつも,AWS SAM CLI の開発支援機能(sam local invoke …

Athena で ALB アクセスログの time フィールドを Asia/Tokyo (JST) に変換する

Amazon Athena で Application Load Balancer (ALB) のアクセスログを検索するときにタイムスタンプ time のタイムゾーンは UTC になっている検索するときに JST に変換したい❗️と思う場面があって,最近クエリを作っていたため,今後すぐに再利用できるよう…

Terraform で Amazon ECR の基本スキャンをレジストリレベルで設定する

Amazon ECR で Basic scanning(基本スキャン)を使う場合に「リポジトリレベル」の設定は現在推奨されてなく,マネジメントコンソール上だと リポジトリレベルの ScanOnPush 設定は非推奨となり、レジストリレベルのスキャンフィルターが優先されます。 の…

AWS Backup で Amazon EC2 インスタンスをバックアップする構成を Terraform で構築する

AWS Backup で Amazon EC2 インスタンスをバックアップする構成を Terraform で構築する検証をしたので簡単にまとめておこうと思う 設定によっても異なるけど今回は大きく以下のリソースを使って構築した. aws_backup_vault | hashicorp/aws aws_backup_pla…

curl で Cognito User Pool のトークンエンドポイントにリクエストを送信する

Cognito User Pool の「トークンエンドポイント」からトークンを取得するリクエスト要件は以下のドキュメントにまとまっている 検証のために curl でトークンエンドポイントにリクエストを送信する機会があって,今後再利用できそうだからコマンドの雛形を残…

CloudWatch Alarm を SNS 経由で PagerDuty に通知する

Amazon CloudWatch Alarm で検出したアラームを PagerDuty に通知する仕組みを Terraform で構築する機会があって,検証用に実装した Terraform コードをまとめておく.設定自体は難しくなくて Amazon CloudWatch Alarm → Amazon SNS Topic → PagerDuty のよ…

ALB の設定項目 routing.http.drop_invalid_header_fields.enabled を有効化する

Application Load Balancer (ALB) の設定項目 routing.http.drop_invalid_header_fields.enabled を有効化すると不正な HTTP ヘッダーをターゲットに転送せず ALB で自動的に削除できるようになる HTTP ヘッダー名は正規表現 [-A-Za-z0-9]+ で表現する必要が…

Terraform で Amazon ECR のライフサイクルポリシーを設定する

Terraform で Amazon ECR リポジトリのライフサイクルポリシーを設定するときに aws_ecr_lifecycle_policy リソースのドキュメントを読むとヒアドキュメントを使った例が載っている 個人的にはヒアドキュメントを使いたくなく,他の実装案を考えながら試して…

GitHub Actions と AWS を OIDC で連携するときに自動的に証明書の検証をしてくれるようになった

今まで GitHub Actions から AWS を OIDC (OpenID Connect) で連携する場合にサムプリントを取得して ID プロバイダを作る必要があったしかし,2023年6月27日に GitHub Changelog でサムプリントを2種類設定するという記事が公開されて対応することになった…

EventBridge Scheduler から ECS Task を実行する構成を EventBridge Terraform module で構築する

2023年6月17日(3日前✨)にリリースされた AWS EventBridge Terraform module の最新バージョン v2.3.0 で Amazon EventBridge Scheduler がサポートされた モジュールを使えば多少ではあるけど記述量を抑えることができて,特に IAM Role まわりは楽になる…

AWS CLI / AWS SDK から実行できるようになった Amazon SQS の「DLQ 再処理」

2023年6月8日にリリースされた Amazon SQS の新しい API 3種類によって,Amazon SQS のデッドレターキュー (DLQ: Dead Letter Queue) に移動されたメッセージを "元のキュー" や "別のキュー" に戻す「DLQ 再処理」を AWS CLI / AWS SDK などから実行できる…

EventBridge Scheduler から ECS Task を実行する構成を Terraform で構築する

Amazon EventBridge Scheduler から Amazon ECS Task を定期的に実行する構成を Terraform で構築する機会があったのでまとめておく❗️Amazon EventBridge Scheduler とても便利 \( 'ω')/ tf ファイル 最初に完成形の tf ファイルを載せておく❗️今回は Amaz…

Terraform で ALB のアクセスログを設定するときに InvalidConfigurationRequest と出たら

Terraform で ALB (Application Load Balancer) を構築するときに「アクセスログ」を Amazon S3 に流す設定をすると,以下のように InvalidConfigurationRequest というエラーが出る場合がある⚡️エラーをよく読むと Please check S3bucket permission と書い…

Fargate でも使える!FireLens の init プロセスを活用して設定ファイルを S3 から読み込む

Amazon ECS で FireLens (Fluent Bit) を使ってログをルーティングするときに Fluent Bit の「設定ファイル」を書いて挙動をカスタマイズしたくなる場面は多くある.そして FireLens は設定ファイルタイプ config-file-type として s3 と file をサポートし…

Terraform Cloud x AWS に入門できる「AWS Modernization Workshop with HashiCorp Terraform Cloud」

AWS Modernization Workshop の「AWS Modernization Workshop with HashiCorp Terraform Cloud」を実施した❗️Terraform Cloud を使って AWS を操作する流れを一通り学べるので,特に Terraform や Terraform Cloud 入門者におすすめ.例えば "今までは AWS C…

Terraform Cloud で IAM Role から一時的なアクセスキーを取得する

Terraform Cloud で AWS を操作するときにアクセスキー(AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY)を使いたくなく,Terraform Cloud の「Dynamic Provider Credentials」を使って OpenID Connect (OIDC) と連携する仕組みを構築したので,ポイントをま…

Amplify Hosting を CloudFormation と GitHub の Personal Access Tokens でデプロイする

AWS Amplify Hosting に GitHub からフロントエンドアプリケーションをデプロイする構成を AWS CloudFormation で構築する機会があった.AWS Amplify Hosting はコンソールだと比較的簡単にデプロイできるけど,今回は AWS CloudFormation と GitHub の Pers…

Lambda の運用面でのベストプラクティスを学べる「AWS Lambda Operator Guide」を読んだ

AWS の公式ドキュメント「AWS Lambda Operator Guide」を読んだ❗️AWS Lambda を軸にサーバーレスアプリケーションを構築するときに意識しておくべき "運用面のポイント・ベストプラクティス" がまとまっていて,とても良いドキュメントだった 内容的には AWS…

rain: CloudFormation を便利に操作しちゃおう

AWS CloudFormation のテンプレートとスタックを便利に操作できる AWS 公式ツール「rain」を紹介する.僕自身も AWS CloudFormation スタックを試行錯誤しながら実装するときによく rain を使っている.rain には機能が多くあるけど,今回は個人的に便利だと…

LocalStack と samlocal コマンドで SQS x Lambda 構成をローカル環境で実行する

開発中に AWS Lambda 関数をローカル環境で実行するなら AWS SAM CLI の sam local invoke -e event.json コマンドを使えば良く,また AWS Lambda 関数のベストプラクティスに載っている Lambda ハンドラーをコアロジックから分離します。 を意識して実装す…

LocalStack を使って SSM Parameter Store をローカル環境で操作する

AWS Systems Manager Parameter Store を使ったアプリケーションを開発するときに,ローカル環境ではできる限り AWS アカウントに依存しないようにしたく,LocalStack を使う機会があったので調査ログをまとめておく.結果的に AWS Systems Manager Paramete…

AWS SAM で Amazon API Gateway の Usage Plan を作るときに API Stage not found と出たら

AWS SAM で Amazon API Gateway (REST) の API Key と Usage Plan を構築するとき,実行時に以下のように API Stage not found というエラーが出ることがある.これはよくハマる問題で,AWS SAM 関連の GitHub を見ると issue も出ている.今回は解決策と注…

cfn-diagram: CloudFormation のリソース関係図を生成しよう

AWS CloudFormation テンプレートのリソース関係図を生成できる「cfn-diagram」を紹介する❗️cfn-diagram を使うと HTML / アスキーアート / Mermaid / Draw.io などのフォーマットで出力できる.特に Mermaid で出力できるのは便利で,Markdown や GitHub と…

Amazon API Gateway から Amazon EventBridge への直接統合を AWS SAM と OpenAPI で構築する

Amazon API Gateway (REST API) から Amazon EventBridge にリクエストを流すように直接統合する構成を AWS SAM (AWS CloudFormation) と OpenAPI で実装する検証をしていたので紹介する❗️ハマりどころもあって,困ったときに参考になるドキュメントも少なく…

blank-go: Go で動く AWS Lambda 関数に入門しよう

AWS Lambda 関数を Go ランタイムで動かす Hello World レベルの初学者コンテンツを探していて,ドキュメントにも載っている blank-go プロジェクトがお手軽に使えて良かったので紹介したいと思う❗️初学者に教えるときに使えるぞ〜 \( 'ω')/ github.com ち…

GRC (git-remote-codecommit) をサポートした ghq v1.2.0 を試した

Git リポジトリを操作するために使っている ghq が,2021年5月にリリースされた v1.2.0(bugfix も含めると v1.2.1)で AWS CodeCommit の HTTPS GRC (git-remote-codecommit) をサポートしていた.さっそく動作確認をしてみた! github.com brew upgrade gh…

CodeDeploy のデプロイ実行とデプロイ完了待機を AWS CLI で試した

CodeDeploy のデプロイ実行を AWS CLI で試した.今回は GitHub からコードを取得する前提にしている. コミットハッシュを取得する CodeDeploy で GitHub からコードを取得する場合,対象となるコミットハッシュが必要になる.そこで,GitHub API から指定…

CodeDeploy エージェントのログに Missing credentials と出たら codedeploy-agent を再起動する

最近 CodeDeploy の検証をしていて,codedeploy-agent のエラーログに少しハマったので,メモ程度に残しておく. aws.amazon.com Amazon Linux に codedeploy-agent をインストールする 公式ドキュメントに書いてある手順で,問題なくインストールできた. $…

Fargate 東京リージョンは7月だー! / AWS Summit Tokyo 2018 に参加した

5/30 (水) - 6/01 (金) で AWS Summit Tokyo 2018 に参加してきた.3日間参加したものの,午前中はデイリースクラムなど重要なイベントがあったので,午後に数時間セッションを聞いたり,ブースを見たり,認定者ラウンジで休憩していた.今年はセッション予…

CircleCI 2.0 + Apex で Lambda をデプロイする

Lambda をデプロイする場合,最近だと Serverless Framework もしくは AWS Serverless Application Model を使う場面が多いけど,他の AWS サービスに依存せず Lambda だけをデプロイしたい場合には Apex も積極的に使っている.要件がシンプルな場合に特に…