サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
kakakakakku.hatenablog.com
AWS CDK で外部パッケージを含む Python の AWS Lambda 関数をデプロイする場合,requirements.txt から依存関係を解決して,デプロイするアセットとして ZIP にまとめる(バンドルする)必要がある💡 今回は aws-cdk-lib.aws_lambda module と @aws-cdk/aws-lambda-python-alpha module を使う方法を試す❗️ 前提 今回はサンプルとして requests に依存したコードを以下のディレクトリ構成で置いてある前提とする \( 'ω')/ functions/requests ├── app.py └── requirements.txt aws_lambda module を使う まず,AWS CDK で AWS Lambda 関数をデプロイするときによく使う aws_lambda modu
2024年2月にリリースされた AWS CloudFormation の「IaC ジェネレーター機能」を使うとマネジメントコンソール・AWS CLI などを使って作った(作ってしまった)リソースをスキャンして,自動的に AWS CloudFormation テンプレート化 (YAML / JSON) できる❗️もちろんそのまま AWS CloudFormation スタックにリソースをインポートすることもできる. aws.amazon.com 今までも AWS CloudFormation のインポート機能はあったけど,リソース設定と見比べながら(そしてドリフト機能を活用しながら)テンプレートを書くのはそこそこ大変さがあったと思う.IaC ジェネレーター機能を使う流れは以下のブログにも載っていて,今回紹介するワークショップの内容にも似ている👀 aws.amazon.com IaC Gen
GitHub Actions ではデフォルトの挙動として同じワークフローの複数のジョブを同時実行できる.無駄に待つ必要がないという意味ではメリットがあるけど,ワークフローによっては同時実行したくないこともあると思う. GitHub Actions でワークフローが複数トリガーされてしまって慌てて止めたという経験もあったりする😅例えばワークフローの実行時間が長く,完了する前に次のコミットをプッシュしてしまったり,ワークフローの実行が完了する前にプルリクエストをマージしてしまったり💨 concurrency 設定 GitHub Actions ではコンカレンシー (concurrency) という設定があって,ワークフローの同時実行を制御できる.今回はワークフローレベルで試すけど,ジョブレベルで細かく制御することもできる❗️個人的にはとりあえず設定しておいても良さそうかなと思う. docs
「テスト駆動 Python 第2版」を読んだ📕 仕事で pytest を使ってて,もっと自信を持って書けるようになりたいな〜と思っていたら本書を見つけてさっそく読んでみた.pytest の機能・記法・設定・Tips などの理解が深まって本当に読んで良かった❗️フィクスチャ・パラメータ化・モック・プラグイン活用など,今まで何となく書いてたところを自信を持って書けるようになって,仕事で pytest を書くのが楽しくなった🦄 テスト駆動Python 第2版 作者:Brian Okken翔泳社Amazon もちろん pytest の公式ドキュメントを読むべきだし,本書の内容の多くは公式ドキュメントにも載っているとは思うけど,本書の翻訳はとても読みやすく,pytest の全体像をサッと把握できて,また Cards というサンプルアプリケーションを題材に実際に pytest を試しながら読み進め
2023年12月のリリースで Amazon CloudWatch Alarm から直接 AWS Lambda 関数を呼び出して,何かしらのアクション(復旧処理など)を実行できるようになった❗️今までは Amazon SNS と組み合わせて実行する必要があって,今までよりもシンプルに統合できるようになった.もちろん Amazon SNS でファンアウトすることによる拡張性も重要なので,個人的には AWS Lambda 関数を呼び出せれば十分というシンプルな場面で使えそうだなーと思っていたりする \( 'ω')/ aws.amazon.com AWS CDK で試す AWS CDK では v2.119.0 から Amazon CloudWatch Alarm の Lambda アクションを設定できるようになっていた❗️試してみたサンプルコード (TypeScript) を載せておく. gith
Powertools for AWS Lambda (Python) の「Validation」を使うと AWS Lambda 関数に渡されたイベント情報のバリデーションを JSON Schema に沿って実現できる.例えば,必須パラメータ・文字数制限・ENUM・正規表現などをチェックできる👌 Powertools for AWS Lambda (Python) 自体は Tracer / Logger / Event Source Data Classes などをよく使うけど,Validation は今まで活用できてなく,試してみたらとても便利だったので,今回試した結果を簡単にまとめておく \( 'ω')/ docs.powertools.aws.dev 検証環境 今回は AWS SAM を使って Amazon API Gateway (REST API) と AWS Lambda 関数
Testcontainers を使うと,テストコードを実行するときに必要になるデータベース・キャッシュ・キューなどの依存関係をコード上で管理できて,実行後にはコンテナを自動的に消してくれるという使い捨て可能な仕組みを簡単に作れる❗️Testcontainers のサイトに載っている「Test dependencies as code」という表現はピッタリだと思う👌 testcontainers.com Testcontainers は Java / Go / .NET / Rust など多くの言語をサポートしているけど,今回は Python 用の testcontainers-python を試してみた.検証に使ったコードを紹介しつつ,簡単にまとめておく✍ また Testcontainers Cloud もあったりする🌩 testcontainers.com 前提 今回は以下の前提で試
Terraform で Amazon ECS タスク定義を作りつつ,アプリケーションのライフサイクルとして GitHub Actions などの「Terraform 以外で」イメージタグを差し替えて Amazon ECS タスク定義を更新(正確には更新ではなくリビジョン追加)する運用を選択することがあると思う.さらにデプロイを繰り返すと使わなくなった Amazon ECS タスク定義が増えるため,定期的に「登録解除 (INACTIVE)」をすることもあると思う.ちなみに2023年2月からは削除もできるようになっているけど〜 \( 'ω')/ track_latest とは しかし Amazon ECS タスク定義を登録解除すると Terraform でリソースを追跡できず,terraform plan を実行すると Amazon ECS タスク定義を作り直そうとしてしまう.少し前置きは長く
Dependabot version updates を使うと Terraform Provider のアップデートを自動化できる❗️設定は比較的簡単で package-ecosystem に terraform を設定して,あとは必須の directory と schedule.interval でアップデートの対象ディレクトリとスケジュールを決めれば OK👌個人的な Terraform 検証用プライベートリポジトリに設定して数週間試してみた \( 'ω')/ さらに package-ecosystem に github-actions を設定すると actions/checkout@v4 など GitHub Actions のアクションも自動的にアップデートできる❗️一度入れたらそのままということもよくあるし助かる〜. docs.github.com 🤖 .github/depen
「現場のプロがわかりやすく教える位置情報エンジニア養成講座」を読んだ📕 今まで GIS: Geographic Information System など位置情報を取り扱うための技術的な知識や経験がなく,地図アプリケーションを使うと「便利だな〜w」という感想しか出てこないようなレベルだった💨 本書を読んで,そして本書の後半では実際にアプリケーションを写経しながら実装したことによって,位置情報を取り扱うための最低限の知識と開発の流れを把握できるようになった❗️本書の冒頭には「これから位置情報を扱うエンジニア」が読者層だと書いてあったけど,まさにその通りだと思った.位置情報や地図を仕事で使う前のキャッチアップに最適な一冊だった🗾 現場のプロがわかりやすく教える位置情報エンジニア養成講座 作者:井口奏大秀和システムAmazon さらに OpenStreetMap / 国土数値情報 / 地理
2024年から Habitify で個人的な習慣化の管理をしていて,もうとにかく便利で毎日の習慣化を支えてもらっている❗️朝活・読書・サプリメントなどを記録しつつ,Habitify のチャレンジ機能を使って毎日プランクを続けていたりもする💪Habitify は無料でも十分使えるけど,僕は Premium に課金して使っている〜 \( 'ω')/ www.habitify.me 実は Habitify を使うまでは数年間 Google Sheets で習慣化の管理をしていて,例えば朝活を例にすると「その日に取り組んだこと」を必ず記録していた.Habitify にも「習慣メモ」という機能があって記録はしてるけど,振り返りのために定期的に集計したく,今回は Habitify API を試してみた❗️API ドキュメントには以下にある. docs.habitify.me 準備 まず Habiti
AWS CodeBuild Run Build for GitHub Actions (aws-actions/aws-codebuild-run-build) を使うと GitHub Actions から AWS CodeBuild のビルドを実行できる👌 github.com シンプルに AWS CodeBuild のビルドを実行するだけなら project-name パラメータを指定すれば良くて簡単〜 \( 'ω')/ name: Start AWS CodeBuild build on: workflow_dispatch: push: branches: - master pull_request: branches: - master permissions: id-token: write contents: read jobs: build: runs-on: ubunt
AWS Lambda の初期化フェーズ (INIT) は「10秒」に制限されている.例えば,AWS Lambda 関数の「ベストプラクティス」を意識してハンドラ外に実装した処理が長くなったり,AWS Lambda 関数 (Python) で機械学習系のライブラリなどを多く import しようとして遅くなり,結果的に INIT のタイムアウトが出てしまうことがあったりする. INIT_REPORT Init Duration: 10020.95 ms Phase: init Status: timeout AWS Lambda 関数 (Python) で import の最適化をするためには「そもそもどの import が遅いのか」を確認したく,import の前後に計測用のログを仕込むこともできるけど,Python 3.7 から使える -X importtime オプション(もしくは環境
Amazon Bedrock で基盤モデル (Foundation Models) を実践的に活用する流れを体験できる「Amazon Bedrock Workshop」を実施した❗️Amazon Bedrock をマネジメントコンソールの playground で試すのは簡単だけど,Python (boto3) でどう実装するのかというコードレベルまで学べる💡 現在 Amazon Bedrock Workshop には以下のコンテンツがあって,Amazon Bedrock を活用できるユースケースの多さにワクワクする.実際にどのコンテンツもとてもおもしろかった👏 Prompt Engineering(プロンプトエンジニアリング) Text Generation(テキスト生成) Text Summarization(テキスト要約) Question Answering(質問と回答) Co
GitHub Actions を使っていて,コミットはプッシュするけどビルドはまだ実行したくないというときに [skip ci] をよく使っている.GitHub Actions では2021年にサポートされていて,他にも [no ci] や [skip actions] などのメッセージも使える👌 docs.github.com github.blog 最近 GitHub Actions ワークフローを実装しているときに [skip ci] のような「カスタムメッセージ」を使ってワークフローのステップを制御できたら便利かもしれない💡と思って試してみた.結論としてはワークフローのステップで if: contains(github.event.head_commit.message, '[do something]') にように実装すれば簡単に実現できた❗️ 🐰 workflow.yml
AWS CodeBuild で GitHub リポジトリにプッシュをしたら Webhook 経由で自動的にビルドを開始する構成を AWS CDK で実装してみた💡ちなみに AWS CDK で AWS CodeBuild の Webhook を設定するだけだと以下のように Failed to call CreateWebhook というエラーが出る場合がある🔥 Failed to call CreateWebhook, reason: Could not find access token for server type github 今回は GitHub Personal Access Tokens (PAT) を AWS Secrets Manager に設定して,AWS CDK の aws_codebuild.GitHubSourceCredentials で認証情報を設定する👌
Terraform で count Meta-Argument を if のように使ってリソースを作るかどうかを制御できるという Tips がある.リソース間で参照するときは,同じく count で制御しつつ,例えば aws_iam_user.kakakakakku[0].name のようにインデックスを指定できるけど,Terraform の Output Values から参照する場合は output で制御できず,リソースを作らない場合に Error: Invalid index というエラーが出てしまう場合がある💨 one 関数と組み合わせる 対策の一つとして,Terraform の one Function(one 関数)と Splat Expressions(スプラット演算子)を組み合わせて解決できる.以下にサンプルコードを載せておく❗️実装には特に意図はなくあくまでサンプルと
2023年の振り返り🎉 技術を学び続けた 2019年から5年連続で「幅広く技術を語れるように学び続ける」を年間目標にしていて,さらに2023年は「実戦投入力」を意識することも追加していた.後ほど紹介するけど,2023年は kakakakakku blog に年間100記事書くことができて,それほどインプットとアウトプットを繰り返して学び続けられたと思う.特に2023年4月からは開発現場に戻ったため,今まで以上に学ぶことも増えて,そしてブログにアウトプットしたいことも増えた.本当に日々ブログネタが見つかる状態で,ふと2017年に発表した「ブログを書く技術」の一言を思い出したりもしていた💡 2017年に発表した「ブログを書く技術」から引用 そして,2023年の四半期ごとに掲げていた中目標も紹介する.2022年10月から本格的に英語を学び直していて,2023年3月に先輩の住むシアトルに1人で
Amazon S3 バケットにサイズの大きなファイルをアップロードするソリューション aws-samples/amazon-s3-multipart-upload-transfer-acceleration を試した❗️このソリューションは Amazon S3 の機能「マルチパートアップロード」と「署名付き URL」と「Transfer Acceleration」を組み合わせて実現されている💡ちょうど似たようなアーキテクチャを検討していて,参考になるサンプルを探しているときに発見した \( 'ω')/ ソリューションのサンプル実装は GitHub に公開されている. github.com またソリューションの解説記事は AWS Compute Blog に公開されている. aws.amazon.com アーキテクチャ ブログ記事に載っているアーキテクチャ図を見るとわかる通り,Amazon
2023年2月から「朝活」を習慣化できるように取り組んでいて,2023年の年末まで10ヶ月半ほど続けられたので簡単に振り返っておく🌅 本当に朝活をはじめて良かったと思うし,2023年のインプット・アウトプットは朝活に支えられていたと言えるほどでもある❗️朝活に興味がある人の参考になれば〜 背景 もともと僕自身は夜型で,朝は全然起きれないけど夜はいくらでも起きてられるという感じだった.とは言え「朝活への憧れ」は昔からあって,今まで何度も朝活に挑戦したけど続かずに挫折を繰り返していた.それでも日々忙しく,時間の捻出ができないことを言い訳にしたくなく「誰にも邪魔されない時間」を確保するべくまた朝活に挑戦することにした💪もっと詳しく書くと,ちょうど2023年2月から退職前の有給消化をしていて,心にゆとりがあったので始めやすい時期でもあった. 朝活とは 僕自身が取り組んでいた朝活を雑に定義すると
AWS のワークショップ「Code Quality Workshop」を試した❗️ AWS CodePipeline / AWS CodeCommit / AWS CodeBuild / AWS CodeDeploy を組み合わせた CI/CD パイプラインの中で JUnit / JaCoCo (Java Code Coverage Library) を実行したり,Amazon CodeGuru Reviewer でコードレビューを自動化したり,Amazon CodeGuru Profiler でアプリケーションのパフォーマンスを分析したりできる.AWS サービスを組み合わせてプロダクトコードの品質を向上する仕組みを構築する流れを体験できるワークショップになっている👏 catalog.us-east-1.prod.workshops.aws ワークショップで使うサンプルコード (Java
2023年7月に YouTube チャンネル「カックマイクラ実況」を作って,仕事と並行して「6ヶ月間」ほぼ毎週動画を1つ企画・収録・編集・公開してみた❗️毎週テックブログも書きながら動画も公開して,我ながら楽しく頑張れたと思う.簡単に振り返っておく.ぜひチャンネル登録で応援をお願いします〜✌ www.youtube.com 背景 👾 もともと「動画編集に入門したい」と思っていて,2022年の目標にしていたけど取り組むことができず(2022年の振り返りと2023年の抱負 - kakakakakku blog),2023年の目標に持ち越していた経緯がある.2023年の上半期は忙しく取り組めなかったけど,下半期に本格的に始めることができた👌 別に YouTuber になりたいという夢があるわけではなく,今後テックブログ以外に動画でもアウトプットをしたいと思っていて,そのためには動画編集の経験
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 should not allow inbound or outbound traffic This control checks whether the default security group of a VPC allows inbound or outbound traffic. The control fails if the security group allows
2023年11月にリリースされた AWS Lambda 関数の「高度なログ制御機能 (advanced logging controls)」によって,大きく3種類の追加設定ができるようになった💡どれも AWS Lambda 関数を多く運用しているチームになどに嬉しいアップデートではあるけど,個人的には特に「任意の Amazon CloudWatch Logs Group」にログを集約できるのは便利だと思う❗️ AWS Lambda 関数のログフォーマットを JSON に変更できる AWS Lambda 関数のログレベルをコードを変更せずに設定できる 任意の Amazon CloudWatch Logs Group にログを集約できる むしろ今までの経験から AWS Lambda 関数の Amazon CloudWatch Logs Group は /aws/lambda/xxxxx であ
最近 Hasura に入門していて,その前に GraphQL 自体を学べる Hasura のチュートリアル「GraphQL Tutorial」を実施してみた❗️ Hasura の話はほとんど出てこなくて,GraphQL と REST / gRPC の比較・GraphQL オペレーションの解説などを基礎から学べる.また実際に GraphiQL で GraphQL クエリを実行しながら体験もできるので「GraphQL ってたまに聞くけどわからんぞー🔥」という GraphQL 未経験者におすすめできる入門コンテンツだった \( 'ω')/ hasura.io ちなみに日本語もあるけど最新ではなく(例えば GraphQL vs gRPC がなかったり)英語を翻訳して実施するのが良いと思う. hasura.io ちなみに僕自身は GraphQL の基本的なことは理解できているはずだけど(例えば過去
AWS セキュリティ専門の認定資格 AWS Certified Security - Specialty (SCS-C02) を2023年12月10日に受験して合格した❗️試験問題に関係する内容はガイドラインを厳守するため書かず,今回は個人的な振り返りも兼ねて勉強方法などをまとめておこうと思う👌 aws.amazon.com 🔐 なぜ受験したのか 2023年11月頃から仕事で AWS でのセキュリティ対策全般の設計と構築にゼロベースで取り組んでいる❗️1ヶ月ほど調査・検証・リリースを繰り返しながら実践的な理解を獲得できた気がするので,知識確認も兼ねて AWS Certified Security - Specialty を受験してみようと思った.仕事は課題軸で「トップダウン」に学べて,資格取得は知識軸で「ボトムアップ」に学べるので,上からと下からを同時に攻めようという思いもあった🔥
AWS が公開しているサイト「CI/CD Litmus Test」を使うと簡単に「CI/CD スコア」と「CI/CD レベル」を測定できる❗️開発チームで実施しながらレベルを上げるにはどうしたら良いかをディスカッションすると効果的に使えそう \( 'ω')/ litmus.devops.aws.dev 流れとしては CI/CD の設計に関する「計20種類」の質問(Yes or No)にポチポチと答えていくと以下の結果が出る📊 CI/CD score CI/CD level 9.5 or above Fully CI/CD 8–9 Mostly CI/CD 5–7 Neutral Below 5 Not CI/CD GET STARTED を押す 質問に Yes or No で答える 今取り組んでる CI/CD をイメージしながら答えたら Mostly CI/CD だった! 質問一覧 最終
Trivy の「VM image scanning」を使うと AWS の Amazon Machine Image (AMI) や Amazon Elastic Block Store (Amazon EBS) スナップショットに対してセキュリティスキャンを実行できる❗️サーバーにエージェントをセットアップする必要がなく(エージェントレス),スキャンのために Amazon EC2 インスタンスを一時的に起動する必要もなく,便利だ〜 \( 'ω')/ ドキュメントにも書いてあるけど現在はまだ EXPERIMENTAL として提供されているため,今後仕様変更になる可能性はある🔥 aquasecurity.github.io さっそく試す Trivy v0.45.0 を使ってさっそく試す❗️ $ trivy --version Version: 0.45.0 今回は検証用の Amazon EC
2023年11月21日(明日📅)に出版される新著「詳解 Terraform 第3版」を読んだ📕 本書では Terraform の基本的な仕組みを学べるだけではなく,Terraform を実践的に使うときに必要になるステート管理・モジュール・シークレット管理・テストなど幅広いトピックまでまとまった一冊になっていて素晴らしかった❗️また Terraform の日本語書籍は今まであまりなく,この内容を日本語で読めることも素晴らしいと思う. 詳解 Terraform 第3版 ―Infrastructure as Codeを実現する 作者:Yevgeniy Brikmanオーム社Amazon 本書は翻訳を担当された松浦隼人さん,そしてオライリー・ジャパン様に送っていただきました.出版情報を知ったときから絶対に買おうと思っていたほど気になってました.ありがとうございます❗️ そして出版おめでとうご
次のページ
このページを最初にブックマークしてみませんか?
『kakakakakku blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く