Amazon Web Services ブログ

Category: Compute

Amazon SNS, Amazon SQS, AWS Lambda のデッドレターキューによる耐久性のあるサーバーレスアプリケーション設計

この投稿は Otavio Ferreira, Sr Manager, SNS の寄稿によるものです 郵便システムにおいて、デッドレターキューは配信不能な郵便物を取り扱うための施設です。pub/sub メッセージングモデルにおけるデッドレターキュー (DLQ: dead-letter-queue) は、トピックに対して発行されたメッセージがサブスクライブしているエンドポイントに配信できなかった場合に、そのメッセージを送ることができるキューを表します。 Amazon SNS による DLQ サポートによって、アプリケーションはメッセージ配信における各種故障モードに対する、さらなる耐久力と回復力を持つことが可能になりました。 メッセージの配信失敗と再試行を理解する Amazon SNSがサブスクライブされたエンドポイントにアクセス出来ない場合、メッセージの配信は失敗します。このような状況は大きく2つの原因によって引き起こされます: クライアントエラー。ここでクライアント (メッセージ送信者) は SNS となります。 サーバーエラー。ここではサーバーは、例えば Amazon SQS や AWS Lambda のようにサブスクリプションのエンドポイント (メッセージ受信者) をホストするシステムとなります。 クライアントエラー クライアントエラーは、 SNS の保持しているメタデータが最新ではない場合に発生します。クライアントエラーの発生するよくある原因としては、エンドポイントの所有者がエンドポイントを削除した場合が挙げられます。例えば SNS に紐付いたサブスクリプションを削除することなく、SNS トピックにサブスクライブした SQS キューを削除してしまったような場合です。やはりよくある別の例としては、エンドポイントに適用されたポリシーに対して、SNS がメッセージを配信することを阻害するような変更を加えてしまった場合が挙げられます。 これらのエラーは、クライアントがメッセージの配信を試みたにもかかわらず、クライアントの視点からエンドポイントがアクセス不能となっていることが原因で発生するため、クライアントエラーとして取り扱われます。SNS はクライアントエラーの結果として失敗したメッセージの配信を再試行することはありません。 サーバーエラー サーバーエラーは、サブスクライブしているエンドポイントを実行しているサーバーが利用できないか、または SNS からの有効なリクエストを処理できなかったことを表す例外応答を返した場合に発生します。 サーバーエラーが発生した場合、SNSは線形、指数的のいずれかのバックオフ機能に基づいて配信を再試行します。SQS や Lambda 上で実行される AWS […]

Read More

新しいサーバーレスアプリ作成機能で CI/CD も作成した、その後…

本記事は「新しいサーバーレスアプリ作成機能で CI/CD も作れます」のその後のステップとして記述しています。まだその記事を見ていない方は、まずはそちらをご覧ください。以下は、その機能で、テンプレートとして Serverlerss API backend を選択し、プロジェクトリポジトリとして CodeCommit を作成された結果を元に説明しています。CI/CD や CodeCommit をよくご存知の方は読み飛ばしていただいて構いません。 実行テスト 作成されたアプリケーションは、何も変更しなくてもすでに実行できる状態にあります。 例えば、ターミナルなどから以下のコマンドを実行してみてください(なお、下記のように日本語を含むデータで実行する場合は、ターミナルの文字コード設定が UTF-8 であることを確認ください)。 curl -d ‘{“id”:”001″,”name”:”テスト”}’ -H “Content-Type:application/json” -X POST https://<<API EndPoint>> DynamoDBのコンソールをみると、新しいデータが登録されることがわかります。もちろん、好みの REST API テストツール(ブラウザプラグインなど)を使っても構いません。 構成の確認 生成されたアプリケーションで、API 定義、Lambda 関数がどのように定義されているかを見るのは、サーバーレスを始めたばかりの開発者には参考になるかと思います。例えば、API Gateway の構成を見てみると、以下のように設定されていることがわかります。 名称で想像できる通り、3つの関数は、全件検索、データの書き込み、特定 ID のデータの取得のための処理であり、それらが対応する API に紐づけられています。この 3つの処理はよく使われる典型的なものですので、そのコードは、多くの処理で参考になるでしょう。 コードの編集 テンプレートベースのサーバーレスアプリ作成機能で設定された Lambda 関数がどういうものか、コンソールから確認してみましょう。作成したサーバーレスアプリケーションへ Lambda コンソールからアクセスし、その中のリソースのセクションを見ると Lambda Function タイプのものが作成されていることがわかります。 ここにあるリンクをクリックすれば、それぞれの Lambda 関数の画面に飛びますが、そのコードは表示されず、「インラインコード編集を有効にできません」と表示される場合があります。生成されたコードはどこにあるのでしょう? もう一度、Lambda […]

Read More

Amazon ECS向けAmazon CloudWatch Container Insightsについて

本記事は AWS のシニアソリューションアーキテクトの Sirirat Kongdeeによる寄稿記事です。 Amazon CloudWatch を利用することで、Amazon Elastic Container Service(Amazon ECS)のリソースを監視することができます。Amazon CloudWatchは、CPU やメモリの割り当てについてや、クラスター、サービスレベルでのリソース使用率のメトリクスを提供するサービスです。以前は、サービスとタスクについてカスタムモニタリングを有効にする必要がありましたが、CloudWatch Container Insightsを使用することで、すべての Amazon ECS リソースの監視、トラブルシューティング、アラームの設定を行うことができるようになりました。これはフルマネージド型のサービスであり、Amazon ECSのメトリクスとログを収集、集約、要約することが可能となります。

Read More

AWS ParallelCluster を使用して、インタラクティブでスケーラブルな ML 研究環境を構築する

 分散型機械学習 (ML) ワークロードの実行に関しては、AWS はマネージドサービスとセルフサービスサービスの両方を提供しています。Amazon SageMaker は、エンジニアリング、データサイエンス、および研究チームが時間を節約し、運用オーバーヘッドを削減できるマネージドサービスです。AWS ParallelCluster は、コンピューティングインフラストラクチャをより直接的に制御したいお客様向けのオープンソースのセルフサービスクラスター管理ツールです。この記事では、AWS で分散 ML を実行する方法について説明します。Amazon SageMaker を使用した分散トレーニングの詳細については、以下の「Horovod を使用した TensorFlow 分散トレーニングの起動」と「マルチリージョンサーバーレス分散トレーニング」の記事を参照してください。 AWS ParallelCluster は、AWS クラウドでのハイパフォーマンスコンピューティング (HPC) クラスターのデプロイと管理に役立つ、AWS がサポートするオープンソースのクラスター管理ツールです。AWS ParallelCluster を使用すると、データサイエンティストと研究者は、必要なコンピューティングリソースと共有ファイルシステムを自動的にセットアップすることで、伸縮自在にスケーリングされた AWS リソースで使い慣れた作業環境を再現できます。Jupyter、Conda、MXNet、PyTorch、TensorFlow などの広くサポートされているデータサイエンスおよび ML ツールにより、低オーバーヘッドのスケーリングによる柔軟でインタラクティブな開発が可能になります。これらの機能により、AWS ParallelCluster 環境は、分散モデルの開発とトレーニングをサポートする ML 研究環境に最適です。 AWS ParallelCluster は、コンピューティングリソースのオンデマンド割り当てを中心に構築されたスケーラブルな研究ワークフローを可能にします。AWS ParallelCluster は、単一のハイパワー GPU 対応ワークステーションで作業し、潜在的に十分に活用するのではなく、GPU 対応コンピューティングワーカーのオンデマンドフリートを管理します。これにより、並列トレーニング実験の簡単なスケールアップと、リソースが不要な場合の自動スケールダウンが可能になり、コストを最小限に抑え、研究者の時間を節約できます。アタッチされた Amazon FSx ファイルシステムは、開発中に従来の高性能 Lustre ファイルシステムを利用しますが、モデルとデータを低コストの Amazon S3 にアーカイブします。 次の図は、AWS ParallelCluster ベースの研究環境を示しています。自動スケーリングされた Amazon […]

Read More

Amazon ECRのネイティブなコンテナイメージスキャン機能について

本投稿は Richard Nguyen と Michael Hausenblas による寄稿を翻訳したものです。 コンテナセキュリティは、開発者、セキュリティ運用エンジニア、およびインフラ管理者を含む、さまざまなアクティビティとツールで構成されます。クラウドネイティブサプライチェーンの重要な要素の 1 つは、コンテナイメージをスキャンして脆弱性を検出し、そこから行動に移せる洞察を得ることです。 私たちはコンテナロードマップのIssue 17で、AWSネイティブソリューションを提供することがいかにお客様にとって重要であるかを学び、そして、ECRイメージスキャン機能を一般公開いたしました。この投稿では、ECR ネイティブのソリューションについて説明し、ユースケースの一つである「定期スキャン」の実装戦略を説明します。 Scanning 101 最初にコンテナスキャンに関する用語を解説し、前提知識を合わせましょう。 コンテナスキャンに精通している場合は、このセクションをスキップいただいても大丈夫です。 概念的には、コンテナセキュリティの一部としてのスキャンは次のようになります。 コンテナ化されたアプリケーションを見てみると、開発者(developer)がContinuous Integration(CI)パイプラインでコンテナイメージをbuildし、これらのアーティファクトをECRにプッシュしています。一方、セキュリティ運用エンジニア(secops)は、1つもしくは複数のECRリポジトリと、ECSやEKSなどのコンテナオーケストレーターを管理しています。この文脈でいうと、コンテナセキュリティは共同の責任であるということに着目することが重要で、developerと secops の役割は、クラウドネイティブのサプライチェーン全体のセキュリティに対処するために連携しています。たとえば、developerは、コンテナのUSER を定義し、イメージ内の不要なビルドツールを削除して攻撃対象領域を最小限に抑えるといった、セキュアなコンテナイメージをbuildするための推奨プラクティスに従います。同様に、secops も、runtimeポリシーを検証して適用するといったことを行ないます。 さらに、2種類のスキャンに分類することができます。 Static scanning (静的スキャン) :デプロイ前のフェーズで実行されるため、developers (もしくは secops) はコンテナが実行される前に脆弱性に気づくことができます。ECR イメージスキャン機能は、このカテゴリに分類され、コンテナイメージ内の OS パッケージをスキャンして、既知のセキュリティ上の脅威公開リストである共通脆弱性識別子 (CVE) を検出します。ECR イメージスキャン機能を利用すれば、独自のスキャンインフラを設定したり、サードパーティのスキャンライセンスを購入したりする必要はありません。 Dynamic scanning (動的スキャン):ランタイム環境で実行されるスキャンのことです。テスト環境、QA 環境、または本番環境で、すでに実行されているコンテナの脆弱性を特定することが可能であり、ビルド時点でインストール済みのソフトウェアに脆弱性が含まれていることが後日発覚した際や、ゼロデイの脆弱性なども検出可能です。動的(またはランタイム)コンテナセキュリティについては、CNCF Falcoなどのオープンソースソリューションから、Aqua Security、Trend Micro、Twistlock など、AWS コンテナコンピテンシーパートナーが提供するサービスまで、サードパーティ製のさまざまなオプションが利用可能です。 みなさまからお寄せいただいたフィードバックとさまざまな選択肢の評価結果に基づき、我々は人気のあるオープンソースプロジェクトであるCoreOS ClairをECRイメージスキャン機能で利用して脆弱性の静的解析を実行することに決定しました。イメージスキャン機能を備えるように ECR API、AWS CLI、SDK の拡張を行い、CI パイプラインやコマンドラインで使用しやすい形で、スケーラブルで信頼性の高いマネージドサービスを実装しました。 具体的な現実世界のユースケースから始めましょう。ECRでのコンテナイメージの定期スキャンです。 […]

Read More

使用されていないAmazon EBSボリュームを削除してAWSのコストをコントロールする

業界や業種を問わず、お客様にとってコスト管理は最優先事項の1つです。 EBSボリュームのライフサイクルの可視性が十分でないと、未使用のリソースに対してコストが発生する可能性があります。 AWSはコスト管理のサービスを提供しており、コスト情報へのアクセス、コストの理解、コストの制御、およびコストの最適化を行えるようにしています。 未使用、および管理が行き届いていないAmazon EBSボリュームは、AWS のコストに影響します。 EBSボリュームのライフサイクルは、Amazon EC2 コンピューティングインスタンスから独立して管理可能です。そのため、EBS ボリュームに関連付けられている EC2インスタンスが終了しても、EC2起動時に「終了時に削除」 オプションを選択しない限り、EBS ボリュームは削除されません。 また、開発とテストのサイクルの中でEC2インスタンスの起動停止を繰り返す際、自動的にEBSボリュームを削除する処理がないと、 EBS ボリュームが残る可能性があります。 EC2にアタッチされておらず孤立したEBS ボリュームは、アタッチされていない間も料金が発生します。 この記事では、OpsCenter を活用した自動化プロセスについて説明します。OpsCenter は、AWS Systems Manager の一機能として最近発表されたもので、OpsCenterを使えば、EC2 インスタンスにアタッチされておらず、未使用なEBS ボリュームを識別および管理できるようになります。

Read More

新しいサーバーレスアプリ作成機能で CI/CD も作れます

AWS Lambda のマネジメントコンソールに新しい「サーバーレスアプリケーションの作成」機能が追加されていることにお気付きですか? サーバーレス環境である Lambda ではすぐに処理実行環境が利用可能になり、Webのコンソールからロジックを実装するだけで容易にちょっとした処理を開発できます。一方で、この次のステップとして、 Lambda 関数だけでなく、アプリケーションとしての開発や管理ができていない 環境の再現(開発環境からステージングや本番環境へ)、デプロイの継続実行(CI/CD)の環境が整備できずに、Webコンソール上でいまだにコード変更している という話を聞くことがあります。実際には、デプロイ/環境設定のコード化(Infrastructure as Code: IaC)には AWS CloudFormation や Serverless Application Model(SAM)などがあり、CI/CD には CODEシリーズなどがあるのですが、サーバーレス開発を始めたばかりだと、そこへの次の一歩に二の足を踏まれているケースを見かけることがあります。 そんな方に向けた機能が、新しい「サーバーレスアプリケーションの作成」機能です。これを使うと、特定ユースケースのアプリケーションをテンプレートベースでひとまとめに作成し、CI/CD パイプラインまで一気に構築してくれます。 簡単に、この機能の利用ステップを紹介します。

Read More

ソシオネクスト、AWS でリアルタイム AV1 エンコーディングを実現

NFL の試合をストリーミングで観戦することや、ミステリースリラー番組「ストレンジャー・シングス」の新シーズンを好きなだけ見たりする事から、消費者はストリーミングビデオ体験に対し、高い映像品質を期待するようになってきています。また、コンテンツ制作者や配給事業者にとって、低遅延且つ高品質のビデオを作成することが不可欠となっています。ただし、拡大するデバイスへの配信や多様なネットワーク接続環境を考慮に入れると、映像品質について高い水準を維持することは困難になっています。 日本の SoC( System-on-Chip )テクノロジープロバイダーである株式会社ソシオネクスト(以下、ソシオネクスト社)では、映像伝送にAWS Elemental MediaConnect、AV1エンコード処理にAmazon Elastic Compute Cloud( EC2 )F1 インスタンス、コンテンツ配信に Amazon CloudFront を使用しクラウドベースの AV1 リアルタイムエンコードを可能にするソリューションを構築することで、処理時間を大幅に短縮しながら一貫した高い映像品質を実現しました。 その仕組みは次のとおりです。 エンコーダを内蔵し Zixi プロトコルに対応した JVCのCONNECTED CAMカメラで撮影をします。JVC カメラは 前方誤り訂正(FEC)および自動再送要求(ARQ)パケット損失回復を使用するメカニズムであるZixiプロトコルに対応した唯一のプロフェッショナル用カメラです。JVC カメラから出力された信号は MediaConnect に送信されます。その後、信号は EC2 F1 インスタンスに入力され、リアルタイムで次世代の圧縮コーデック AV1 にエンコードされ、CloudFront を介して視聴者に送信されます。 適切に実装された場合、AV1 エンコーディングは H.264 および H.265 コーデックよりも小さいファイルサイズでより高品質の画像を生成しますが、エンコーディングのための高いコンピューター処理装置( CPU )要件によって、広く採用されていません。MediaConnect と EC2 F1 インスタンスがサポートするフィールドプログラマブルゲートアレイ( FPGA )を組み合わせることで、ソシオネクスト社のソリューションはリアルタイムの AV1 エンコードを可能にし、専用 CPU のハードウェアコストを削減します。また、不安定なネットワーク環境でも、エンドユーザーエクスペリエンスとストリームの品質を向上させながら、ストレージとコンテンツ配信ネットワーク( CDN […]

Read More

WinTicket 、 AWS メディアサービスで競輪ファンに高画質レース映像を低遅延ライブで提供

WinTicket は、インターネットテレビ局 AbemaTV の番組「競輪チャンネル」と連動し、24時間どこでも投票チケットを購入できるほか、レース情報・オッズ・ AI 予想機能、そして開催中の熱戦レースのライブ映像を提供しています。 時速 60km ~ 70km で 9 名の選手がレースする中、 WinTicket のユーザーが視聴環境を問わず、レースの状況を高画質・低遅延で視聴できるようにすることは重要です。そのため、 WinTicket は動画配信ワークフローをクラウドに移行し、AWSメディアサービスを活用することで高画質・低遅延のライブ配信を確立させました。 WinTicket のライブ配信は、全国40以上の競輪場から集約した映像で構成されています。 AbemaTV の番組スタジオで映像を集めてクラウドへ伝送し、 AWS Elemental MediaLive で ABR エンコード、 AWS Elemental MediaPackage で HLS にパッケージ化し、 Amazon CloudFront 経由で視聴者へ低遅延なライブ配信しています。 「 WinTicket はサービスの特性上、レース状況や結果がすぐにわかるようにしなければ、ユーザー体験に影響を及ぼしてしまいます。 AWS Media Services は、他のサービスよりも 1.5 倍ほど低いレイテンシでコンテンツを配信できるため、戦略的な強みが得られました。」と、株式会社サイバーエージェントの CATS ソフトウェア エンジニア 江頭 宏亮 氏は語っています。「今回、 AWS Media Services を採用したことで、配信ワークフローの開発工程数を抑えた、冗長性のある可用性の高いライブ配信システムの構築ができました。配信管理ツールとして採用したサーバレスアーキテクチャを含め、利用している時間帯だけ課金されるため、運用コストを抑えられます。また、スケジュール管理上で蓋絵 […]

Read More

Amazon EC2 インスタンスの起動時にカスタム暗号化キーを使用して、暗号化された Amazon EBS ボリュームの作成が可能に

Amazon Elastic Block Store (EBS) は Amazon EBS ボリュームの暗号化ソリューションを提供するため、ブロックストレージの暗号化キーを管理するための独自のインフラストラクチャを構築、維持、保護する必要はありません。Amazon EBS 暗号化は、暗号化されたの Amazon EBS ボリュームを作成するときにAWS Key Management Service (AWS KMS) のカスタマーマスターキー (CMK) を使用し、AWS KMS の使用に関連する 利点をすべて提供します。Amazon EBS ボリュームを暗号化するには、AWS 管理型 CMK またはカスタマー管理型 CMK のいずれかを指定できます。カスタマー管理型 CMK を使用する場合、AWS KMSでの CMK を毎年ローテーションするなど、暗号化キーをきめ細かく制御できます。CMK の作成の詳細については、のキーの作成を参照してください。 この投稿では、EC2 コンソール、AWS CLI、AWS SDK から EC2 インスタンスを起動するときに、カスタマー管理型 CMK を使用して暗号化された Amazon EBS ボリュームを作成する方法を示します。 EC2 コンソールから暗号化された Amazon EBS ボリュームを作成する […]

Read More