kakakakakku blog

Weekly Tech Blog: Keep on Learning!

AWS

Terraform で「最新の」Amazon ECS タスク定義を追跡できる aws_ecs_task_definition の track_latest オプション

Terraform で Amazon ECS タスク定義を作りつつ,アプリケーションのライフサイクルとして GitHub Actions などの「Terraform 以外で」イメージタグを差し替えて Amazon ECS タスク定義を更新(正確には更新ではなくリビジョン追加)する運用を選択すること…

GitHub Actions から AWS CodeBuild のビルドを実行できる「aws-actions/aws-codebuild-run-build」

AWS CodeBuild Run Build for GitHub Actions (aws-actions/aws-codebuild-run-build) を使うと GitHub Actions から AWS CodeBuild のビルドを実行できる github.com シンプルに AWS CodeBuild のビルドを実行するだけなら project-name パラメータを指定す…

Python の独自パッケージを作って AWS CodeArtifact で管理する

開発チームで共通的に使うコードを独自ライブラリ(パッケージ)にして管理したい場面はあると思う.今回 AWS CodeArtifact で管理する流れを試す❗AWS CodeArtifact は npm / pip / Maven など複数のパッケージマネージャーをサポートしているけど,今回は p…

AWS Lambda 関数 (Python) の import 時間を計測しよう / -X importtime オプション or 環境変数 PYTHONPROFILEIMPORTTIME

AWS Lambda の初期化フェーズ (INIT) は「10秒」に制限されている.例えば,AWS Lambda 関数の「ベストプラクティス」を意識してハンドラ外に実装した処理が長くなったり,AWS Lambda 関数 (Python) で機械学習系のライブラリなどを多く import しようとして…

AWS CDK の cdk import コマンドを使って既存リソースをインポートする

AWS CDK の cdk import コマンドを使って既存リソースをインポートする(取り込む)手順を試してみた❗️何かしらの理由があって Infrastructure as Code (IaC) に組み込めず,そのままプロダクションにリリースされてしまうということもあると思う. Amazon S…

AWS CodeBuild の buildspec.yml でコマンドに改行を含める

AWS CodeBuild の buildspec.yml でコマンドに改行を含める場合は以下のように記述できる❗ コマンドのオプションが多かったりすると改行したくなることもあると思う \( 'ω')/ 1. シンプルに改行する バックスラッシュ \ を含めずシンプルに改行すれば OK …

トラフィックの急増に耐えられるソリューション!? Virtual Waiting Room on AWS を試した

AWS

ウェブサービスのトラフィックが急増して障害が発生してしまうことはあると思う.そういうときにリクエストを一時的にバッファリングして,適切に入場制限をする仕組みとして「Virtual Waiting Room(仮想待合室)」という仕組みがある.実際にショップ・病…

AWS CDK で AWS CodeBuild の GitHub Webhook を設定する

AWS CodeBuild で GitHub リポジトリにプッシュをしたら Webhook 経由で自動的にビルドを開始する構成を AWS CDK で実装してみたちなみに AWS CDK で AWS CodeBuild の Webhook を設定するだけだと以下のように Failed to call CreateWebhook というエラーが…

AWS CDK でリソースに一括でタグを設定する

AWS CDK を使っていてリソースに「一括でタグを設定したい」と思ったら Tags.of(SCOPE).add() を使えば簡単に設定できるTags.of に指定する SCOPE は IConstruct インタフェースを実装していれば良くて App も Stack も指定できる docs.aws.amazon.com App(…

AWS CDK で Amazon CloudWatch Alarm の AWS Lambda アクションを設定する

2023年12月のリリースで Amazon CloudWatch Alarm から直接 AWS Lambda 関数を呼び出して,何かしらのアクション(復旧処理など)を実行できるようになった❗️今までは Amazon SNS と組み合わせて実行する必要があって,今までよりもシンプルに統合できるよう…

Amazon Bedrock のユースケースに実践的に入門できる「Amazon Bedrock Workshop」

Amazon Bedrock で基盤モデル (Foundation Models) を実践的に活用する流れを体験できる「Amazon Bedrock Workshop」を実施した❗️Amazon Bedrock をマネジメントコンソールの playground で試すのは簡単だけど,Python (boto3) でどう実装するのかというコー…

AWS CDK で Amazon EventBridge Pipes(SQS ソース・Step Functions ターゲット)を設定する

AWS CDK で Amazon EventBridge Pipes を設定する場合,AWS CloudFormation に沿った L1 Construct の CfnPipeを使う必要がある.今回はソース(Amazon SQS キュー)・ターゲット(AWS Step Functions ステートマシン)で Amazon EventBridge Pipes を構成す…

AWS CDK で Amazon EventBridge Pipes(SQS ソース・Lambda エンリッチメント・ECS ターゲット)を設定する

AWS CDK で Amazon EventBridge Pipes を設定する場合,AWS CloudFormation に沿った L1 Construct の CfnPipeを使う必要がある.今回はソース(Amazon SQS キュー)・エンリッチメント(AWS Lambda 関数)・ターゲット(Amazon ECS タスク)で Amazon Event…

Amazon S3 のマルチパートアップロード・署名付き URL・Transfer Acceleration を組み合わせてファイルをアップロードするソリューション

Amazon S3 バケットにサイズの大きなファイルをアップロードするソリューション aws-samples/amazon-s3-multipart-upload-transfer-acceleration を試した❗️このソリューションは Amazon S3 の機能「マルチパートアップロード」と「署名付き URL」と「Transf…

AWS CDK でローカルファイルを Amazon S3 にアップロードできる aws_s3_deployment

AWS CDK で aws_s3_deployment モジュールを使うとローカルにある ZIP ファイル・ディレクトリなどを Amazon S3 にアップロードできる❗️使いどころとしては,静的ファイル・設定ファイル・データセットなどのアップロードも AWS CDK のワークフローに含めて …

AWS CDK で VPC IP Address Manager (IPAM) を設定する

2023年11月から VPC IP Address Manager (IPAM) に「無料枠利用枠」が追加されて Public IP Insights など一部の機能が無料で使えるようになった aws.amazon.com AWS アカウント個別に VPC IP Address Manager (IPAM) を有効化する場合,マネジメントコンソ…

AWS CDK のアルファモジュールで Amazon EventBridge Scheduler を設定する

AWS CDK で Amazon EventBridge Scheduler を設定する場合,現状では L2 Construct がなく AWS CloudFormation に沿った L1 Construct の CfnSchedule を使う必要がある.以下のドキュメントにも There are no official hand-written (L2) constructs for th…

AWS CDK で NLB にセキュリティグループを設定する

2023年8月にリリースされた NLB (Network Load Balancer) に対するセキュリティグループ設定のサポートは,今まで NLB のデメリットとして話題に上がることも多かったので,非常に期待されていたアップデートだと思う.アクセス制御を細かく行えるようになり…

AWS CDK で AWS Lambda 関数の高度なログ制御機能(フォーマット・ログレベル・ログ集約)を設定する

2023年11月にリリースされた AWS Lambda 関数の「高度なログ制御機能 (advanced logging controls)」によって,大きく3種類の追加設定ができるようになったどれも AWS Lambda 関数を多く運用しているチームになどに嬉しいアップデートではあるけど,個人的に…

AWS CDK で ログクラス(低頻度アクセス)の Amazon CloudWatch Logs ロググループを追加する

2023年11月にリリースされた Amazon CloudWatch Logs ロググループのログクラス(低頻度アクセス: Infrequent Access)を使うとログの取り込みコストを 50% 削減できる❗️アカウントのコスト削減をするときに必ずと言っても良いほどに話題に上がる Amazon Clo…

AWS Certified Security - Specialty (SCS-C02) に合格した

AWS セキュリティ専門の認定資格 AWS Certified Security - Specialty (SCS-C02) を2023年12月10日に受験して合格した❗️試験問題に関係する内容はガイドラインを厳守するため書かず,今回は個人的な振り返りも兼ねて勉強方法などをまとめておこうと思う aws.…

Terraform で default セキュリティグループのルールを削除する

AWS Security Hub を導入して AWS Foundational Security Best Practices (FSBP) などを有効化すると VPC default security groups should not allow inbound or outbound traffic という警告が検出されることがある [EC2.2] VPC default security groups sh…

AWS WAF Managed Rule Group の更新通知を受け取る

AWS WAF (Web Application Firewall) を運用していると Managed Rule Group の更新を把握したいという場面があるManaged Rule Group ごとに存在する Amazon SNS トピックをサブスクライブしておくと AWS WAF Managed Rule Group の更新通知を受け取れて便利 …

CI/CD Litmus Test: CI/CD レベルを測定しよう!

AWS が公開しているサイト「CI/CD Litmus Test」を使うと簡単に「CI/CD スコア」と「CI/CD レベル」を測定できる❗️開発チームで実施しながらレベルを上げるにはどうしたら良いかをディスカッションすると効果的に使えそう \( 'ω')/ litmus.devops.aws.dev …

Amazon CodeGuru Reviewer と Amazon CodeGuru Profiler に入門しよう!「Code Quality Workshop」を試した

AWS のワークショップ「Code Quality Workshop」を試した❗️ AWS CodePipeline / AWS CodeCommit / AWS CodeBuild / AWS CodeDeploy を組み合わせた CI/CD パイプラインの中で JUnit / JaCoCo (Java Code Coverage Library) を実行したり,Amazon CodeGuru Re…

Terraform で実装した IAM ポリシーを IAM Access Analyzer で検証できる tf-policy-validator コマンド

Terraform で AWS IAM ポリシーや Amazon S3 バケットポリシーを実装するときに terraform plan は通るのに terraform apply で失敗したり,terraform apply は通るのにポリシー自体に誤りがあって期待通りに動かなかったり,無駄にハマってしまった経験って…

AWS x セキュリティに入門するならまずこの一冊 /「AWS ではじめるクラウドセキュリティ」を読んだ

「AWS ではじめるクラウドセキュリティ」を読んだ❗️とても良かった \( 'ω')/ 本書ではもちろん AWS のセキュリティサービスの機能など「サービスカットな観点」も学べるけど,それ以上に「セキュリティポリシーとは何か」や「どんなリスク分析フレームワー…

FireLens の init プロセスで [MULTILINE_PARSER] を使う

AWS Fargate と Amazon ECS で FireLens (Fluent Bit) を使うときに「init プロセス」を活用すれば設定ファイルを Amazon S3 から自動的に読み取れるようになるよ❗️という便利機能は以下の記事にまとめてある kakakakakku.hatenablog.com しかし init プロセ…

ALB の固定レスポンスで実現するメンテナンス画面の仕組みを Terraform で構築する

Application Load Balancer (ALB) のリスナー設定で「固定レスポンス」を使うと ALB から直接 HTML を返せる❗️ docs.aws.amazon.com 「固定レスポンス」は2018年7月頃にリリースされていて,さらに2019年3月頃にリリースされた「高度なリクエストルーティン…

Terraform の AWS Cloud Control Provider (awscc) で AWS Chatbot を構築しよう

Terraform で AWS Chatbot を構築したくても AWS SDK for Go との関係によって AWS Provider でサポートされていないという課題がある以下のような関連する issue もある github.com github.com ちなみに AWS CloudFormation では AWS::Chatbot::SlackChanne…