タグ

ブックマーク / dev.classmethod.jp (191)

  • Pythonでリトライ処理を簡単に追加できる「tenacity」を使ってみる | DevelopersIO

    今回はPythonで簡単にリトライ処理を追加できる「tenacity」を使ってみます。 デコレータ形式で簡単にリトライ処理を追加できるので便利です。 tenacityについて プログラムを書いていて、HTTPの通信などでリトライ処理を実装する機会は多いと思います。 今回はそんなリトライ処理を簡潔に書けるtenacityの使い方を説明します。 インストール インストールはpipで可能です。 インストール pip install tenacity 使い方 シンプルな例 シンプルな例 import random from tenacity import retry @retry def random_error(): num = random.randint(0, 10) if num > 4: print(f"Error: num={num}") raise Exception("Error!

    Pythonでリトライ処理を簡単に追加できる「tenacity」を使ってみる | DevelopersIO
  • AWS CDKのAPIGateway/Lambdaスタック分割の落とし穴と解消法 | DevelopersIO

    この記事では、cdkでスタック分割を利用してAPIGateway, Lambda の構成を作る際に起こる問題と解消法について紹介しています。 スタック分割構成を利用している方、検討している方の参考になる情報となっています。 はじめに 概要 この記事では、cdkでスタック分割を利用してAPIGateway, Lambda の構成を作る際に起こる問題と解消法について紹介しています。 理想的な形はスタックを分割せずに同一スタックで管理することですが、CloudFormationのリソース数上限(500個)やファイル上限(51,200バイト)などの制限により、スタック分割の構成を選択することがあります。 スタック分割の構成ではcdk deploy時に以下のような問題が起こります。 スタック分割を行うと新たにAPIのパスを追加した際に、自動デプロイされない問題 ステージ設定を変更した際に昔のデプロイ

    AWS CDKのAPIGateway/Lambdaスタック分割の落とし穴と解消法 | DevelopersIO
  • 相互 TLS 認証で API Gateway のバックエンドの S3 にアクセスできるかやってみた | DevelopersIO

    こんにちは、アノテーション テクニカルサポートチームの中野です。 API Gateway のバックエンドに S3 を設定するパターンと API Gateway の通信で相互 TLS 認証(mTLS)を行うパターンの組み合わせを試す機会があったので、以下に手順をまとめてみました。 構成 以下のような構成で構築してみます。 また、mTLS の詳しい仕組みについては、以下がわかりやすかったので参照ください。 やってみた 前提条件 構築するまえに、前提として API Gateway のカスタムドメインを作成するために、以下を準備しておきます。 Route53 へのドメインの登録 ACM で証明書発行 準備が完了したら、以下手順を進めてきます。 ステップ 1: S3 に静的ファイルをアップロード まず、S3 を作成します。 何らかの適当な文字を描画する HTML ファイルをアップロードしておきます。

    相互 TLS 認証で API Gateway のバックエンドの S3 にアクセスできるかやってみた | DevelopersIO
  • API Gatewayでカスタムドメインを利用する(SSL証明書のみAWS機能で用意するパターン) | DevelopersIO

    設定手順 前提 API GatewayAPIのカスタムドメインホストとしてapi.contoso.comを利用したい 利用したいカスタムドメインcontoso.comが、外部サービスで用意されている contoso.comのゾーンをホストするDNSサーバが、外部サービスで用意されている カスタムドメインを利用したいAPIが、API Gatewayで作成されている ACMコンソールでカスタムドメインに対する証明書のリクエストの実施 マネージメントコンソールからCertificate Managerを開きます。 証明書タイプで[パブリック証明書のリクエスト]を選択して[証明書のリクエスト]をクリック。 [ドメイン名]にAPI Gatewayで利用したいカスタムドメインのAPIホスト名(例:api.contoso.com)を入力し、[次へ]をクリック。 今回は[DNS の検証]を選択します。[

    API Gatewayでカスタムドメインを利用する(SSL証明書のみAWS機能で用意するパターン) | DevelopersIO
  • 既存のECS(Fargate)にALBを追加してみる | DevelopersIO

    ECS(Fargate)でとりあえずタスクを立ち上げて使えるようにしてみたけど、当はALBを前段に置いてバランシングしたいんだよねぇ。なんてことはありませんか? ようするに今タスクIP直アクセスして使ってるやつを、こう変えたいみたいなことです。 マネジメントコンソールから変更しようと思うと、一見できなさそうに見えますが、ドキュメントにAWS CLIまたはSDKを使用してロードバランサーの設定変更できる旨が記載されています。 AWS CLI または SDK を使用して、ロードバランサーの設定を変更します。設定の変更方法の詳細については、「Amazon Elastic Containers サービス API リファレンス」の UpdateService を参照してください。 クラシックコンソールを使用したサービスの更新 - Amazon ECS UpdateService - Amazon

    既存のECS(Fargate)にALBを追加してみる | DevelopersIO
  • movedブロックを使ってリファクタリングしてみた | DevelopersIO

    こんにちは!AWS事業コンサルティング部のたかくに(@takakuni_)です。 今回は、movedブロックを使用してリソースのリファクタリングをやってみようと思います。 movedブロックとは Terraform バージョン 1.1で現れたリファクタリングを補助してくれるブロックです。 使い方イメージとしては、「もしもリソースAがリソースBという名前だったら...」のような雰囲気で、リソースのリファクタリングを補助してくれるブロックとなっています。 今までどうやっていたの? 今までのリソースのリファクタリングでは、terraform stateコマンドを駆使して、リファクタリングを行っていました。 例えば以下のtfファイルがあり、リファクタリングを+/-に従い行いたかったとします。 main.tf terraform { required_providers { aws = { so

    movedブロックを使ってリファクタリングしてみた | DevelopersIO
  • WEBアプリのE2Eテストを自動化 ~ Playwrightの機能紹介とコード例 | DevelopersIO

    npm init playwright@latest 実行すると @playwright/testがインストール playwrightの設定ファイル(playwright.config.ts)が追加 サンプル用のテストコードが追加 が行われます。 テストコード自動生成 playwrightにはブラウザ操作でテストコードを生成する機能があります。 package.jsonのscriptsに以下を追加してnpm run test:genするか、 "test:gen" : "playwright codegen" npxでも実行できます。引数のURLは任意です。 npx playwright codegen http://localhost:3000/

    WEBアプリのE2Eテストを自動化 ~ Playwrightの機能紹介とコード例 | DevelopersIO
  • Red Hat Enterprise Linux 9でlogrotateを使ってログファイルを1時間ごとにローテーションさせてみた | DevelopersIO

    Red Hat Enterprise Linux 9でlogrotateを使ってログファイルを1時間ごとにローテーションさせてみた こんにちは!AWS事業部のおつまみです。 みなさん、 Red Hat Enterprise Linux9 で logrotate を使って、ログファイルを1時間ごとにローテーションさせたいと思ったことはありますか?私はあります。 logrotate は、ログファイルをローテーションし、必要に応じて圧縮などを行うツールです。 これを使うことで、「週次や月次でローテーションする」、「ファイルサイズがある値を超えたらローテーションする」といったことができ、ログの肥大化を防ぐことができます。 Linuxに標準で備わっているツールのため、こちらを使用してログローテションしている方も多いと思います。 今回この機能を使って、ログファイルを1時間ごとにローテーションさせたい

    Red Hat Enterprise Linux 9でlogrotateを使ってログファイルを1時間ごとにローテーションさせてみた | DevelopersIO
    uokada
    uokada 2024/01/19
  • Gmailに届かない神奈川県立高校入試のインターネット出願システムのメールを調べてみた | DevelopersIO

    Gmailに届かないと報告されている2024年神奈川県立高校入試の出願システム自動返信メール、 2024年1月15日にYahooメールに届いたメールヘッダー情報などから、送信ドメイン認証(SPF、DKIM、DMARC)の確認を試みました。 2024年2月の神奈川県立高校の受験を予定している家族から、 "インターネット出願システムの登録を試みたが、システムからの返信メールがGmailのアドレスが届かないため、代わりにYahooメールを利用した。" との報告を受けました。 今回、2024年1月15日にYahooメールで受信したインターネット出願システムのメールを調査する機会がありましたので、紹介させて頂きます。 2024年1月19日 追記 ネット出願システムの不具合解消後のメールの調査結果を公開しました。 2024年1月18日 追記 ネット出願システムのメールサーバ側の問題について調査結果を公

    Gmailに届かない神奈川県立高校入試のインターネット出願システムのメールを調べてみた | DevelopersIO
    uokada
    uokada 2024/01/17
  • [アップデート] AWS Step Functionsのステートマシン実行失敗時点からの再実行をサポートしました | DevelopersIO

    Redriveで対応できない場合に備えて冪等性のあるワークフローを組んだり、リトライ処理を組み込むのは引き続き重要 ステートマシンの途中から再実行したい こんにちは、のんピ(@non____97)です。 皆さんはAWS Step Functionsのステートマシンの実行が失敗した時に、失敗したステートから再実行したいなと思ったことはありますか? 私はあります。 今までステートマシンが途中で終了した際に再実行する場合、ワークフローの最初から実行する必要がありました。 ステートマシンが実行失敗した際にワークフローの最初から実行する場合、正常に実行完了していた処理をもう一度実行することとなってしまいます。そのため、ワークフローは最初から実行し直すことを考慮して設計する必要がありました。 要するに冪等性が求められています。 ステートマシンにおいて冪等性を持たせたい場合は以下のような方法があります。

    [アップデート] AWS Step Functionsのステートマシン実行失敗時点からの再実行をサポートしました | DevelopersIO
  • [アップデート] Amazon CloudWatch でアラームに関する推奨事項が提供されるようになりました | DevelopersIO

    いわさです。 Amazon CloudWatch の今朝のアップデートで、アラームの対象メトリクスとしきい値の推奨事項が提供されるようになりました。 CloudWatch Alarm を使った監視を始める時に、「どのメトリクスをどういう条件くらいでやるのが良さそうか、どの程度が一般的なのか」など、指針が欲しくなるシーンがあります。 「ワークロードごとに適切な値を設計することが必要」と言いつつも、まずは手軽に推奨事項から始めたいというケースも多いです。 今後は CloudWatch コンソールが推奨事項を提供してくれます。 「アラームに関する推奨事項」トグルボタンが追加されている CloudWatch メトリクス画面には現在稼働しているワークロードが出力したメトリクスが表示されています。 このメトリクス画面のいくつかの箇所で次のような「アラームに関する推奨事項」というトグルボタンが追加されて

    [アップデート] Amazon CloudWatch でアラームに関する推奨事項が提供されるようになりました | DevelopersIO
  • 主にVSCodeではじめるPython開発環境構築ガイド | DevelopersIO

    ファイル比較 VSCodeのエクスプローラで、ファイル2つを選択して右クリックメニューから「選択項目を比較」で比較することができます。 また右クリックで、「比較対象の選択」をした後に「選択項目を比較」でも比較することも可能です。 VSCodeのSnippetの使い方 VSCodeのSnippetも便利です。似たような構造のクラスを実装する場合などや、プロジェクト共通で使いがちな書き方というものをSnippetに登録して、効率化することができます。 また、変数を持たせておくこともできます。この場合、Snippetを呼び出した後に変数部分にカーソルがあたるので、そこで変数部分をタイピングできます。 詳細は以下のリンクをご覧ください。 Visual Studio Codeに定型文(スニペット)を登録する方法 VSCodeのUser Snippetを活用しよう! また後述するSnippet Gen

    主にVSCodeではじめるPython開発環境構築ガイド | DevelopersIO
  • Terraformで構築する機械学習ワークロード(Batch on Fargate編) | DevelopersIO

    こんちには。 データアナリティクス事業部 インテグレーション部 機械学習チームの中村です。 今回も「Terraformで構築する機械学習ワークロード」ということで、前回の記事ではLambdaを使いましたが、今回はその処理をBatch on Fargateに載せてみたいと思います。 前回記事は以下です。 構成イメージ 構成としては以下のようなものを作成していきます。 前回との違いとしては、まずLambdaの代わりにBatch on Fargateを使う点です。 Fargateのタスク(ジョブ)上のコンテナイメージで物体検出モデルの一つであるYOLOXを動かしていきます。 また、それ以外にもBatchを使用する場合は、S3イベントとBatchの間にEventBridgeが必要となります。 動作環境 DockerTerraformはインストール済みとします。 Terraformを実行する際の

    Terraformで構築する機械学習ワークロード(Batch on Fargate編) | DevelopersIO
  • ALB(Application Load Balancer)がボトルネックになっていたか確認する方法を教えてください | DevelopersIO

    困っていた内容 ALB(Application Load Balancer)への急激なアクセス増加により処理が遅延し、一時的にサーバーエラーとなる事象が発生しました。ボトルネックが ALB 側か、もしくはバックエンドサーバー側かを切り分けたいのですが、ALB の性能限界に達していたか確認する方法を教えてください。 どう対応すればいいの? ALB は負荷状況に応じて内部的にスケーリングが行われるため、最大接続数などの情報は非公開となっています。 そのため ALB の性能限界を明確に確認することはできませんが、以下 (1) ~ (3) の指標を確認することで、ALB もしくはバックエンドのどちらがボトルネックになっていたかを推測できます。 (1) 当該時刻に ALB のスケーリングが行われていたかを確認する ALB への接続数が物理ノードの限界に達すると自動的にスケーリングが行われ、その際には

    ALB(Application Load Balancer)がボトルネックになっていたか確認する方法を教えてください | DevelopersIO
  • AWS CDKでStep FunctionsステートマシンのRemoval policyを設定できるようになっていました | DevelopersIO

    こんにちは、CX事業部 Delivery部の若槻です。 AWS CDKのリリース履歴を見ていたところ、v2.66.0でAWS Step Functionsステートマシンの削除ポリシー(Removal policy)を設定できるようになっていることに気が付きました。 Features - stepfunctions: removal policy for state machines (#24105) (5f33a26) 対応はこちらのPull Requestでなされたようです。 何が嬉しいのか Step Functionsのステートマシンを削除(物理削除)すると、そのステートマシンの実行履歴(Execution histories)も合わせて削除される挙動となります。 そのため削除ポリシーを設定することにより、、「ステートマシンのリソースをCDK(CloudFormation)スタックの

    AWS CDKでStep FunctionsステートマシンのRemoval policyを設定できるようになっていました | DevelopersIO
  • [AWS]知っておいたほうがいいLambda関数の呼び出しタイプとリトライ方式まとめ | DevelopersIO

    社内などから指摘があり修正しました。「Lambda関数の呼び出しタイプにてRequestResponse(同期)の場合は冪等性は考慮不要」という記述をしましたが、誤った記載となっており申し訳ありませんでした。冪等性の考慮についてはアプリケーション依存によるところが大きく、RequestResponse(同期)でもアプリやSDKにてリトライを実施し冪等性を考慮する場合があります。記事としては、冪等性という視点ではなくリトライという視点で修正しました。 コンニチハ、千葉です。社内から色々アドバイスをもらって完成した元気玉方式のエントリーです! はじめに Lambda関数は実行トリガーとしてAPI GatewayやS3、CloudWatch Eventsなどを指定することができます。Lambda関数には呼び出しタイプ(同期、非同期、ストリーム)があるのですが実行トリガーによって呼び出しタイプが異

    [AWS]知っておいたほうがいいLambda関数の呼び出しタイプとリトライ方式まとめ | DevelopersIO
  • mkcertを利用してローカルのNext.js開発環境にHTTPSアクセスができるようにしてみた | DevelopersIO

    こんにちは!DA(データアナリティクス)事業部 サービスソリューション部の大高です。 Next.jsのアプリケーション開発をしている際に、HTTPSでアクセスしたいことはないでしょうか?私はあります。 ということで、mkcertを利用してローカルのNext.js開発環境にHTTPSアクセスができるようにしてみました。 前提 OS環境としては、MacOSで検証を行っています。 mkcert について mkcertはローカル開発環境に信頼された証明書を作成できるツールです。 今回はこちらを利用して証明書を発行してみます。 インストール インストールはMacOSの場合brewコマンドで簡単にインストールすることができます。なお、MacOS以外についてもREADMEにインストール方法が記載されています。 % brew install mkcert ==> Fetching mkcert ==>

    mkcertを利用してローカルのNext.js開発環境にHTTPSアクセスができるようにしてみた | DevelopersIO
    uokada
    uokada 2023/08/09
  • GASの開発環境をローカルで作成する方法(2023年7月版) | DevelopersIO

    Google Apps Scriptの環境構築をVSCode上で行う方法について詳しく解説していきます。clasp,asideを使って構築するので、爆速で構築できます。 ことのはじまり 私は最近Google Apps Script(GAS)の学習を始めました。 GASの学習を始めると、まずはAppsScript公式のIDEでスクリプトを書いていくことになると思います。 しかし、普段VSCodeを使い慣れている身からすると、VSCodeの便利機能が使いたくて仕方なくなります。 それじゃあ、使い慣れたVSCodeを使おうじゃないか!! AppsScript公式のIDEだとGitに差分を残していくこともできないぞ!!(できます) というわけで、GASをVSCodeを使って開発する為の環境構築の手順を書いていきたいと思います。 前提条件 VSCodeがインストールされている Node.jsがインス

    GASの開発環境をローカルで作成する方法(2023年7月版) | DevelopersIO
  • 「AWS CDKの最強の書き方を実践してみる 2023年版」というタイトルでチョークトークを実施しました #DevIO2023 | DevelopersIO

    概要 CX事業部アーキテクトチームの佐藤智樹です。 今回はDevelopersIO 2023のチョークトークで登壇した際の資料を共有します。 チョークトーク自体は質問を交えてかなりインタラクティブに行ったので、これだけ読んでも伝わりづらいですが参加された方の思い出しや参考になれば幸いです。 資料 所感 チョークトークは朝、昼の2回実施したのですが、思っていたよりも積極的に参加いただけて良い意見交換ができたと思っています。参加いただいた皆さん盛り上げてくださりありがとうございます!自分としては初めてほぼアドリブで話す予定だったので発表までドキドキ待ちながらでしたが、楽しい時間だったので今後も同じような取り組みできればと思います。その際はご参加いただけるとありがたいです。

    「AWS CDKの最強の書き方を実践してみる 2023年版」というタイトルでチョークトークを実施しました #DevIO2023 | DevelopersIO
    uokada
    uokada 2023/07/18
  • AWS再入門ブログリレー AWS Batch編 | DevelopersIO

    当エントリは弊社コンサルティング部による『AWS再入門ブログリレー 2019』の12日目のエントリです。 AWS Batchとは何ぞや?からユースケースまでを幅広くさらっていきます。 暑さにも湿気にも弱いので、日での生活の1/4くらいはパフォーマンスが落ちている気がします。 強く進化したいなと考える今日この頃です。 ▲ 大学生協にあった蒲焼きのタレごはんが恋しいです こんにちは、AWS事業部のShirotaです。 今日は秘伝のウナギのタレのように読み継ぎたい、AWS再入門ブログを書かせて頂きたいと思います。 当エントリの趣旨 当エントリは弊社コンサルティング部による『 AWS再入門ブログリレー 2019 』の12日目のエントリです。 昨日はしばたによる『 AWS Backup 』でした。 このブログリレーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねて

    AWS再入門ブログリレー AWS Batch編 | DevelopersIO
    uokada
    uokada 2023/07/16