Amazon Web Services ブログ

Category: AWS Lambda

AWS Compute Optimizer を使用した AWS Lambda のコストとパフォーマンスの最適化

本投稿は AWS Compute Optimizer のシニアプロダクトマネージャーである Brooke Chen、AWS Compute Optimizer のプリンシパルプロダクトマネージャーである Letian Feng、Amazon EC2 のプリンシパルデベロッパーアドボケイトである Chad Schmutzer による寄稿です。 コンピューティングリソースの最適化は、あらゆるアプリケーションアーキテクチャにとって重要な作業です。計算処理リソースの過剰なプロビジョニングは不要なインフラストラクチャコストにつながる一方で、不足すると、アプリケーションのパフォーマンスの低下につながります。 2019年12月に開始された AWS Compute Optimizer は、AW​​Sコンピューティングリソースのコストとパフォーマンスの最適化のための推奨情報(リコメンデーション)を提示するサービスです。特定のワークロードに合わせた実用的な最適化の推奨事項を生成します。昨年、数千の AWS のお客様が、Compute Optimizer を使用してワークロードに最適な Amazon EC2 インスタンスタイプを選択することで、コンピューティングコストを最大25%削減しました。 お客様から最も頻繁にいただくリクエストの 1 つに、Compute Optimizer で AWS Lambda の推奨事項を提示してほしいというものがありました。これを受けて、2020年12月23日、Compute Optimizer が Lambda 関数の推奨メモリサイズをサポートすることを発表しました。これにより、Lambda ベースのサーバーレスワークロードのコストを最適化し、パフォーマンスを向上させることができます。開始するには、Compute Optimizer をオプトインして、推奨事項の検出に進みましょう。 概要 Lambda を使用すると、管理するサーバーがなく、自動的にスケーリングされ、使用した分だけの料金となるなどの、サーバーレスとしてのメリットが多くあります。ただし、Lambda 関数に適切なメモリサイズ設定を選択することは依然として重要なタスクです。Computer Optimizer は、機械学習ベースでメモリの推奨を行うことで、このタスクを支援します。 この推奨事項の提供機能は、Compute Optimizer コンソール、AWS CLI、AWS […]

Read More

コンテナイメージとしてパッケージ化された Lambda 関数の最適化

AWS Lambda は、re: Invent 2020 でコンテナイメージとしての関数のパッケージ化とデプロイのサポートを開始しました。この記事では、イメージサイズを縮小し、ビルド、デプロイ、更新時間を短縮するコンテナイメージの構築方法を学習します。Lambdaコンテナイメージには、最適化のために考慮すべき固有の特性があります。Lambda 関数のコンテナイメージを最適化するために使用するテクニックは、他の環境で使用するものとは少し異なります。 コンテナイメージを最適化する方法を理解するためには、コンテナイメージのパッケージ方法と、Lambda サービスがどのようにコンテナイメージの取得、キャッシュ、デプロイ、およびリタイアするかを理解することが役に立ちます。

Read More
Lambda

コンテナイメージ内でLambda レイヤーと拡張機能を動作させる

この記事では、コンテナーイメージとしてパッケージ化され、デプロイされた Lambda 関数で AWS Lambda レイヤーと拡張機能を使用する方法について説明します。 以前はLambda 関数は.zip アーカイブとしてのみパッケージされていました。これにはAWS マネジメントコンソールで作成された関数が含まれます。今はLambda 関数をコンテナイメージとしてパッケージ化およびデプロイすることもできるようになりました。 Docker CLI などの使い慣れたコンテナーツールを Dockerfile を使用してイメージをローカルで構築、テスト、タグ付けすることができます。コンテナイメージを使用したLambda 関数は 10 GBのサイズまで構築することが可能です。構築したイメージはAmazon Elastic Container Registry(ECR)リポジトリにプッシュします。このリポジトリは、AWSのフルマネージドなコンテナイメージレジストリサービスです。レジストリからECRイメージ URL をソースコードとして指定し、Lambda 関数を作成します。

Read More

AWS ConfigでSAPシステムを評価する – パート2

はじめに パート1では、AWS Configマネージドルールを使用してSAPランドスケープのを自動的に監査および評価する方法をお伝えしました。また、お客様のEC2インスタンスがSAPのベストプラクティスに従って設定されていることを確認するソリューションをお伝えしました。現在、AWSはバージニア北部リージョンでは160を超えるマネージドルールを提供しています。 インフラストラクチャに加えて、お客様はアプリケーションのコンプライアンスを維持する必要もあります。ここでは、AWS Configカスタムルールについてご説明します。AWS Configカスタムルールを使用すると、マネージドルールでカバーされているものに加えて、独自の構成チェックを定義できます。基本的にAWS Configカスタムルールは、AWSリソースのリストに対してAWS Lambda関数を実行します。

Read More

AWS Lambda の新機能 – コンテナイメージのサポート

AWS Lambda では、サーバーについて気にすることなくコードをアップロードして実行できます。多くのお客様に Lambda のこの仕組みをご活用いただいていますが、開発ワークフローのためにコンテナツールに投資した場合は、Lambda でのアプリケーションの構築に同じアプローチを使用することが難しくなります。 この問題に対応するため、Lambda 関数を最大 10 GB のコンテナイメージとしてパッケージ化し、デプロイできるようになりました。これにより、機械学習やデータ集約型のワークロードなど、大きな依存関係に頼る大規模なワークロードを簡単に構築してデプロイできます。ZIP アーカイブとしてパッケージ化された関数と同様に、コンテナイメージとしてデプロイされた関数は、同様の操作のシンプルさ、自動スケーリング、高可用性、多数のサービスとのネイティブ統合による恩恵を受けます。 当社では。サポートされているすべての Lambda ランタイム (Python、Node.js、Java、.NET、Go、Ruby) のベースイメージを提供しているため、コードと依存関係を簡単に追加することができます。Amazon Linux ベースのカスタムランタイム用のベースイメージも用意しており、これを拡張して Lambda ランタイム API を実装する独自のランタイムを含めることができます。 Alpine や Debian Linux をベースにしたイメージなど、独自のベースイメージを任意で Lambda にデプロイできます。Lambda を操作するには、これらのイメージに Lambda ランタイム API を実装する必要があります。独自のベースイメージの構築を容易にするため、当社ではサポートされているすべてのランタイムにランタイム API を実装する Lambda Runtime Interface Clients をリリースしています。これらの実装は、ネイティブのパッケージマネージャーを介して利用できるため、イメージ内で簡単に取得でき、オープンソースライセンスを使用してコミュニティと共有されます。 また、Lambda Runtime Interface Emulator をオープンソースとしてリリースします。これにより、コンテナイメージのローカルテストを実行して、Lambda にデプロイした際に実行されることを確認することができます。Lambda Runtime Interface Emulator は、AWS が提供するすべてのベースイメージに含まれており、任意のイメージでも使用できます。 コンテナイメージは、Lambda Extensions […]

Read More

【開催報告 & 資料公開】「SaaS+サーバーレス/EventBridge」セミナー

10 月 28 日に、「SaaS+サーバーレス/EventBridge」で開発迅速化、運用作業削減 〜ビジネスにアジリティーをもたらす「SaaS + サーバーレス」〜 と題したセミナーを開催し、6社の SaaS パートナー様にご登壇いただきました。登壇いただいたパートナー様の SaaS アプリケーションはすべて Amazon EventBridge に対応いただいています。 EventBridge は、サービスとサービスの間をつなぐためのバスとして機能し、様々なアプリケーションや AWS サービスと連携できます。EventBridge に対応いただいているSaaS アプリケーションは、簡単かつセキュアに、イベントソースとして AWS のサーバーレスサービス群と連携させることができます。 本セミナーでは、各社の SaaS のご紹介とともに、EventBridge に対応することで SaaS パートナーとして何が良いのか、SaaS を利用されるお客様にとってどんなメリットがあるのか、といったポイントでご説明いただきました。アンケート結果でも、SaaS との連携手法として EventBridge という選択肢があることを知る機会になった、とか、なかなか聞けないパートナー様目線での EventBridge の効能がわかってよかったなどのご意見がありました。 本記事では、改めて、ご登壇いただいたパートナー様のセッション動画および公開資料をご紹介します。EventBridge ってなんぞや? という方は、AWS セッションとしてご説明した「サーバーレスを取り巻く状況と EventBridge の概要」や Game Server Services 丹羽様のセッション資料/動画を先にご覧いただくことをお勧めします。その上で、各 SaaS パートナー様のセッション内容をご覧いただくと、SaaS + EventBridge で何ができるのかをご理解いただけるかと思います。また、次の BlackBelt 資料も参考になるでしょう。 EventBridge に関連した Black Belt […]

Read More
AWS Lambda execution environment with the Extensions API

AWS Lambda Extensions(プレビュー)のご紹介

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートであるJulian Woodによる寄稿です。 AWS Lambdaは、Lambda Extensionsのプレビューを発表しました。Lambda Extensionsは、お好みのモニタリング、オブザーバビリティ、セキュリティ、ガバナンス用ツールとLambdaとの統合を簡単にする新しい方法です。このブログでは、Lambda Extensionsがどのように動作するのか、どのように使い始められるか、さらに、AWS Lambda Ready パートナーの提供する現在利用できるextensionについて説明します。 お客様が既に使用しているツール群とLambdaを統合をしたいというリクエストは数多く寄せられており、Extensionsはその問題を解決するサポートをしてくれます。お客様からは、自分の使いたいツールとLambdaをつなげるために、追加の作業や設定を行うことが必要だという指摘が以前からありました。さらに、ログエージェントなどの長時間実行されるプロセスが必要なツールをLambda上で実行するのは、かなり難しいことでした。 Extensionsは、ツールがLambda環境と深く統合するための新しい方法です。複雑なインストレーションや設定は必要なく、お客様のアプリケーションポートフォリオ上にある好きなツールを簡単に使えるようになります。例えば以下のようなユースケースでExtensionsを使用できます: 関数呼び出し前、呼び出し中、呼び出し後の診断情報をキャプチャーする コード変更なしにコードの計測を自動的に行う 関数の呼び出し前に設定やシークレットを取得する 関数とは別のプロセス上で実行されている堅牢なセキュリティエージェントを通して、関数のアクティビティを検知・アラートする ExtensionsはAWS、AWS Lambda Readyパートナー、またオープンソースプロジェクトから使用することができます。本日時点(2020年10月8日 PDT)で AppDynamics、Check Point、Datadog、Dynatrace、Spsagon、HashiCorp、Lumigo、New Relic、Thundra、Splunk SignalFX、AWS AppConfig、Amazon CloudWatch Lambda Insightsのextensionが利用可能です。 どのように自分用のextensionを作成するかや、Lambdaのライフサイクルの変化についてのディープダイブについては、関連記事である“AWS Lambda Extensions (プレビュー) を構築する“をご覧ください。 概要 Lambda Extensionsは、複雑なインストレーションや構成管理を必要とせずに、簡単にお客様が現在使用しているツールにつなぐことができるよう設計されています。ExtensionをAWSマネジメントコンソールやAWS Command Line Interface (AWS CLI)経由でLambdaレイヤーとしてデプロイすることができます。AWS CloudFormationやAWS Serverless Application Model (AWS SAM)、Serverless Framework、Terraformなどのinfrastructure as codeツールからも使用できます。 また、Epsagon、New Relic、Lumigo、Thundraからの統合をStackeryを使って自動化できます。 […]

Read More
AWS Lambda execution environment with the Extensions API

AWS Lambda Extensions (プレビュー) を構築する

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートであるJulian Woodによる寄稿です。 AWS Lambda は使い慣れたモニタリング、オブザーバビリティ、セキュリティ、ガバナンスツールをお客様の Lambda と簡単に統合するための新たな手段として、Lambda Extensions のプレビューを発表しました。各種ツールは、Extensions を利用することでより深く Lambda 実行環境を制御し、そのライフサイクルに関与することができます。この単純化によって現在お客様がご利用中のツールを、より簡単に、アプリケーション・ポートフォリオに対して横断的に適用することが可能となります。 本稿では Lambda Extensions の仕組みや Lambda のライフサイクルの変化、および Extension を構築する方法について解説します。お客様の関数で Extensions を利用する方法については、関連するブログ “AWS Lambda Extentions(プレビュー)のご紹介” をご覧ください。 Extensions は新たに導入された Lambda Extensions API を利用して構築します。各種ツールは Extensions API を利用することで、関数の初期化、呼び出し、終了に対してより強くコントロールすることができます。この API は、 Lambda にカスタムランタイムを導入する際に利用される、既存の Lambda ランタイムインターフェースの上に構築されています。 お客様はアプリケーションパフォーマンス監視や機密管理、構成管理、脆弱性検知等のユースケースのためにAWSやAWS Lambda Ready パートナー、オープンソースプロジェクトによって提供される extensions を利用することができます。また自ら extensions を構築することで、Extensions API を使用してお客様固有のツールを統合することも可能です。 2020年10月08日時点で […]

Read More

サーバーレス LAMP スタック – Part 6: MVC からサーバーレスマイクロサービスへ

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 本シリーズの他のパートは以下のリンクからアクセスできます。また、関連するサンプルコードはこちらの GitHub リポジトリにあります。 パート1:サーバーレス LAMP スタックの紹介 パート2:リレーショナルデータベース パート3:Webサーバーの置き換え パート4:サーバーレス Laravel アプリの構築 パート5:CDK コンストラクトライブラリ この投稿では、マイクロサービスを使用してサーバーレス PHP アプリケーションを構築する方法をご理解いただけます。これまでご紹介してきた MVC フレームワークを利用した単一の Lambda 関数によるスケーラブルな Web ホスティングから、分離されたマイクロサービスモデルに移行する方法を示します。なお、このブログ投稿に付随するコード例は、この GitHub リポジトリにあります。 MVC アーキテクチャパターン 従来の LAMP スタックでは、多くの場合、Model-View-Controller(MVC)アーキテクチャを使って実装しています。これは、アプリケーションロジックをモデル、ビュー、およびコントローラの3つの部分に分離して実装する、確立された手法です。 モデル:この部分はアプリケーションのデータを管理する役割を果たします。その役割は、データベースから生データを取得したり、コントローラからユーザー入力を受け取ることです。 ビュー:このコンポーネントは表示に焦点を当てています。モデルから受け取ったデータをユーザーに提示します。ユーザーからの応答が認識され、コントローラコンポーネントに送信されます。 コントローラ:この部分はアプリケーションロジックを担当します。ユーザー入力に応答し、データモデルオブジェクトに対して相互作用を実行します。 データ、ロジック、およびプレゼンテーション層を分離するという MVC の原則により、1つの層での変更が他の層に与える影響を最小限に抑えることが可能です。これにより、開発プロセスがスピードアップし、レイアウトの更新、ビジネスルールの変更、および新機能の追加が容易になります。コンポーネント化によって、再利用とリファクタリングの適用性があがり、同時/並行開発がしやすくなります。 サーバーレス LAMP スタック サーバーレス LAMP スタックアーキテクチャについては、この投稿で説明しています。そこでは Webアプリケーションが 2つのコンポーネントに分割されています。アプリケーションにおける MVC フレームワークの役割をはたす単一の AWS Lambda 関数と、各応答を同期的に返す […]

Read More