AWS

サーバーレス開発を始めて6ヶ月間なので振り返りをしてみる

今の会社(BeeX Inc.)に来て、半年くらいサーバーレス開発をやってきました。 やっと人並みに(?)サーバーレス開発進められるようになったのと、開発が一息ついたので振り返りをしてみようと思います。 はじめに サーバーサイドについて 使用サービス Lambd…

AWS LambdaからSAP Jco経由でABAPを呼び出す

タイトルの件、調査がてら書きました。 デプロイ方法 レポジトリ取得 SAP JCoの準備 ビルド AWS Lambda作成 SAMでローカルテストとデプロイ ポイント 最新のライブラリ POJOを利用したデータを受け渡し Gradleにjarやsoを含める VPCでは注意が必要 デプロイ…

AWS SAMでSQSをイベントソースとしたLambda実行がサポートされたので動かしてみた

この件、SAMでも試してみました。 dev.classmethod.jp SAMが対応しているか見てみた 個人的に待ちに待った対応だったので、早速調べてみたら、嬉しいことにSAM側も既に対応されていました。 github.com 該当のCommitはこれでしょうか。 github.com 該当のCom…

AWS API GatewayとSAMとSwaggerとGolang構成での基本設定

調べる効率が悪いのか、タイトルの構成で基本的なところ動くまでも結構時間かかってしまいました。イチから調べるよりこういったスタート地点のがあると良いと思いますので残しておきます。 主にSAMとSwaggerの関連性の部分が厳しかった。。。 コード ディレ…

Vue.js+Bootstrap+Typescript+Highchart+AmazonCloudwatchのサンプルアプリ

これから開発するものの準備を兼ねて、Vue.jsとBootstrapと統合したBootstrap-Vue使ってHighchartsでAWS CloudWatchのグラフ描画するサンプルをTypescriptで作りました。 デモサイト 初期環境構築 追加パッケージインストール Typescript Highcharts Bootstr…

S3のバケットポリシー間違ったら、管理者権限でもアクセス拒否されるようになってしまった

AWS

S3のバケットポリシー調整したいたら、VPNのID間違っていたようで、どこからもアクセスできなくなってしまいました。 設定画面が全て、「アクセス拒否」、「Access Denid」になってしまいました。当然バケットポリシーそのものもアクセスできない。CLIからも…

DynamoDBStream+Lambda(Golang)でProblem Function call failedエラーで1時間くらいハマった

ハマったのでメモ。 ちゃんと設定できているように見えるのに、 こんな感じで、 PROBLEM: Function call failed のエラーが出る。 一応、更新があるとエラーが出るので、動いているようですが、ログ見てもeventがnilって情報が出ているだけで、そもそもHandl…

S3にアップしたZIPを別S3バケットに解凍するアプリでAWS SAM+Golang開発の流れを確認

SAM使っての開発の流れを勉強するために簡単なアプリケーション開発しながら、調べたことなど忘れそうなので備忘兼ねてメモしています。順次追記予定です。 例として作ってみたのは、S3バケットにアップロードしたZIPファイルを、他のS3バケットに展開する処…

AWS SAM ローカルを使用したサーバーレスアプリケーション(Golang版)

こちらの公式ドキュメントの「SAM Local によるシンプルなアプリケーションの構築」の項目をGolang版で動かしたメモ。 docs.aws.amazon.com 準備するのは以下の2ファイル dir/template.yaml dir/main.go ビルドと起動 # productsというファイル名でビルド $ …

ローカルPCを汚さずに手元のDockerでDynamoDBを手軽に検証する

前提 環境構築 awscliで接続してみる 関連URL 前提 この記事の手順で必要なもの。 Docker gitとかawscliとか抜けばDockerだけ。追加のソフトウェアインストールも不要です。 環境構築 この項目がこの記事のメインです。簡単にDynamoDBの検証環境がローカルに…

リードレプリカを使ってRDS(MySQL)をアップグレードする手順を自動化した

AWS

RDS(MySQL)を10台以上アップグレードする必要が出てきたのでこちらの手順をスクリプト化しました。 以下の公式手順を自動化したものになります。 MySQL DB エンジンのアップグレード - Amazon Relational Database Service こちらの記事も参考にさせていただ…

AWS ALB配下のノードが全てUnhealtyになった場合、リクエストが全ターゲットにルーティングされます

AWS

開発環境のALB配下唯一のEC2インスタンスがUnhealtyなのに、普通にアクセスできるので調べてみたらこんな挙動だということが。全く知りませんでした。sorry pageとか最低限のリカバリにはつなげやすいのかな。 ただ、監視をゆるめている開発や検証環境だと全…

AmazonLinuxの古いyumリポジトリを利用したい時の方法

AWS

掲題の件、備忘メモ。 まず、以下のURLで リリースノート の項目を見るとリリースの一覧があるのでリリースの名前がわかります。 https://aws.amazon.com/jp/amazon-linux-ami/ だいたい3月と9月に出るようなので2017.03とか2017.09とか。今現在の最新が2017…

AWS S3を保存先としたプライベートなDocker Registryを公式コンテナから簡単導入

タイトルの通り。作業メモです。 テスト用イメージ作成 テストで利用するイメージを作ります。 Dockerfile作って。 cat <<EOF > Dockerfile from alpine:latest ENTRYPOINT ["echo","myimage"] EOF ビルドして。 docker build --no-cache -t myimage . ビルドされ</eof>…

AWS ALBのアクセスログ分析環境をDockernizeしてローカルPCで実行できるようにした

AWS ALBのアクセスログをサーバ上のBananaで分析していたのですが、Docker使って手元のPC環境でも簡単に実行できるようにしました。 github.com 使い方 Repositoryをダウンロード git clone https://github.com/yomon8/alb-log-analyzer.git cd alb-log-anal…

ALB/ELBのアクセスログを時間指定でダウンロードして標準出力してgrep検索可能にするツール作った

AWS ALBやELBのアクセスログですが、5分毎に出力していると大量のファイルになります。 調査するにしても複数の細かく分かれたファイルを結合したり、JSTとUTCの差を失念していて勘違いしたり、S3のフォルダ構造深かったり、ALBのアクセスログはgzip形式なの…

awscliのquery利用方法まとめ(主にqueryオプションとTips)

AWS

queryオプションを主にaws cliの使い方をメモしておきます。随時更新予定です。 queryオプション query指定無しだと 基本の使い方 出力形式を知る queryを使ってみる 関数(Functions) contains join starts_withとends_with to_string sort_by length Tips J…

コマンドラインでEC2のコンソール画面テキスト(システムログ)を取得してgrep分析

AWS

EC2が原因不明で接続不可になることは以外に多いです。そんな時にVMWareやHyper-V、KVMみたいにコンソール画面に何が出ているのか確認したくなります。 AWSマネジメントコンソールから「インスタンスの設定」>「システムログの取得」で以下のような画面が取…

【AWS】ALBからCLIでEC2切り離しderegister-targetsはGracefulじゃない?

AWS

ALBからEC2を切り離す時に使う aws elbv2 deregister-targets のコマンド、大量のアクセスがあってもエラーを返すことなく切り離すことができると思っていました。 ① EC2をALBより切り離し aws elbv2 deregister-targets --target-group-arn target_group_ar…

AWS ALBに長いリクエストURLでGETすると414や500でエラーになる

AWS

AWS ALB(Application Load Balancer)に長いURLリクエスト投げてみたら、以下のテーブルのように、ある長さのリクエストからエラーが出ることを発見しました。 URLの長さ(Byte) HTTPレスポンスコード 〜16446 200 OK 16447 500 Internal Server Error 16448〜…

【AWS】ALBから自身(EC2)を切り離したり登録するbashスクリプト

AWS

ALBはELBと異なり複雑な構成も取れるので、必要に応じて修正して使う前提で、LBとTargetGroupとListenerが1:1:1の基本構成で作りました。 EC2をALBから切り離し ほとんどをAPIから取得する構成にしましたが、複雑な構成なら変数として持った方が良いと思われ…

AWS ELBの504ステータスのGateway Timeoutと格闘した話(最終的にALBで直った)

AWS

ELBのメトリクスのステータスには、バックエンドのEC2が返したステータス(HTTPCode_Backend_XXX)と、ELB自身のステータス(HTTPCode_ELB_5XX)があります。 ELB自身のステータスコードの中には504というエラーコードがあります。この504エラーと格闘した話を書…

AMIから構築したEC2は最初EBSが遅い、プレウォーミングが必要

AWS

EC2をAMIから構築したところ、ディスク(EBS)が遅い。CloudWatchでもキュー長が増加してしまっていました。 問い合わせたところ、AMI からEC2インスタンスを作成した場合、各 EBSボリュームは スナップショットからリストアした際と同様、データは S3 がダウ…

AWS EC2のタグを関連するEBSとENIにコピーするスクリプト

AWS

結構前に一回実行用に作ったものだけど、最近使う機会出たのでここにもメモ。 #!/usr/bin/env ruby require 'aws-sdk' require 'pp' region = 'ap-northeast-1' cred = Aws::SharedCredentials.new Aws.use_bundled_cert! cli = Aws::EC2::Client.new(creden…

AWS ALB(Application Load Balancer)のアクセスログをFluentdにInputする

AWS

AWS ELBのログをFluentd(td-agent)で集めて集計していました。最近、いくつかALBを使うサービスが出てきました。 このALBですが、 たぶん ALB(Application Load Balancer) が正式名称だと思っているのですが、たまに Elastic Load Balancing Version 2 と書…

EC2とEIPで冗長構成のApache Load Balancerを構築する(Pacemaker)

ELBはオートスケールで可用性も高く、ミドルウェアの心配しないでいいので便利なのですが、IP固定できないなど課題があるのと、障害時の調査がブラックボックスすぎて大変なため、Pacemakerを利用して冗長化構成のLoadBalancerを構築してみました。 CDPで言…

Pacemakerでフェールオーバー時にAmazon SNSに通知するResource Agent書いてみた

Pacemaker/Corosyncでクラスタ構築していたのですが、フェイルオーバーしてしまった時には通知が欲しいものです。 Pacemakerをインストールすると、Failover時にメール通知するMailTo というResource Agentがデフォルトでインストールされます。 resource-ag…

GoogleドキュメントスプレッドシートにAWS EC2一覧を自動作成する

AWS

AWS Management Consoleはとても良く出来ていて、管理資料なんか無くても良いくらいです。 Windows使うことも無くなり、EXCEL開く回数も激減したのですが、それでもEXCELと一緒に社会人としての人生を生きてきているので、どうしてもあの表形式から離れられ…

タグをキーにしてEC2インスタンスのCSV形式一覧を抽出するワンライナー

AWS

Tipsだけど忘れないように。 抽出したい条件に合わせて --arg TKey "Stack" と --arg TValue "Production" を変えて実行します。 例えば以下のような条件の場合、 Key Value Stack Production こんな感じのワンライナーになります。 aws ec2 describe-instan…

AWS ELB配下のApache Http Server推奨設定のAWS公式情報

AWSの公式情報探していてググっても出ないと思っていたら英語で見つかりました。 めもめも。 Apacheの設定情報(※必ず英語に切り替えて読む) Use Apache as a Back-End Server for ELB 設定項目 値 Timeout 120 KeepAlive On KeepAliveTimeout 120 MaxKeepAli…