概要 みなさんこんにちは🎄 「フォトリ」という家族写真の撮影サービスを運用している会社でCTOをしてるカイトズズキと申します。 この記事では、先日会社のAWSで割と高額の請求が来てしまい😭死にたくなる思いをしたので、そのお話についてしていきます。 AWSは便利だけど、お金使いすぎたりしないか不安になりますよね。 特に僕はそんなにAWSには詳しくない人間なので、なおさらドキドキです。 この記事を通して、僕がやっちまった失敗をみなさんに知ってもらい、 同じような失敗をする人が1人でも減ることを祈ってます🙏 やらかしレベル まず、結果としてどれくらいやらかしたかと言うと、 普段の使用料金以外に、 - Lambda で 10万円 くらい - S3 で 30万円 くらい の請求が来てしまいました、、、 普段は数万円程度で2つのWebサービスを運用しているため、 最初に気づいたときは驚きすぎて理
関数の内容については、大栗の記事同様に以下のとおり設定しました。 from __future__ import print_function def lambda_handler(event, context): for record in event['Records']: print ("test") payload=record["body"] print(str(payload)) 次にイベントトリガーを設定します。「トリガーを追加」をクリックします。 トリガーに「SQS」を選択し、事前に作成しておいた FIFO キューを指定します。(記憶がうろ覚えですが、以前はここの選択対象に FIFO キューは表示されなかったと思います)。バッチサイズは 5 で検証してみました。 これで FIFO キューをトリガーとした Lambda 関数がセットできました。次にキューにメッセージを投入して、
先日えいやと書いた AWS Lambda のデプロイツール lambroll ですが、これと公開済みの bash layer を使うとかなり気軽に(雑な) shell script を Lambda で実行できて体験がよかったので書いておきます。 AWS Lambda のミニマルなデプロイツール lambroll を書いた - 酒日記 はてな支店 ちょっとしたものをLambdaで書くの億劫さのほうが強かったけど、bash layerとlambrollを使ったら雑shell scriptをホストで書いてるのに近い感じになり、顧客が本当にほしかったもの感があるなこれ— fujiwara (@fujiwara) 2019年11月13日 今回はとある理由で ECS のサービス内のタスクを定期的に入れ換えたかったので、aws ecs update-service を一発実行する、という要件。やりたい
CloudFrontをS3 オリジンで利用するとき、「CloudFrontをバイパスしたアクセスを制限」「インデックスドキュメントを返す」という要望は少なくないのではないでしょうか?出来そうで出来なかった共存を Lambda@Edge で解決! ちょっと伝わりにくいタイトルですが、やりたいことは以下の2つです。 CloudFront の S3 オリジンには直接アクセスさせない(CloudFront をバイパスした S3 へのアクセスをブロック) オブジェクト指定のないアクセス(末尾"/"の URL アクセス)にはインデックスドキュメントを返す(サブディレクトリも含む) 画にするとこういうことです↓ 「CloudFront をバイパスさせない」という点でまず考えるのは、オリジンアクセスアイデンティティでかと思います。そして、「オブジェクト指定のないアクセスにインデックスドキュメントを返す」と
概要 サーバレスアーキテクチャ(今回でいうとサーバレスAPI)を構築した際、負荷テスト(ラッシュテスト)を実施した際にいろいろ試行錯誤した時のTipsです。 アーキテクチャ構成 よくある構成。APIGW->Lambda->DynamoDBと処理しているAPIがほとんどです。 実施内容 どうやってラッシュテストしようか。 下記のパターンがさっと思いつきます。 1. Device Farmを使ってテストケース投入してやってみる。 2. JMeterとかを使ってシナリオテストっぽくしてみる。 3. APIエンドポイントに対して負荷をかけてみる。 JMeterを使おうとも考えましたが、シンプルに想定RPSを耐え切るかを見たかったので、3を選択しました。 ラッシュテスト 前準備 結論から述べると、ApacheBenchもvegetaもうまくいかなかったので、wrk使います。 wrkでEC2を大量に立
2020/01/20 Update: 本エントリの内容は2019年12月3日にアナウンスされた『Amazon RDS Proxy』のリリースにより完全に陳腐化しました。過去のアンチパターンがフィードバックをもとにした改善によってアンチパターンではなくなるという最高の事例です。 サーバーレス元年始まった! 今年がサーバーレス元年な理由. それはLambdaに以下が揃ったから. ・カスタムランタイムで実質どんな言語でも利用可能 ・VPC利用時のコールドスタート改善 ・Provisioned Concurrencyでスパイク対応も可能 ・RDS ProxyでRDBとの接続が現実的に これまで5年で受けたフィードバックがついに結実. 強い— Keisuke Nishitani (@Keisuke69) 2020年1月19日 RDS Proxyの詳細はこちらからどうぞ。まだプレビューですがぜひ試して
Node.jsを使用していると必ずといっていいほどnpmコマンドでライブラリをダウンロードしてくると思います。 npmでダウンロードしたライブラリをLambda Layersへ登録しておけば、Lambda本体はかなり軽く作成することができます。 今回はAmazon Echoのask-sdkを例にLayersへ登録して使ってみます。 npmでダウンロード ローカルPC上で"nodejs"フォルダを作ります。 最後に説明しますが"nodejs"という名前には意味があります。 "nodejs"フォルダ内でnpmコマンドを実行します。 cd nodejs npm install ask-sdk "nodejs"をzipファイルへ圧縮します。 中身ではなく"nodejs"フォルダごと圧縮するのを注意してください。 Layersへ登録 AWS の管理コンソールからLambda>Layersを開いて"レ
※: 本表は現在確認できる情報から筆者が独自に作成しています。 注意 Aurora ServerlessのData APIは現在Beta版のため、変更される可能性があります。 Data APIではトランザクションはサポートされません。 レスポンスは最大1,000行で1MBのサイズ制限があります。 現在利用可能なリージョンは米国東部 (バージニア北部)のみです。 コネクションは最大1分でタイムアウトします。 認証情報はSecrets Managerを使ってDBに接続します。 やってみた 事前設定 以下の状態を前提とします。 リージョン: 米国東部 (バージニア北部) Auroraエンジン: Aurora Serverless 5.6.10a まず、Aurora Serverlessを起動します。Aurora Serverlessの起動方法は以下のエントリを御覧ください。 Aurora Ser
DynamoDB Streamとは DynamoDB Streamは、DynamoDBに対する項目の追加、変更、削除をイベントとして検出できる機能です。DynamoDB Streamを使うことで、項目が追加・変更された時にプッシュ通知を飛ばしたりといった実装が可能になります。今回は、そのイベントをLambdaで受け取ってみたいと思います。 参考:DynamoDB ストリーム を使用したテーブルアクティビティのキャプチャ DynamoDB側でStreamを有効化 先んず、DynamoDBの概要のタブにある「ストリームの管理」から、Streamを有効化します。新旧イメージを選択すると、項目の変更時にLambdaが項目のBefore&Afterの両方を受け取ることができます。 DynamoDB Streamを受け取るためにLambdaに必要な権限 LambdaがDynamoDB Streamを受
概要 Lambdaは100msの実行時間単位でオンデマンドに課金されるため、立ち上げっぱなしのEC2インスタンスよりも、料金が安くなる可能性があることが一般に知られている。 しかし、以下の性質を満たすアプリケーションでは、EC2インスタンス上に構築したケースと比較して、Lambda上に構築したほうがコスト効率が悪くなるのではないかと考察してみた。 Lambda functionの実行時間のうち、ネットワークI/O時間が支配的である Lambda functionの実行終了を同期的に待たなければならない 複数のレコードをLambda functionの引数に渡すことができない Lambdaの基本コスト構造 まず、Lambdaのコスト構造を把握する。 Lambdaの料金表[1]によると、「functionに対する合計リクエスト数」と「functionの合計実行時間」に応じて料金が発生する。 後
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く