2020-06-01から1ヶ月間の記事一覧

OSI参照モデル レイヤ4とレイヤ5とレイヤ6

レイヤ5とレイヤ6の記憶がいつも曖昧なので再勉強しました。 レイヤ4 トランスポート層 レイヤ4はエンドツーエンドの通信規格。 TCP TCPでは以下のような規格。 3ハンドシェイク ウィンドウ、シーケンス番号と確認応答番号による伝達メッセージの到達確認 ポ…

リピーターハブとスイッチングハブ

リピータハブ リピーターハブは接続された機器すべてに対して受け取ったパケットをブロードキャストする。 OSI参照モデルでいうところのレイヤ1の規格。接続された機器の宛先を管理しない。 ちなみにL1でスイッチするものもあるらしい。 L1スイッチの使い道:…

Scala DynamoDBを利用する

PlayframeworkからAWS SDK for Java 2.0を使用して、DynamoDBを利用したので記録しておきます。 といってもJavaのAWS SDKを使用するだけなので、Scalaはあまり関係ないかも(^_^;) 依存ライブラリ build.sbt libraryDependencies += "software.amazon.awssdk"…

AWS API Gatewayからのevent['body']がbase64 encodeされて渡される

表題の通り。 method="POST"で送信した値がHTTP APIとしたAPI GatewayからLambdaにeventを渡す際、bodyの中身がbase64 encodeされた文字列として渡される。 API GateWayから渡されるevent['body']は今の仕様だとbase64エンコードされて渡されるみたい。from …

AWS Python boto3でDynamoDBを扱う

PythonからAWSの各リソースにアクセスするにはboto3を利用します。 AWS Lambdaで利用する際は、そのままboto3が扱えるのでLambdaパッケージにboto3を含める必要はありません。 DynamoDBのリソースを取得 import boto3 dynamodb = boto3.resource('dynamodb')…

AWS DynamoDBメモ書き

インスタンスについて VPCではなくS3のようにグローバルセグメント?(この言い回しが正しいか謎(^_^;))に配置される。 プライマリキーについて RDBと同様、データを一意に特定できるプライマリキーの設定が必要。プライマリキー以外の項目はスキーマレスで自…

AWS docker-lambdaでローカル環境でlambda関数の開発を行う

先日はEC2上でLambda関数の開発を行いましたが、EC2を立てるのが手間・費用がかかるのがちょっと...という方は、docker-lambdaを使用することでLambdaコンテナの動作をエミュレートすることができます。 GitHub - lambci/docker-lambda: Docker images and t…

AWS S3イベントをトリガーにLambda Functionを実行する

Lambda FunctionはS3で発生したイベント(例えばオブジェクトのputやdelete)をトリガーに実行することができます。 ここではS3にオブジェクトをputした契機でLambda Functionを実行する方法を記述します。 Lambda関数の作成 関数の設計図から作成するとS3イベ…

lambda関数パッケージビルド用EC2を構築する

lambda関数からCPU依存のライブラリや各AWSサービスに接続を行う場合、lambdaが実行されるOS、Amazon Linuxからパッケージビルドを行えばトラブルが少ないです。 EC2にIAMロールの割り当て Lamdaで使用するIAMロール同様のEC2用のIAMロールを作成しておき割…

AWS Lambda Functionをスケジュールして定期実行する

AWS LambdaはCloud WatchのEventトリガーと連動してCronのように定期実行することができます。 定期実行Functionの作成 Cloud WatchのルールとLambda ファンクションを別々に定義することも可能ですが、Lambda関数定義時に設計図から定義すると関数作成と同…

brewでws-sam-cliとsawを導入

brewでAWS toolをインストールした時のメモ aws-sam-cli macOS への AWS SAM CLI のインストール - AWS サーバーレスアプリケーションモデル $ brew tap aws/tap $ brew install aws-sam-cli $ sam --version SAM CLI, version 0.52.0 saw saw is a multi-pu…

Playframework application.confに環境変数をbindする

環境ごとに異なる設定値をapplication.confに設けます。 OSの環境変数設定 ~/.bash_profileとかに、 export SECRET_KEY="****" と記述しておく。source ~/.bash_profileしておこう。 application.confの記述 環境変数は${?varName}で読み込めます。envvalの…

Scala Playframework S3にファイルアップロードを行う

2.x系のAWS SDK for JavaでScala + Playframework + S3アップロードを行ったのでメモしておきます。 AWS SDK for Java 2.x AWS SDK for Java 2.0 開発者ガイド - AWS SDK for Java バージョン 2 依存ライブラリの導入 僕の環境では40分ほどbuildに時間を要し…

AWS S3アクセスIAMユーザの作成とaws cliでのファイルアップロード

S3バケット 以下の作業は予めS3にYourBucketNameというbucketを作成しているものとする。 S3アクセス可能とするIAMユーザの作成 IAMユーザ作成後、インラインポリシーを作成。以下は指定のバケット(YourBuketName)に対するS3FullAccessのポリシーとなる。 { …

Playframework データアクセスするRepositoryクラスのDependencyInjection

PlayでAnornを使用していて、RepositoryクラスをDIした時のメモ。といってもAnormは関係ない。 Repositoryクラス 差し替え可能であること前提で抽象化するようtraitを用意しておく。 Trait trait ShopRepositoryTrait { def withBegin():ShopRepository def …