Python

Testcontainers で単体テスト用の LocalStack コンテナを簡単に管理しよう

LocalStack とは Testcontainers とは セットアップ テスト対象コード テストコードの実装 まとめ 本記事時は サーバーワークスアドベントカレンダー 2024 - シリーズ 1 の 15 日目の記事です。 LocalStack とは こちらはご存知の方も多いかと思いますが、Lo…

【初心者向け】AWS CDK (Python) の始め方とカスタムリソースの作成方法

はじめに AWS CDK とは カスタムリソースとは 今回の目的 やってみる AWS CDK のインストール AWS CDK プロジェクトの初期化 S3バケットを作成するCDKを作成する 初期データファイルをアップロードする S3バケット内のファイルをコピー 実装完了 まとめ はじ…

DynamoDB でのユニークキー生成方法 ~アトミックカウンタもしくは UUID で実現〜

はじめに データベースでレコードを管理するとき、レコードごとにユニークなキーを設定しておきたい場面は多々ありますよね。 例えば、MySQL の場合は AUTO_INCREMENTのような自動シーケンス機能を使うことで連番を割り当ててくれます。 しかし、DynamoDB に…

Pipenv ユーザーのための uv 入門

はじめに 対象読者 書かないこと uv とは インストール よく使うコマンドの対応 対応表 Python ランタイムの管理 Pipenv uv プロジェクトの初期化 Pipenv uv 仮想環境の有効化 Pipenv uv 依存ライブラリの追加 Pipenv uv 依存ライブラリの削除 Pipenv uv ロ…

Amazon Neptuneで始める初めてのグラフDB② Gremlinを用いたグラフデータの基本操作

こんにちは。 DevOpsが好きなアプリケーションサービス部の兼安です。 本記事は「Amazon Neptuneで始める初めてのグラフDB」というテーマの連載記事の2回目です。 Amazon Neptuneで始める初めてのグラフDB① NeptuneクラスターとNotebookの作成 Amazon Neptun…

Amazon Neptuneで始める初めてのグラフDB① NeptuneクラスターとNotebookの作成

こんにちは。 DevOpsが好きなアプリケーションサービス部の兼安です。 今回からしばらく「Amazon Neptuneで始める初めてのグラフDB」というテーマで連載記事を書いていこうと思います。 本記事はその1回目です。 Amazon Neptuneで始める初めてのグラフDB① Ne…

Jinja を使うほどじゃない場合に使えるかもしれない string.Template クラスの紹介

リッチな機能が要らない場合の簡易テンプレートエンジンとして使える Template クラスの紹介です。似たような立ち位置で使える envsubst についても紹介しています。

【Streamlit】モーダル内にページネーションを実装してみる

こんにちは。AWS CLIが好きな福島です。 完成イメージ プログラム 解説 セッション管理 画面描画 画像を表示する関数 モーダルを描画する関数 終わりに 前回、Streamlitでページネーションを実装する例をご紹介いたしましたが、 今回はモーダル内でページネ…

【Streamlit】ページネーションを実装してみる

こんにちは。AWS CLIが好きな福島です。 今回はStreamlitを使って、ページネーションを実装する方法をご紹介します。 完成イメージ プログラム 実行方法 解説 セッション管理 アプリケーションロジック 3次元配列で猫の画像パスを格納 ページのインデックス…

【Python】datetime におけるタイムゾーン変更時の注意点

こんにちは。 ディベロップメントサービス1課の山本です。 今回は datetime 型にて、タイムゾーンを扱う場合の注意点を説明します。 タイムゾーンの変更方法は主に 2 種類あり、それぞれ挙動が異なるため解説します。 この記事の対象者は? datetime 型 の…

WebアプリをデプロイするAWS構成5選(CFnテンプレート付き)

こんにちは。AWS CLIが好きな福島です。 ※5選と言いながら、AWSサービスのアイコン4つしかないですが、Lambdaを使った構成が2つあります。 構成 構成判断フロー図 各構成にWebアプリをデプロイしてみる 構成パターン①: WAF + ALB + VPC + EC2 構成パターン②:…

【Webアプリ作成の入門】Python + Flask + Bootstrap + DynamoDB

こんにちは。AWS CLIが好きな福島です。 はじめに インフラエンジニアのキャリアがメインの私が社内でPythonを使ったアプリ開発の学習をする機会があったため、先日から学んだことをアウトプットしています。 今回は以下の技術を活用し、TODO管理ができるWeb…

Flask入門

こんにちは。AWS CLIが好きな福島です。 今回は、インフラエンジニアのキャリアがメインの私が社内でPythonを使ったアプリ開発の学習をする機会があったため、学んだことをアウトプットしていきたいと思います。 アプリ開発では以下の技術に触れたため、いく…

WSL と VSCode を使った Python 開発環境構築

こんにちはこんばんは! サーバーワークスの新谷です。 日本では一般的に業務用のPCとして Windows を使われることが多いかと思いますので、WSL(Windows Subsystem for Linux)と VSCode(Visual Studio Code)を使って開発環境を作ると、Windows と Linux …

【DynamoDB】boto3 client APIを使用してDynamoDB JSON形式から標準JSON形式へ変換してみた

こんにちは、ディベロップメントサービス1課の山本です。 初めてスプレー形式の日焼け止めを使ったのですが、うまく伸ばせずまだらに日焼けしてしまいました。太陽が憎い。 今回は DynamoDB JSON 形式データの変換方法について説明します。 低レベルAPI(cl…

Pythonのwebsocket-clientを使ってみた

WebSocketとは サンプルチャットアプリケーションを構築 websocket-clientを使ってみる 最後に アプリケーションサービス部の鎌田(義)です。 PythonのWebSocketクライアント用ライブラリである、 websocket-client を使ってみたので、基本的な使用方法をご紹…

CDKでPython3.12ランタイムのLambdaをデプロイしようとして躓いた話

はじめに 前提 起こったこと 原因 回避策 1. poetryを使用する 2. requirements.txtを使用する 開発環境ではPipfileを使用しつつ、パッケージングにはrequirements.txtを使うパターン 3. カスタムDockerイメージを使用する 最後に はじめに アプリケーション…

AWS CloudFormationテンプレートからparameter-overridesのJSONファイルを生成する

この記事について AWS CloudFormation(以下、CloudFormation)テンプレートファイルを渡すと、Parametersセクションを読み取り、AWS CLIでデプロイする際に使えるパラメーター(parameter-overrides)のJSONを生成するPythonスクリプトの紹介です。(ファイ…

GitHubのDependabotがパッケージの脆弱性を検知してくれたので解消してみる

こんにちは。アプリケーション部の兼安です。 少し前に脆弱性検知のブログを書かせていただきました。 blog.serverworks.co.jp その時に作った検証用リポジトリでGitHubのDependabotをONにしていたところ、2024年1月になってパッケージの脆弱性を検知してく…

Amazon Timestreamへの書き込み処理のレスポンスと例外を詳しく見てみる

こんにちは。 アプリケーションサービス部の兼安です。 今回はAmazon Timestreamの書き込み処理のお話です。 本記事のターゲット Amazon Timestreamを使い始めたぐらいの方を想定しています。 Amazon TimestreamがSQLが使えるため、一見RDBと同じように見え…

スナップショットテストを導入してアプリケーション保守性を向上させよう

本記事はサーバーワークス Advent Calendar 2023 の 13日目のエントリーです。 qiita.com はじめに 最近、AWS CDK を使った開発をしているのですが、AWS CDK のテスト手法としてスナップショットテストと呼ばれる手法があり、これを AWS CDK 以外の開発にも…

【Python】鈍足コードのリファクタリング

はじめに アプリケーションサービス部の鎌田(義)です。 アドベントカレンダー6日目ということで、 最近Pythonでコードを書いていて試行錯誤した内容をブログにしたいと思います。 はじめに 概要 背景 使用したファイル 検証環境 Amazon EC2 Python 検証に使…

Amazon ElastiCache ServerlessでMemcachedを使う

はじめに 概要 参考 やってみた 環境の作成 ElastiCache ServerlessをMemcachedで作成 Opensslで接続 Pythonで接続 おわりに はじめに こんにちは、荒堀です。 Amazon ElastiCache ServerlessのRedisを触ってみたので、今度はMemcachedの方も触ってみます。 …

Amazon ElastiCacheのハンズオンをServerlessに変更してみる

はじめに 概要 参考 やってみた 環境作成 Cloud9にデータベース作成 Python実行 おわりに はじめに こんにちは、荒堀です。 ElastiCacheの公式のハンズオンがあります。今回はこれをAmazon ElastiCache Serverlessでやってみます。 aws.amazon.com このハン…

Amazon ElastiCache ServerlessをPythonで使う

はじめに 概要 参考 やってみた 環境の作成 Pythonで操作 おわりに はじめに こんにちは、荒堀です。 先日、一般利用開始したAmazon ElastiCache Serverlessを、Pythonから使ってみました。 概要 Pythonのredisライブラリを使います。以下の2点の対応が必要…

Chat Completion API の Function Calling を使用して対話で EC2 インスタンスを起動する

GPT-4 との対話を通して EC2 インスタンスを起動する様子 はじめに Function Calling とは 実装 ライブラリのインポートと openai クライアントの定義 対話を行う chat 関数 1. Chat completion API に渡す引数を作成する 2. ユーザーの初回の投稿を送信する…

Cloud9でPython3.12.xへバージョンアップする

東北のサウナー、小菅です。 AWSのCloud9上でPythonを使って検証をしようとしましたが、 「Pythonのバージョンアップってどうやるんだっけ?」と言いつついつもググるんですが よくわからないエラーが出たりしては他の記事を辿り・・・となりがちです。 備忘…

CodeBuild で Alembic を実行して DB マイグレーションを行う

本記事では、GitHub リポジトリへのプッシュをトリガーに、CodeBuild で Alembic を用いた DB マイグレーションを行います。

Alembic と sqlacodegen で RDB の変更管理をする

pythonコードでRDBの変更管理を可能とするプラクティス

Lambda関数とPapermillでJupyterノートブックをバッチ実行する

AWSにおいてJupyterノートブックを実行する場合は、通常はSageMakerの画面でノートブックインスタンスを起動してJupyterを画面を開いて実行します。 つまり、手作業なりますが、Papermillというツールを使えばバッチ実行が可能です。 本記事ではPapermillを…

Lambda のランタイムに Python 3.10 が追加になったようです。→正式になりました。

こんにちは。技術課の山本です。 Lambda のランタイムに Python 3.10 が追加になったようです。 4/20 追記:正式に発表がありました。(4/19) aws.amazon.com AWS マネジメントコンソールに表示が出るようになりました。 AWSの最新情報 に発表はまだなく、ド…

serverless-python-requirements の slim オプションを有効化するときの注意点

要約 serverless-python-requirements で設定値を変更した後は $ serverless requirements cleanCache を実行しておかないと変更が反映されないときがある。 そして、プロファイルごとに実行しよう。 はじめに こんにちは。アプリケーションサービス部の保田…

【デザインパターン with Python】1-1. デザインパターンとは何か

デザインパターンとは何か、用語の意味およびなぜ学ぶ必要があるかについて話します

【デザインパターン with Python】1-2. オブジェクト指向プログラミングとは何か

オブジェクト指向プログラミングとよく耳にしますが、どのようなプログラミング手法を見てみましょう

【デザインパターン with Python】1-3. Classを使ってみよう: Class定義と__init__とself

PythonでClassを定義する方法と、Classの定義に使用される__init__とselfがどのようなものかを紹介します。

【デザインパターン with Python】1-4. Classを使ってみよう: アクセス修飾子とクラスメソッド

Classメンバー(属性やメソッド)にアクセスする際に、その制御をするためのアクセス修飾子と、クラスから直接呼び出せるメソッド、クラスメソッドを紹介します。

【デザインパターン with Python】1-5. Classを使ってみよう: 継承とオーバーライド

デザインパターンを理解するにあたって必須概念となる「継承」と「オーバーライド」を紹介します

【デザインパターン with Python】1-6. 抽象Classとは何か

抽象Classとは?抽象メソッドとは?抽象とはどのような意味かをみてみましょう。

pytest-cov で pytest 実行時にカバレッジを取得しよう!

pytest-cov とは カバレッジとは C0 カバレッジ(Statement coverage: 命令網羅) C1 カバレッジ(Branch coverage: 分岐網羅) C2 カバレッジ(Condition coverage: 条件網羅) 試してみる インストール 実行方法 Visual Studio Code で可視化したい まとめ…

Pythonをインストール(Mac編)

はじめに この夏の 土用の丑の日 に鰻を食べれなかったので、この秋は秋刀魚を絶対に食べることを目標にしているアプリケーションサービス部の森です。 今回は、たまたまOSをクリーンインストールしたので、 新たにPythonをインストールすることになったので…

pyenv, virtualenv, pipenv, poetry の概要

概要 各ツールの対応範囲 pyenv の主要操作(Python のバージョン管理) パッケージ管理ツール別の主要操作 仮想環境(シェル)への入り方 パッケージを指定してインストール パッケージを requirements.txt, Pipfile, project.toml からインストール パッケ…

【Python】collectionsライブラリを活用しよう_1. namedtuple

Pythonのcollectionsライブラリに含まれた型の中で有用なものを紹介します。今回はnamedtupleです。

【Python】collectionsライブラリを活用しよう_2. OrderedDict

Pythonのcollectionsライブラリに含まれた型の中で有用なものを紹介します。今回はOrderedDictです。

【Python】collectionsライブラリを活用しよう_3. deque

Pythonのcollectionsライブラリに含まれた型の中で有用なものを紹介します。今回はdequeです。

Bandit を使って Python コードのセキュリティをチェックしよう!

Bandit とは 試してみる インストール 実行方法 設定 特定箇所のみチェックを無効にしたい flake8 のプラグインとして まとめ あわせて読みたい Bandit とは github.com Python コードのセキュリティ問題をチェックしてくれるツールです。Amazon CodeGuru Re…

McCabe を使って Python コードの複雑度をチェックしよう!

McCabe とは 循環的複雑度とは 試してみる インストール 実行方法 flake8 のプラグインとして まとめ あわせて読みたい McCabe とは github.com Python コードの複雑さをチェックしてくれるモジュールです。複雑さをチェックすることで、保守性の悪いコード…

OpenSSL 1.1.1 が必須なPython 3.10.x をAmazon Linux 2 にインストールする

どうも! swx-ochiai です。 Python 3.10.x をAmazon Linux 2 にインストールします。 ただし、プリインストールのOpenSSLバージョンが 1.1.1 未満の場合、インストールに失敗します。 そのため、この記事では、ハマりやすいポイントを取り除くためインストー…

BoxSDKでBox上のファイルをダウンロードする

こんにちは。DS1課の戸塚です。 今回は、PythonでBoxSDKを使ってBox上のファイルをダウンロードする方法を書いていきます。 インストール pip install boxsdk サーバー側JWT認証を使用するBoxアプリを使用する場合 pip install "boxsdk[jwt]" 認証 Box SDKを…

Pythonで複数の返り値を返す

はじめに アプリケーションサービス部ディベロップメントサービス1課の森です。 めちゃめちゃ久しぶりのブログを書いてますが、最近の流行りはマインクラフトとスプラトゥーン2です。 もうすぐスプラトゥーン3が出るので楽しみにしています。 今回は、Pyt…

【pytest入門】第1章 - pytest概要

pytestの概要およびインストール方法、使用方法を紹介します。