notebook

都内でWEB系エンジニアやってます。

AWS

aws-sdkのErrors::MalformedXML対応例

Rubyのaws-sdk-s3を使っていてマルチパートアップロードをしようと試していたら 完了(Complete)リクエストで次のようなエラーに遭遇したのでメモを残しておく Aws::S3::Errors::MalformedXML: The XML you provided was not well-formed or did not validate…

S3のマルチパートアップロードをpresignedUrlを用いてフロントエンドから行う

動画などの大容量のファイルをS3にアップロードする機能の話 単純にPUTオペレーションでアップロードする場合、1度のPUTオペレーションで最大5GBのオブジェクトをアップロードできる オブジェクトのアップロード - Amazon Simple Storage Service docs.aws.a…

Athenaで連続した日付のデータを生成して集計データと突き合わせる

BigQueryで連続した日付のデータを生成して集計データと突き合わせる - notebook swfz.hatenablog.com これのAthenaバージョン サンプルデータの生成などは下記あたりを参考にして生成した 配列のクエリ - Amazon Athena docs.aws.amazon.com SQL WITH repor…

CloudWatchLogs Insightsで色々集計してみる

AWS

CloudWatchLogsにログを流してInsightsでクエリ書いて集計してみた なお、本記事はクエリのメモがメインなので実行結果まで残っていないものもありあまり参考になるかはわからない 構文について CloudWatch Logs Insights クエリ構文 - Amazon CloudWatch Lo…

S3のPresigned URLで直接アップロードするときのAccessDenied対応

S3へフロントからPresigned URLを使って直接アップロードする記事は色々出ているので参考にすればサクッとできるかなと思っていたが権限周りでつまずいた 今回はその備忘録 想定ケース Presigned URLをRubyのサーバ側で生成 フロント側でPresigned URLの発行…

AWS RunCommandを使いEC2にSSH鍵不要で任意のコマンドを実行する

AWS

以前SessionManagerを試してみて「コマンド実行も行いたい」ということで今回はRunCommandに関して実際に試してみる AWS Session Managerお試し - notebook swfz.hatenablog.com Run Command sshなどを使用せずSSMエージェント経由で特定のコマンドをインス…

AWS Session Managerお試し

AWS

SessionManagerを使えばSSH経由でなくてもEC2に接続できるということで試しも兼ねて調べた SessionManagerを使うにあたっての前提として対象のインスタンスにSSMエージェントがインストールされている必要がある SSMエージェントとは SystemManager経由で各…

lambda layerと関数を1つの設定で行う

Lambda Layerを使うときのメモ 以前Serverless FrameworkでLambdaLayerを使ってみたがその時はLayer用にディレクトリを切って設定ファイルも関数とは別であとからARNで参照させる感じだった ディレクトリ構成 - プロジェクトルート - Layer用のディレクトリ …

HeadlessChrome on AWS Lambdaでスクレイピングする

前回の続き AWSだけならSAMがいいと言われていますがまだserverlessもちゃんと触ったことがなかったのでまずはserverlessで実装してみます 内容としては「LabmdaでHeadlessChrome(Puppeteer)を用いてスクレイピングして結果をSlackへ投稿する」です スクレイ…

HeadlessChrome on AWS Lambda(準備)

いろんな記事で紹介されている通りやり方はいろいろあるのですが 今回はlambdaでchromeを動かすためのNodeのライブラリを見つけたので紹介するだけしておきます alixaxel/chrome-aws-lambda: Chromium Binary for AWS Lambda github.com これはいいと思った…

Cloudformationで設定ファイルを分割する

AWSでの新規環境構築時など便利なCloudformation 一度テンプレートを作ってしまえば同じような環境はサクッと作れてとても便利ですね 最初にcloudformationを使ったときは分割できることは知っていたものの納期などの兼ね合いがあってとりあえず1ファイルの…

cloudformationを使ってみる

1からインフラを構築する機会があったのでどうせなら次やるときも楽できるようにある程度定義ファイルを用意することにしました terraformと迷ったのですがterraformは以前個人的に使ったことがあったので今回はcloudformationを使うことにしました yaml対応…

CLIからEC2を起動する

AWS

terraformとか使いたかったけど急いでたのと、インスタンスの数的にGUIぽちぽちがつらくなりそうだったのである程度固定してコマンド一発で起動できるようにする CLI経由だとjsonを直接かけるがファイルを読み込ませてAPIを叩くのが良さそう スケルトンの生…

minioを使ってS3の環境をローカルで再現する

AWS

minio S3互換の環境を立ててくれるS3のクローンプロダクトだそうです minio/minio: Minio is an object storage server compatible with Amazon S3 and licensed under Apache 2.0 License github.com 開発環境などでS3を用いたCIをまわすときとかに料金を気…

apexを使ってlambda functionの管理

serverlessとapexがあるようですがなんとなくapexを使ってみます github.com インストール curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sh プロジェクトの作成 apex init Enter the name of your project. It should be machine-…

dynamoDB-localでローカル開発環境を整える

【AWS発表】 デスクトップ開発を可能にする DynamoDB Local dynamodbをローカルで扱えるようにするものだそうです 早速やってみます インストール awscliもインストールします pip install awscli 公式からダウンロードします DynamoDB Local curl -LO http:…

Auto Scaling(lifecyclehook)を使ってみる

AWS

いまさらながらEC2でAutoScalingをやってみました そのときのメモ 要件 VPC内のバッチ処理をするサーバのスケーリング 忙しい時間帯が決まっているのでその時間帯のみスケールアウト スケジューリング lifecyclehookを使ってスケールイン時に処理の正常終了…

Cloudwatch + SNS + SQS でSlackへ通知

ChatOpsの一環としてサービスのアラートをSlackに投げれるようにします さっと調べた感じ今だとCloudwatch -> SNS -> Lambda -> Slackというのがlambda to slackのblueprintもあるので楽そう + 使ってみたかったのですが担当サービスがそもそもlambdaが使え…

cloudwatch alarm を cliから登録する

下記参考にたたいてみました put-metric-alarm Diskスペースが80%以上使っていたらSNSに通知を飛ばす設定 aws cloudwatch put-metric-alarm --alarm-name testalarm \ --comparison-operator GreaterThanThreshold \ --threshold 80 \ --alarm-description t…

jqとAWS CLIでautoscaling groupのprivate ip addressを取得するワンライナー

AWS

オートスケーリンググループで今アクセスできるインスタンスのプライベートIPが欲しかったのですがAWS-CLIを組み合わせなくてはいけないようだったのでワンライナーで書いてみました やる事は二つ オートスケーリンググループのインスタンスIDを取得 リクエ…

Simple Quere Serviceを使ってみる

autoscalingの通知先として選べるので使いそう、ということで触ってみました やってる事はいたってシンプルです cliでqueueへメッセージを登録、同じくcliでqueueからメッセージを取得するだけ 事前にコマンドを発行するEC2にIAM Roleを適用させておくかcred…

rundeck EC2 plugin

rundeckのEC2プラグイン rundeck ec2 plugin EC2上のノードを自動的に探してrundeckのノートして扱う事が出来るプラグイン いちいちリソースファイルを更新しなくていいっていうとても便利そうです、早速使ってみます install 最新版を取得し$RUNDECK_BASE …

RDSでslow-logを出力する

RDSのデフォルトではslowlogを出すような設定にはなっていないので出す場合は別途設定が必要です マネジメントコンソールのparameter groupsから対象RDSに適用されているパラメータグループを編集します 入力フォームが用意されているので変更します パラメ…

EC2起動時にスクリプトを実行する

AWS

EC2起動時にサービス投入までに定型作業がある場合など、毎度同じコマンドを打つのが面倒になってきたので調べました User Dataというのを使えば出来る模様 Linuxインスタンスでの起動時のコマンドの実行 Amazon LinuxのCloudInitによって起動時に実行される…

リザーブドインスタンス(RI)

AWS

AWSを利用しているなら使ってないほうが少ないと思われるサービス RIについて知る機会があったのでメモ コスト計算は下記 SIMPLE MONTHLY CALCULATOR 概要 あらかじめ使用すると決まっているインスタンスのリソースを契約することでボリュームディスカウント…

fluentd + elasticsearch ではまったところ

fluentd + elasticsearch + kibana fluentd+elasticsearch+kibanaを導入してみたのですが色々と詰まったところがあったのでこの機会に残しておきます elasticsearchへの転送 dstatはすでにあるし、あとはcopyしてelasticsearchに流すだけだし余裕っしょ♪ と…

カスタムメトリクスを使ってみる

AWS

AWSのCloudwatchで色々な値が見れますが、そんなに多くありません、そこでカスタムメトリクスを使って知りたいデータを計測しましょうっていうお話 なにはともあれ使ってみました アクセスできるようにする まず、CloudwatchへEC2からアクセスができるように…

EC2 で Elasticsearch + kibana

EC2 で Elasticsearch + kibana 何番煎じかって話ですが、やってみて初めて分かることもあるのでまとめてみます EC2でelasticsearchのクラスタ構成+kibanaをやりましょうってやつです 結局以前使ったansibleにちょっと修正を加えてやることにしました ansibl…