株初心者必見

ピップ値の定義

ピップ値の定義
図2 「import」と「import public」の違い

変数の使用¶

これらはいずれも同じ値 (「1」) を参照します。 ただし、ドット表記を使用する場合は、一部のキーが Python ディクショナリーの属性やメソッドと競合して問題を引き起こす可能性があることに注意してください。 ドット表記は、一部の鍵が問題を引き起こす可能性があることに注意してください。 Python ディクショナリーの属性とメソッドと併用します。 2 つのアンダースコアで始まるキーと終了するキー (Python で特別に予約されているキー) を使用する場合、 または既知のパブリック属性のいずれかである場合は、 ドット表記ではなく、 括弧表記を使用する必要があります。

add , append , as_integer_ratio , bit_length , capitalize , center , clear , conjugate , copy , count , decode , denominator , difference , difference_update , discard , encode , endswith , expandtabs , extend , find , format , fromhex , fromkeys , get , has_key , hex , imag , index , insert , intersection , intersection_update , isalnum , isalpha , isdecimal , isdigit , ピップ値の定義 isdisjoint , is_integer , islower , isnumeric , isspace , issubset , issuperset , istitle , isupper , items , iteritems , iterkeys , itervalues , join , keys , ljust , lower , lstrip , numerator , partition , pop , popitem , real , remove , replace , reverse , rfind , rindex , rjust , rpartition , rsplit , rstrip , setdefault , sort , split , splitlines , startswith , strip , swapcase , symmetric_difference , symmetric_difference_update , title , translate , union , update , upper , values , viewitems , viewkeys , viewvalues , zfill .

インベントリーでの変数の定義¶

多くの場合は、個々のホストまたはインベントリー内のホストのグループに対して変数を設定します。たとえば、ボストンのマシンはすべて、 NTP サーバー (boston.ピップ値の定義 ntp.example.com) として使用する場合があります。 インベントリーの構築方法 ページには、インベントリーに あるマシンへの変数の割り当て: ホスト変数 および 多くのマシンへの変数の割り当て: グループ変数 を設定する方法の詳細が記載されています。

【初心者向け】データ分析で必須のPandasを入門しよう!

Pandasを使うメリットは主に2つあります。
1. 多種の型のデータを一つのデータフレームで扱えること
NumPyの配列(np.array)はすべての要素が同じ型でなければなりません。
よって、csvファイルの読み書きなどでは、NumPyは非常に不便なライブラリです。
その点、Pandasのデータフレームは異なる型のデータを入れることが出来ます。
Pandasのデータフレームに格納することで、データの前処理が容易にできます。
2.データ加工や解析の関数が多いこと
別章で示した欠損値の削除・補完の他にも、これから紹介する様々な便利な関数がPandasには備わっています。
そういった様々な関数の使い方をこの章では学びます。

Pandasのインストール

pipコマンドを用いたPandasのインストールは下記のコマンドでインストール出来ます。
Macの方はターミナル、Windowsの方はコマンドプロンプト上で実行することでインストールが出来ます。

Pandasを使う

データ型(pandasの基本データ型)

PandasはNumPyをベースとして構築されているため、NumPyのndarrayとの相性が良いです。
2つのデータ型でデータを保持します。

1.シリーズ(ピップ値の定義 Series)
2.データフレーム(DataFrame)
1つ1つ見ていきましょう。

シリーズはデータ(values)とそれに対応する行ラベル(index)を持つ1次元データ構造であり、辞書型とは違ってデータには順番があります。

データフレーム

データフレームは2次元のラベル付きのデータ構造で、Pandasでは最も多く使われるデータ型です。
データフレームのイメージとして、スプレッドシートやSQLのテーブルをイメージするとわかりやすいです。
DataFrameは複数の列を持ち、DataFrameから1列を抽出した場合も勝手にSeriesになります。
また、シリーズと同様に様々な型のデータを保持することが出来ます。

head()とtail()

Pandasのデータの中身を見る際に.head()を使うと先頭から5件を表示してくれます。
また引数に数字を渡すことでその件数分先頭から取得可能です。
また、tail()を使うと末尾から5件を取得できます。
head()と同じように、引数に数字を渡すことでその件数分末尾から取得可能です。
またデータの先頭と末尾から同時にデータを確認することも可能です。
その際には、データ.head().append(データ.ピップ値の定義 tail())と記述することで繋げてデータを確認できます。

locとiloc

Pandasのlocilocは値を抽出するためのメソッドです。
まずはサンプルとなるデータフレームを作成します。

まずは、locを使ってみましょう。
locは行名もしくは列名を指定することで特定の値を抽出できます。
1列目と4列目を抽出してみましょう。

次にilocを見ていきましょう。
ilocはindexを指定することで特定の値を抽出できます。

また、 loc と ilocはスライス表記を用いることが出来るため次のように記述することも可能です。

条件による行の抽出(query)

queryを利用することでpandas.DataFrameの列の値に対し、条件に応じて行を抽出することが可能です。
比較演算子を利用した複数の条件指定が出来ます。

データの入出力

1. テキスト形式のデータファイルからデータの読み込み
2. バイナリ形式のデータファイルからデータの読み込み
3. データベースからのデータの読み込み
4. Web上からのデータの読み込み

Pandas ソート

インデックス (行名・列名)を使う方法と値に基づいてソートする方法があります。
.sort_index()を使うことで、インデックス(カラム名、行名)に基づいてソートを行うことができます。
そのまま使うと、昇順(小さい順)でのソートとなりますが、引数に、ascending=Falseを記述することで降順(大きい順)のソートができます。
.sort_values(by=カラムのリスト)を使うことで、列の値の小さい順にソートすることができます。

欠損値の処理

Pandasには欠損値(NaN)の扱うメソッドは「dropna」「fillna」「isnull」「notnull」があります。
1つ1つ解説していきます。
まずdropnaは指定の軸方向にデータ列を見て、欠損値(NaN)の有無に関して指定の条件を満たす場合に、そのデータ列を削除します。
fillnaは欠損値を指定の値もしくは、指定の方法で埋めることができます。
isnullはデータの要素ごとにNaNはTrue、それ以外をFalseとして扱い、元のデータと同じサイズのオブジェクトを返します。
notnullはisnullとは逆の真偽値を返します。

※この章の演習問題では、excelの読み込みを行います。
その際に、ModuleNotFoundError: No module named ‘openpyxl’エラーが出る場合があります。
エラーが出た場合は、pipなどを用いてopenpyxlをインストールしてください。

  1. シリーズのデータ型を自由に作ってください。
  2. データフレームのデータ型を自由に作ってください。
  3. あるSNSサービスのユーザー10人のフォロー数やフォロワー数のcsvファイルがあります。
    このファイルのヘッダーがユーザーID,フォロー,フォロワー,いいねが与えられております。
    これらそれぞれuser_id,follow,follower,likeに変換したoutput.csvファイルを出力してください。
    データは下記URLにありますのでダウンロードしてください。
  4. d1 = を使って、d1という名前のDataFrameを作ってください。
  5. 4で作ったデータフレームをcsvファイル(.csv)とエクセルファイル(.xlsx)に書き出してください。
  6. 5で作成されたエクセルファイル(.xlsx)とcsvファイル(.csv)をそれぞれ読み込んでください。
  7. 5で作成したエクセルファイルに新しい列(カラム)を追加してください。
  8. 7に対してappendを使い、行を追加してください。

次の記事へ

Pandas DataFrameの[]とに関して カラム取得方法を理解しよう!

データ分析や統計学を効率的に学ぶには…

AI Academy Bootcampでは6ヶ月データサイエンティストや機械学習エンジニアに質問し放題かつ、体系的に学べる動画コンテンツや450種類以上のテキストコンテンツで学べて35,000(税込)で受講出来ます。

サービス間通信のための新技術「gRPC」入門

XML-RPCやJSON-RPCは、広く普及しているHTTP/HTTPSやXML、JSONといった技術を利用するため導入しやすいという利点がある。一方で、これらは基本的にテキストベースで情報をやり取りするためデータの転送効率が悪く、またバイナリデータを扱いにくいという問題があった。また、HTTP/HTTPSを使用しているため比較的長い期間で散発的にデータをやり取りしにくかったり、転送効率の面でもオーバーヘッドが存在したりする。こういった問題を解決するために考案されたのが、今回紹介するgRPCだ(図1)。

図1 gRPCのWebサイト

図1 gRPCのWebサイト

gRPCの歴史と特徴

gRPCは、Googleが開発したRPC技術がベースとなっている。Googleでは多数のコンポーネントを組み合わせてサービスを実現する、いわゆる「マイクロサービスアーキテクチャ」でシステムを構築していることで知られるが、これらのサービス間での通信を行うためにgRPCの前身となる「Stubby」と呼ばれる技術が開発された。ただ、このStubbyはGoogleのインフラ以外での利用は想定しておらず、独自の仕様が多かったそうだ。その後Stubbyで使用されていた技術とコンセプトが近いHTTP/2などの技術が登場したことから、GoogleはStubbyにこれらの技術を取り入れてオープン化することを決め、それがgRPCとなった。gRPCはオープンソースで公開されており、現在はLinux Foundation傘下のCloud Native Computing Foundation(CNCF)によって開発が進められている。

  • サービスはオブジェクトではなく、メッセージはリファレンス(参照)ではない
  • 適切な適用範囲とシンプルさ
  • フリーかつオープン
  • 相互運用性があり、一般的なインターネットインフラ内で利用できる
  • 汎用性がありながら、専用のものと比べてパフォーマンス面で一般に劣らない
  • アプリケーションレイヤーと分離された構造
  • ペイロードを問わない
  • ストリーミングでの情報伝達に対応
  • 同期・非同期の両方に対応
  • 通信の中断やタイムアウトをサポート
  • 確立された通信を処理しつつ新規接続を止めるようなシャットダウンのサポート
  • データ流量のコントロール機能
  • デフォルト実装に対して後からさまざまな機能を追加可能
  • APIによる機能拡張が可能
  • メタデータの交換をサポート
  • 標準化されたステータスコード

gRPCの技術的概要

クライアント・サーバー間の通信に使用するプロトコル(トランスポート)や、やり取りするデータの表現およびシリアライズ方法については置き換えが可能な設計になっているが、デフォルトではトランスポートにHTTP/2が、データのシリアライズにはProtocol Buffersという技術を使用するようになっており、これをそのまま使用するのが一般的だ。Protocol BuffersはGoogleが開発したデータフォーマットで、バイナリデータを含むデータでも効率的に扱えるのが特徴だ。このProtocol Buffersについても、さまざまなプラットフォーム・プログラミング言語から利用できるライブラリが提供されている。

gRPCを利用できる言語、環境

gRPCが現在公式にサポートしているプログラミング言語およびプラットフォームは表1の通りだ。

表1 gRPCが公式にサポートしているプログラミング言語およびプラットフォーム ピップ値の定義
言語 プラットフォーム サポートされているコンパイラおよびランタイム
C/C++ Windows 7以降 Visual Studio 2015以降
C/C++ Linux、macOS GCC 4.9以降、Clang 3.4以降
C#Windows 7以降 .NET Core、NET 4.5以降
C# Linux、macOS .NET Core、Mono 4以降
Dart Windows、Linux、macOS Dart 2.2以降
Go Windows、Linux、macOS Go 1.6以降
Java Windows、Linux、macOS、Android(Gingerbread以降) JDK 8
Kotlin/JVM (under development) Windows、Linux、macOS Kotlin 1.3以降
Node.js Windows、Linux、macOS Node.js v4以降
Objective-C macOS 10.11以降、iOS 7.0以降 Xcode 7.2以降
PHP (beta) Linux、macOS PHP 5.5以降、PHP 7.0以降
Python Windows、Linux、macOS Python 2.7以降、Python 3.4以降
Ruby Windows、Linux、macOS Ruby 2.3以降

gRPCを使ったアプリケーション開発の流れ

  1. gRPCの利用に必要なツールやライブラリのインストール
  2. Protocol Buffersを使ったサービスの定義
  3. サービス定義ファイルからのコードの生成

gRPC利用に必要なツールやライブラリのインストール

なお、PythonやRubyなど多くの言語ではC++で実装されたバイナリを利用してライブラリが実装されているが、Node.jsや.NETなどその言語で実装されたネイティブ実装とC++実装の両方が提供されているものもある(表2)。

表2 言語ごとのライブラリ入手先 ピップ値の定義 ピップ値の定義
言語 パッケージ名 ライブラリのリポジトリ
C++ https:ピップ値の定義 //github.com/grpc/grpc
Objective-C https://github.com/grpc/grpc
Node.ピップ値の定義 js grpc https://github.com/grpc/grpc-node
Node.js(JavaScript実装) @grpc/grpc-js https://github.com/grpc/grpc-node
.NET(C#実装) https://github.com/grpc/grpc-dotnet
.NET Grpc https://github.com/grpc/grpc
Kotlin https://github.com/grpc/grpc-kotlin
Java https://github.com/grpc/grpc-java
JavaScript(Webブラウザ) grpc-web https://github.com/grpc/grpc-web
Go google.golang.org/grpc https://github.com/grpc/grpc-go
Swift https://github.com/grpc/grpc-swift
Dart grpc https://github.com/grpc/grpc-dart
PHP grpc https://github.com/grpc/grpc-php
Haskell https://github.com/grpc/grpc-haskell
Ruby grpc https://github.com/grpc/grpc
Python grpcio https://github.com/grpc/grpc

プロトコル定義ファイルによるデータ構造とサービスの定義

構造化データをシリアル化する技術としてはJSONやXMLなどもあるが、Protocol Buffersがこれらと異なる点として、事前に扱うデータ構造を型付きで定義しておく必要があることが挙げられる。取り扱うデータの型を厳密に定義しないプログラミング言語では、外部とデータをやり取りする際に数値と文字列を明確に区別しないためにトラブルが発生するようなケースもあるが、Protocol Buffersではやり取りするデータの型を「プロトコル定義ファイル」で事前に定義しておくことで、こういったトラブルを防げるようになっている。

さて、Protocol Buffersのプロトコル定義ファイルは、現在バージョン2(「proto2」)と、バージョン3(「proto3」)の2つのフォーマットがあるが、本記事ではバージョン3(proto3)でのデータ構造について紹介していく。プロトコル定義ファイル中では「syntax = <バージョン>」という形式でどちらのフォーマットで記述されているかを明示しておく必要があるが、バージョン3を利用する場合は次のように記述する。

Protocol Buffersで使用できる型

各フィールドの型については次の表3のものが利用できる。

表3 Protocol Buffersで定義されているデータ型
型名 説明
double 倍精度浮動小数点数(64ビット)
float 単精度浮動小数点数(32ビット)
int32 符号あり32ビット整数
int64 符号あり64ビット整数
uint32 符号なし32ビット整数
uint64 符号なし64ビット整数
sint32 符号あり32ビット整数
sint64 符号あり64ビット整数
fixed32 符号なし32ビット整数(固定バイト幅)
fixed64 符号なし64ビット整数(固定バイト幅)
sfixed32 符号あり32ビット整数(固定バイト幅)
sfixed64 符号あり64ビット整数(固定バイト幅)
bool ブール型(true/false)
string UTF-8もしくは7ビットASCII文字列
bytes バイト列

表3の型に加えて、列挙型(enum)や別に定義したメッセージ型を型として指定することもできる。まず列挙型だが、これは次のようにして定義できる。なお、列挙型では必ずフィールド番号として「0」が指定されたフィールドを持つ必要がある。フィールド番号として「0」が指定されたフィールドは、このenum型が指定されたフィールドの受け渡し時のデフォルト値として使われる。

コメントの記述とインポート機能、モジュール機能

なお、インポート対象のプロトコル定義ファイル内で定義されているメッセージ型は、デフォルトではインポートしたファイル内でのみ参照が可能になる(図2)。

図2 「import」と「import public」の違い

図2 「import」と「import public」の違い

型定義の互換性

  • フィールド番号を変えない。フィールド名をリネームした場合でも、対応するフィールド番号が同じであれば互換性は保たれる。また、フィールドを追加・削除した場合でも、それと重複するフィールド番号が使われていない限り互換性は保たれる
  • データ型としてint32、uint32、int64、uint64、boolを使用していた場合、これらの間であればデータ型を変更しても互換性は保たれる
  • 同様にsint32とsint64、fixed32とsfixed32、fixed64とsfixed64には互換性がある
  • double/floatといった浮動小数点数型やint32、int64などの整数型:0
  • ピップ値の定義 ピップ値の定義
  • bool:false
  • string:空文字列
  • bytes:空バイト列
  • enumで定義された列挙型:フィールド番号が0に相当する値
  • メッセージ型:値はセットされない(実装依存)

プロトコル定義ファイルからのクラスの生成

Protocol Buffersでは、プロトコル定義ファイルから各プログラミング言語に定義されたクラス定義ファイルを生成する「protoc」というツールが用意されている。gRPCを利用する場合は「grpc-tools」などのgRPC向けのツールでこの処理を実行できるようになっており、その場合protoc単体を導入する必要はないが、Protocol Buffersを単体で利用したい場合はこのツールを利用することとなるので、簡単にその使い方についても説明しておこう。

オプションでプロトコル定義ファイルとコードを生成したいプログラミング言語を指定してprotocコマンドを実行すると、指定した出力先ディレクトリにその言語向けのソースコードが出力される(表4)。

表4 protocのオプションと出力先ディレクトリ
プログラミング言語 指定するオプション
C++ --cpp_out=<出力先ディレクトリ>
C# --csharp_out=<出力先ディレクトリ>
Java --java_out=<出力先ディレクトリ>
JavaScript --js_out=<出力先ディレクトリ>
Objective-C --objc_out=<出力先ディレクトリ>
PHP --php_out=<出力先ディレクトリ>
Python --python_out=<出力先ディレクトリ>
Ruby --ruby_out=<出力先ディレクトリ>

なお、これらは機械的に生成されたコードとなっており、人間が修正を加えることを想定した構造にはなっていない。また、出力されたコードを利用するには、各言語向けのProtocol Buffersランタイムライブラリが必要だ。これらはGitHubのリリースページで公開されている。gRPCで利用する場合、gRPCライブラリを導入することで基本的に同時にインストールされるが、Protocol Buffersを単体で利用したい場合については、インストール方法などをドキュメントなどで確認してほしい。

サービスの定義

サービス定義ファイルからのコード生成

Pythonでのサーバー/クライアント実装

なお、Python 3.6以降ではローカルなPython環境を構築するための「venv」という機能が導入されており、「python3 -m venv ピップ値の定義 <venv環境を構築するディレクトリ>」のようにコマンドを実行することで、ルート権限なしにパッケージを指定したディレクトリ内にインストールできるローカル環境を作成できる(venvのドキュメント)。たとえばカレントディレクトリ以下に「venv」ディレクトリを作成してそこにパッケージをインストールしたい場合、次のように実行する。

RosettaNet Connector - Mule 4

[General (一般)] タブのプロパティ

肯定応答待ちのメッセージを保存するために使用するオブジェクトストア定義への参照です (省略可能)。設定しないと、コネクタは常に永続的なデフォルトのオブジェクトストアを使用して送信したメッセージを保存し、肯定応答または再試行を待機します。設定した場合、参照先の Bean は、代わりに使用するオブジェクトストア設定でなければなりません。関連情報: What is an object store bean? (オブジェクトストア Bean とは)​

Mule DUNS identifier (Mule DUNS 識別子)

この組織の Dun & Bradstreet Universal Numbering System (DUNS) ID。

Mule location identifier (Mule 場所識別子)

この組織の場所 ID。指定すると、送信されるすべてのメッセージに含められ、受信するすべてのメッセージにも含まれる必要があります。指定しないと、受信メッセージに含まれる値は受け入れられて無視されます。場所 ID を使用すると、キーストアのキーペアで使用する別名も変更されます。

Partner DUNS identifier (パートナー DUNS 識別子)

取引パートナー組織の Dun & Bradstreet Universal Numbering System (DUNS) ID。

Partner location identifier (パートナーの場所識別子)

予期されるパートナ組織の場所 ID。指定すると、送信されるすべてのメッセージに含められ、受信するすべてのメッセージにも含まれる必要があります。指定しないと、受信メッセージに含まれる値は受け入れられて無視されます。場所 ID を使用すると、キーストアのパートナー証明書で使用する別名も変更されます。

Role in PIP (ピップ値の定義 PIP のロール)

Partner Interface Process (PIP) でのロール。次のいずれかになります。

PIP definition path (ピップ値の定義 PIP 定義パス)

PIP 定義 XML ファイルの絶対ファイルパスまたはプロジェクトの ​ /src/main/resources ​ ディレクトリに相対的なクラスパス。ディストリビューションに含まれる標準 PIP 定義では、​ //.xml ​ の形式になります (例: /PIP3A4/V02_02.ピップ値の定義 xml ​)。

XML での設定オプション

Studio 設定にあるすべての値は XML で直接設定できます。

Global usage code (グローバル使用コード)

Keystore access password (キーストアアクセスパスワード)

Keystore path (キーストアパス)

Global HTTP Listener (グローバル HTTP リスナ)

Object store reference (オブジェクトストア参照)

Partner DUNS identifier (パートナー DUNS 識別子)

Partner location identifier (パートナーの場所識別子)

PIP definition path (PIP 定義パス)

Role in PIP (PIP ピップ値の定義 のロール)

Signing key password (署名キーパスワード)

Request Endpoint Path (要求エンドポイントパス)

Global HTTP Request (グローバル HTTP 要求)

Mule DUNS identifier (Mule DUNS 識別子)

Mule location identifier (Mule 場所識別子)

Service Endpoint Path (サービスエンドポイントパス)

Force message signing (メッセージの署名を強制)

Object Store (オブジェクトストア)

永続的なオブジェクトストアを使用すると、肯定応答されていないメッセージは Mule アプリケーションを再起動しても保持され、アプリケーションの再起動時に (タイムアウト期限が切れたと判断されて) 再送信されます。肯定応答がないまま PIP 定義で指定されている再送信回数に達するか、または 3 日が経過すると、オブジェクトストアからすべてのメッセージが削除されます。次のシステムプロパティを設定することで、肯定応答されていないメッセージを Mule アプリケーションの起動時に強制的に削除できます。

PIP をカスタマイズする

PIP をカスタマイズすると、PIP 設定に 2 通りの変更を加えることができます。

パラメータ: PIP バージョンの XML ファイル内で設定を変更します。

詳細: カスタム DTD を作成して、そこから XSD ファイルを作成できます。

どちらの場合も、作成または変更したファイルは Studio プロジェクトの src/main/resources フォルダに保存してください。

用意されている PIP 設定を開始ポイントとして使用できます。これらは、mule-rosettanet-extension-2.0.0-mule-plugin.jar に入っており、Studio でダウンロードして ​ /target/repository/com/mulesoft/connectors/mule-rosettanet-extension ​ ディレクトリのプロジェクトに追加できます。また、標準の MuleSoft Enterprise Maven リポジトリ (グループ ID の com.mulesoft.connectors の下) にもあります。各 PIP 設定は jar ファイルの個別のディレクトリ (例: PIP3A4 ​) に入っています。jar から PIP ディレクトリをコピーして、ニーズに合わせて内容を編集できます。

PIP 設定ディレクトリには、特定の PIP バージョン (例: V02_02.xml ​) 用のパラメータが設定された XML ファイルもあります。この XML ファイルには、PIP で定義されている再試行回数、肯定応答のタイムアウト、アクションの署名要件の詳細が記述されています。また、このファイルは実際のアクションメッセージの DTD と XSD 定義を参照します (DTD は RosettaNet で使用され、XSD は Mule 内で DataSense 情報の提供に使用されるため、両方とも必要です)。

基本の PIP 定義ディレクトリを jar から Studio プロジェクトの src/main/resources フォルダにコピーし、コピーしたディレクトリの名前をカスタマイズに合わせて変更します (例: PIP3A4-custom ​)。その後、必要な変更を行ってから、変更した PIP ディレクトリ名を RosettaNet Connector 設定で (​ pipFile ​ 値として) 使用します。

キーストア

RosettaNet は X.509 証明書を使用してメッセージを認証します。RosettaNet Connector は、現時点では ピップ値の定義 JKS 形式のキーストアの証明書 (および署名に使用する非公開キー) の保存のみをサポートしています。Portecle など、さまざまなツールを使用してキーストアを処理して、キーと証明書を作成できます。

次の 2 つのサンプルファイルをアプリケーションにダウンロードできます。

たとえば、販売者アプリケーションの例で使用する partner1.jks には、partner2 用の証明書と、partner1 が署名に使用する非公開キーが入っています。キーストアの別名は次の形式になります。 ​ [:] ​

COLUMN

通常、プログラムを実行するためには、サーバーOSやアプリケーションサーバーソフトウェアと環境設定が必要です。こうした実行環境の準備の手間を大幅に削減してくれるのが、「AWS Lambda(ラムダ)」です。AWS Lambdaの概要については「サーバーレスでプログラムを実行できる「AWS ピップ値の定義 Lambda」とは」をご参照ください。
実際にLambdaを利用するにはLambda関数の仕様や登録手順、環境設定など、多くの関連知識が必要になります。中にはAWSのサイトで紹介されているチュートリアルを動かして初めて理解できることも多く、Lambdaを利用する際の課題でもあります。
そこで本コラムでは、用例毎に環境構築からLambda関数の作成および動作確認までの一連の作業を取り上げて解説し、Lambdaの利用に必要な知識を身に着けていただいて少しでもLambda利用のハードルを下げるご支援をしたいと思います。
Lambdaの活用用途は幅広いのですが、今回は「ファイル処理」に関するLambdaの作成手順を解説します。
具体的には、以下のような画像ファイルの加工処理を行うLambdaの作成手順を解説します。

Lambdaの処理内容

Amazon S3にアップロードされた画像ファイルを縮小加工してサムネイル画像としてAmazon S3へ再アップロードする

本記事は、「チュートリアル:Amazon S3 で AWS Lambda を使用する 」のPython3用のサンプルコード を元に手順を詳細化して解説したものです。そのため、文中のLambdaの作成手順はPython3.8向けの解説となります。

1.画像ファイル加工処理Lambdaの動作概要

Amazon S3の所定のバケットに画像ファイルがアップロードされると画像ファイル加工処理用Lambdaが起動されます。
起動されたLambda関数では次のような処理を実施します。
①引数からアップロードされたS3のバケットとkey情報を取得。
②バケットとkeyを使ってアップロードされた画像ファイルをS3から取得し、ローカルエリアに一時保存。
③保存した画像ファイルを縮小加工。縮小した画像ファイルをS3へアップロード

2.Lambdaパッケージ作成環境構築

2.1.Lambda作成方法について

Lambda作成方法には次の2通りがあります。
①AWS Lambdaコンソールで直接コードを作成
②外部ライブラリとLambda関数をパッケージ化したzipファイルを作成し、AWS Lambdaにアップロード

  • AWS-SDK(AWSを操作するためのライブラリ)
  • http
  • https
  • child_process

2.2.Lambda作成環境について

AWS Lambdaはlinux環境で動作するため、Lambdaパッケージ作成環境はlinux環境が推奨されています。今回のケースではOSにubuntuを選択したAmazon EC2上で実施しました。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる