AWS
以前AWS CodeBuildでPythonアプリケーションをビルドしてS3へアップロードする方法を紹介しました。 AWS CodeBuildでGitHubと連携してPythonアプリをビルドする - け日記 今回はDockerイメージをビルドして、ECRにプッシュする方法について見ていきたいと思…
前回に引き続きEMRについてです。今回はEMRのステップを用いてPySparkのバッチアプリケーションを実装していきます。 ohke.hateblo.jp EMRのステップ 前回は、JupyterノートブックからSpark環境へジョブをリクエストしていました。これは分析やモデリングの…
Jupyter Notebookなどで作業中に、メモリに乗り切らないような大量のデータに対して何らか処理が必要になるケースがしばしばあります。 これを解決するツールの一つとしてAmazon EMRをきちんと知っておきたいというモチベーションで、今回はAmazon EMRでSpar…
EKSのおかげでEC2・ASG・ELBなどが一式揃ったKubernetes環境を楽に構築できるようになりました。 一方で、上記以外のAWSマネージドサービスに依存したアプリケーションの場合、それらマネージドサービスもKubernetes (つまりマニフェストファイル) の管理下…
AWSで稼働するアプリケーションのユニットテストを作るときに厄介なのが、依存しているマネージドサービスのモックをどうやって整えるかです。無しというわけにはいかないですが、unittest.Mockなどで自作するのもかなり大変です。 こうしたモックを簡単に作…
SQSのメッセージを別のSQSへ転送するCLIツールを作って、crates.ioに公開しました。 https://crates.io/crates/sqstransfer GitHubでバイナリを公開してます。 github.com 使い方 こちらから自身の環境にあったバイナリをダウンロードいただくか、または、ca…
AWSのマネージドサービスのSDKライブラリの最右翼Rusotoの使い方を、SQSとのメッセージのやり取りを通して、ひと通り触れていきます。 Rusoto RusotoはAWSマネージドサービスの非公式SDKです。AWSの各サービスのAPIを叩くラッパ (バインダ) となっており、cr…
年末年始にかけてKubernetesを少しだけインプットしてました。ローカルで環境を整えるのもしんどいし、現実的な利用も考えにくいので、Amazon EKS上でクラスタを作成して動かしてました。 今回はAWSコンソールからクラスタを作成する方法についてまとめまし…
AWSの推論環境の新たな選択肢として登場したInf1インスタンスを使い、PyTorchのモデルをコンパイル・推論させてみます。 概ねチュートリアル (https://github.com/aws/aws-neuron-sdk/blob/master/docs/pytorch-neuron/tutorial-compile-infer.md) をなぞっ…
タイトルの通りで、SQSを永遠にポーリングするPythonパッケージを作ってPyPiに公開しました。 pypi.org GitHubはこちら。 github.com 使い方 pip install sqs-pollingでインストール。あとは以下のように記述すると、延々とSQSからメッセージを取り出し、コ…
AWSのキューメッセージサービスSQSのメッセージを、Boto3を使ってPythonで送受信する方法の備忘録です。 Boto3のインストール、AWSの設定、および、SQSの作成は完了している前提です。 $ pip install boto3 $ aws configure AWS Access Key ID [************…
SageMakerは所定の場所に置かれたファイル以外はインスタンス停止によってリフレッシュされます。そのためSageMakerにプリインストールされていないコマンドやライブラリなどを使いたい場合、起動のたびにインストールする必要があります。 ライフサイクルイ…
SageMakerで分析・学習・推論のために作成した.ipynbファイルなどのバージョン管理やチームメンバへの共有を行いたい、ということが日々あります。 今回はSageMakerとGitHubを連携させる方法について紹介します。スクリーンショットたくさんです。 GitHubで…
久しぶりにAWSについての投稿です。AWS CodeBuildでGitHubと連携してPythonアプリケーションをビルドする方法を整理しました。 CodeBuild CodeBuildはその名の通り、アプリケーションをビルドするためのAWSマネージドサービスです。 CodeCommit - CodeBuild …
前回の投稿ではLambdaからエンキューされたメッセージをKinesis FirehoseでS3までアップロードしました。 今回はAthenaを使ってこのアップロードしたファイルをSQLで検索できるようにします。 Athena S3バケットのファイルからSQLライクな構文で検索できるサ…
今回はKinesis Firehoseを使って、Lambdaから受け取ったレコードをS3に出力させてみます。 Kinesis Firehoseの作成 Kinesis Firehoseは受信したレコードをプログラミングゼロでS3/Redshift/Elasticsearchへ流し込むことができるストリームサービスで、現在は…
DynamoDBをバッチなどでアクセスすることを想定して、今回はDynamoDBのデータをバルクで取得・更新させてみます。 BatGetとBatchWrite DynamoDBをバルクで取得・更新する場合、C#の永続性モデルではDynamoDBContextクラスで提供されるBatchGetおよびBatchWri…
DynamoDB StreamsをLambda(C#)で使ってみました。 DynamoDB Streams DynamoDBにはテーブルへの更新(作成、変更、削除)をキャプチャし、その情報(レコード)をバッファリングするストリームを作成することができる「DynamoDB Streams」という機能が提供され…
仕事でGoを使うこととなりましたので、年明けから勉強しておりました。 一つの区切りとしてナンチャッテToDo Web APIサーバを作りましたので、GitHubで公開しておきます。 github.com 参考文献 Goは↓の本を読んでました。 他の言語と比較しながらGoの考え方…
今回はLambdaの環境変数にC#からアクセスしてみます。 接続するDBを環境毎に切り替える場合などに役立ちます。 AWS Lambda の新機能 – 環境変数とサーバーレスアプリケーションモデル (SAM) | Amazon Web Services ブログ (結構最近追加された機能だったの…
12月にAWS LambdaがC#でも使えるようになって、Serverlessでも1.4.0からC#用のテンプレートが提供されましたが、プロジェクトファイルは別で準備しないといけなかったり、ちょっと不便でした。 ところが、AWS SDKでServerless用のプロジェクトテンプレートが…
最近の投稿でC#で書いたプログラムをLambdaで実行させていますが、初回実行が2回目以降と比較して明らかに遅いようなので簡単に調査しました。 構成 PCからJMeterでAPI Gatewayへリクエストし、API GatewayがLambdaをキックさせます。 Lambda自体は定数文字…
今回はDynamoDBへのCRUD操作を、C#で書いて、Lambdaで動かしてみたいと思います。 テーブルの作成 まずはAWS ConsoleからDynamoDBへテーブルを予め作成します。 テーブル名を"Todos"とします。 パーティションキーを"Id"、ソートキーを"Due"とします。 エン…
今回はKinesis StreamへPut/GetするLambdaをC#で書いてみます。 データフローとしてはLambda→Kinesis Stream→Lambdaとなります。 Kinesis Streamの作成 Kinesis Streamは、デバイス情報やログなどの継続して生成され続けるデータを効率的に処理するためのマ…
最近仕事でAWSに触っています。 また、12/1にAWSのLambdaがC#に対応したこともあり、Lambdaで色々遊んでます。 AWS Lambda Supports C# 今回の投稿では、HTTPリクエストを受けたAPI GatewayがLambdaをフックしてレスポンスを返す、ということをやってみます…