Amazon Web Services ブログ

Category: Containers

AWS Proton はじめの一歩

この記事は、 AWS Proton: A first look を翻訳したものです。 ※日本語字幕の表示には、設定 → 字幕 → 自動翻訳 → 日本語をご選択ください 我々がお客様のエンジニアチームと会話するときに、特にエンタープライズ規模のお客様の場合、開発チームとプラットフォームチームに分かれて組織化されていることがよくあります。通常、開発チームはサービスの作成とメンテナンスを担当し、プラットフォームチームは開発チームが簡単にサービスを展開できるようなツールを構築しています。このツールには多くの場合、ビルドパイプラインや可観測性、スケーリング、およびセキュリティについての既知のベストプラクティスが組み込まれています。

Read More

Amazon ECS deployment circuit breaker のご紹介

※日本語字幕の表示には、設定 → 字幕 → 自動翻訳 → 日本語をご選択ください EC2 および Fargate コンピュートタイプ用の Amazon ECS deployment circuit breaker をパブリックプレビューで発表しました。この機能により、Amazon ECS をご利用のお客様は、手動での作業を行うことなく、不健全なサービスデプロイを自動的にロールバックできるようになります。これにより、お客様は失敗したデプロイを迅速に発見できるようになり、失敗したタスクのためにリソースが消費されたり、デプロイが無期限に遅延したりすることを心配する必要がなくなります。 以前は、Amazon ECS でデプロイメントタイプにローリングアップデートを使用しているときに、サービスが健全な状態にならない場合、スケジューラは サービススロットリングロジック により永続的にデプロイを再試行していました。このデプロイの失敗を迅速に検知するには、追加でモニタリングの仕組みが必要であり、これは AWS CloudFormation を使用して Amazon ECS サービスをデプロイしているお客様にとっても厄介事の1つでした。 デプロイが失敗する理由はいくつかあり、例えば、コードやサービス構成に破壊的変更を加えた場合、希望のタスク数を立ち上げるために必要なリソースが不足している場合、コンテナやロードバランサのヘルスチェックに失敗した場合などです。ここで紹介したデプロイ失敗のシナリオは一部にしか過ぎず、deployment circuit breaker がどのような場面で役立つかを理解していただくための具体例として取り上げています。このブログの後半では、コンテナのヘルスチェックが失敗した場合のシナリオを例に deployment circuit breaker のデモを行います。   何をデプロイするか? デプロイするデモアプリケーションは Python Flask Web サーバを実行しており、ECS サービスを介してデプロイされたタスク定義の現在のバージョンを表示します。このサービスの作成、デプロイ、更新には AWS CLI を使用します。まずはコード、Dockerfile、タスク定義を見て、これからデプロイされる内容の理解を深めることから始めてみましょう。 この Flask アプリケーションは、タスクメタデータエンドポイントからタスクのバージョンを取得しており、ウェブサイトにアクセスすることで、ECS サービスが実行しているタスク定義のバージョンが表示されます。このアプリケーションは circuit breaker […]

Read More

Amazon EKS が、マネージド型ノードグループでの EC2 スポットインスタンスのプロビジョニングと管理をサポート

この記事は、Amazon EKS now supports provisioning and managing EC2 Spot Instances in managed node groups を翻訳したものです。 Amazon Elastic Kubernetes Service (Amazon EKS) を使用すると、アップストリームのKubernetes を利用した、セキュアで可用性の高いKubernetes クラスターを AWS で簡単に実行できます。2019 年にマネージド型ノードグループがサポートされ、EKS はクラスターの基盤となる EC2 インスタンス(ワーカーノード)をプロビジョニングし、管理できるようになりました。これにより、新しいAMI がリリースされたときにノードをローリングアップデートしたり、Kubernetes バージョンを更新したりといった、運用のための作業が非常に簡単になりました。EKS のマネージド型ノードグループについて詳しく知るには、アナウンス時のブログ及びドキュメントをご参照ください。 AWS public containers roadmap にお客様より寄せられたご要望を受けて、EKS はマネージド型ノードグループをさらに使いやすくするために機能を強化してきました。例えば、カスタムAMI の指定、起動テンプレートの利用といった機能拡張を実施しました。同様に、お客様の関心が高かった機能の一つが、マネージド型ノードグループでスポットインスタンスを起動、管理できるようにするというものです。 Amazon EC2 スポットインスタンスを利用すると、EC2 が予備として確保しているキャパシティーを利用して、大幅な割引価格で EC2 インスタンスを実行できます。 EC2 がこの予備キャパシティーを必要とする際には、スポットインスタンスは 2 分前に通知を受けて中断されることがあります。スポットインスタンスを Kubernetes のワーカーノードとして使用するというのは様々な種類のワークロードで非常によく使われるパターンです。ステートレスなAPI エンドポイントやバッチ処理、ML のトレーニング、Apache Spark […]

Read More

re:Invent 2020: AWS Containers Track

re:Inventは11月30日 (月) 〜12月18日 (金) の3週間を通して開催される無料かつ完全オンラインのカンファレンスです。 今週より、登録済みのお客様は多岐に渡るAWSサービスに関するライブ及びオンデマンドのセッションへアクセスすることができます。本記事ではコンテナサービスのトラック、例えば Amazon ECS、Amazon EKS、AWS Fargate、Amazon ECR、AWS App Meshに関連するセッションについてご紹介させていただきます。また、お客様のフィードバックに基づき、今年は過去人気の高かった“Getting Started”セッションやリーダシップトーク、お客様事例のセッションを復活させました。 去年のre:Invent 2019からの進化をお客様へご共有できること、心より嬉しく思います。是非ご登録いただき、アジェンダよりご覧になりたいセッションをカレンダーへ追加してください。 ローンチセッション An introduction to Amazon ECS Anywhere, Massimo Re Ferre, Principal Technologist Amazon ECS キャパシティプロバイダーは、コンテナ化されたワークロードをさまざまなタイプのコンピュートキャパシティで実行できるようにする柔軟なルール定義機能およびそのキャパシティのスケーリング管理機能を提供するものです。本セッションでは、“オンプレミス”キャパシティプロバイダーがどのようにして多種のキャパシティ上で起動するAmazon ECSタスクやサービスを統一されたAPIを使って、コントロールプレーンの追加的ソフトウェアが必要なく管理できるかを見ていきます。オンプレミス、或いは別のクライド上でコンテナをAmazon ECSからオーケストレーションする方法についてご案内します。 セッション詳細 12月9日 2020 | 7:30 AM – 8:00 AM JST 12月9日 2020 | 3:30 PM – 4:00 PM JST 12月9日 2020 | […]

Read More
EKS Managed Addons

Amazon EKS add-ons のご紹介: Kubernetes 運用ソフトウェアのライフサイクル管理

この記事は、Introducing Amazon EKS add-ons: lifecycle management for Kubernetes operational software を翻訳したものです。 当初から、Amazon Elastic Kubernetes Service (Amazon EKS) の目標は、Kubernetes クラスター管理の専門家ではなくても AWS 上で Kubernetes を簡単に実行できるフルマネージドサービスを構築することでした。Amazon EKS が最初にローンチしたとき、それはフルマネージドな Kubernetes コントロールプレーンを意味していました。やがて、お客様からはクラスターに必要なコンピュートパワーの管理を支援してほしいという要望が出てきました。1 年前には、EKS Managed Node Groups と AWS Fargate のサポートを導入しました。 お客様からはさらなる改善のご要望をいただいていました。本日は、フルマネージドな Kubernetes クラスターを提供するための主要なステップである新機能、EKS add-ons について紹介したいと思います。EKS add-ons を使用すると、Kubernetes アプリケーションをサポートするための重要な機能を提供する運用ソフトウェアまたはアドオンを構成、デプロイ、更新することができます。これらのアドオンには、Amazon VPC CNI のようなクラスタネットワーキングのための重要なツールのほか、可観測性、管理、スケーリング、セキュリティのための運用ソフトウェアが含まれます。 本日より Amazon VPC CNI plugin から、Amazon EKS では、新しいクラスターを作成するとき、またはクラスターの実行後いつでもアドオンを有効にできるようになりました。EKS は、クラスター上でアドオンソフトウェアを起動し、1 […]

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
Amazon ECS Anywhere のご紹介

Amazon ECS Anywhere のご紹介

この記事は、Introducing Amazon ECS Anywhere を翻訳したものです。 2014 年、AWS は EC2 インスタンス上で稼働する様々な規模のコンテナの管理を簡潔にするために Amazon Elastic Container Service (Amazon ECS) を発表しました。Amazon ECS の採用が増えるにつれて、お客様は「Undifferentiated Heavy Lifting」(差別化につながらない重労働) である、コンテナを実行するための EC2 インスタンスの管理を取り除くという新しい問題に対応していました 。そして 2018 年、AWS はコンテナを実行するためのインフラストラクチャの管理が不要なサーバーレスプラットフォームである AWS Fargate を発表しました。 この 2 年間、お客様は Amazon ECS を利用したコンテナのデプロイが、より多くの場所で行える柔軟性を求めていました。AWS リージョンの外部で、他の連携するサービスの近くでアプリケーションを実行するようなユースケースが増えていました。2019 年と 2020 年に、AWS は Amazon ECS のタスクを AWS リージョンの外部で実行可能にするオプションに関する一連の発表を行いました。AWS Outposts は、AWS が所有・管理するハードウェアを利用して、AWS のインフラストラクチャ、サービス、API、そしてツールをお客様のオンプレミス環境に拡張します。AWS Wavelength と AWS Local […]

Read More

【開催報告】コンテナラウンドテーブル #2: コンテナ運用に関するディスカッションが行われました

AWS ソリューションアーキテクトの落水です。Amazon ECS や Amazon EKS をご利用中のお客様同士で情報交換をしていただくイベント「コンテナラウンドテーブル」の第二回が、2020 年 11 月 10 日にオンラインで開催されました。第一回の様子は、こちらの開催報告のブログをご確認ください。第二回では 5 社の企業様にご参加いただき、CI/CD パイプラインやコストの最適化など、いくつかのトピックを設定して情報交換およびディスカッションが行われました。 当日のタイムテーブル 14:00 – 14:35: 情報交換 AWS のコンテナサービスをどのように活用しているのか、各企業様からユースケースをご紹介いただきました。参加者の方からは『他社様の運用実績や課題を知ることができ、とても参考になった』などの声もいただいており、有意義な情報交換が行われました。 14:35 – 15:25: ラウンドテーブル 参加された各企業様には事前にアンケートを回答していただき、ご要望の多かったトピックについてラウンドテーブルを実施しました。ラウンドテーブルには、AWS からソリューションアーキテクトの加治・濱、プロダクトデベロッパーアドボケイトの Tori Hara も加わりディスカッションが行われました。ラウンドテーブルで行われたディスカッションについて、いくつかの内容をピックアップしてご紹介します。  デプロイにおいて課題に感じている点は? CI/CD パイプラインを構築しているが、ロールバックなど一部のオペレーションが手動になっているため、できれば自動化したい ロールバックについて、アプリケーションの状態が追いやすかったり、管理がしやすい方法があれば知りたい 例えば Amazon ECS では、デプロイに AWS CodeDeploy を利用することで Canary デプロイなどのトラフィックコントロールが可能となるので、トラフィックの切り戻しを含めてパイプラインに組み込むとロールバックの制御がやりやすくなる アプリケーションの状態は、ビジネスに近いメトリクスで健全かどうかを判断するのが望ましい CI/CD パイプラインはどのように構築している? Amazon ECS は CI/CD が同一パイプラインだが、Amazon EKS は CI […]

Read More

【開催報告】コンテナラウンドテーブル #1: お客様同士でコンテナ運用における悩みや工夫を共有するイベントが開催されました

AWS ソリューションアーキテクトの落水です。先日、Amazon ECS や Amazon EKS をご利用中のお客様同士で情報交換をしていただくイベント「コンテナラウンドテーブル」が開催されました。「コンテナラウンドテーブル」とは、Amazon ECS 及び Amazon EKS の情報共有を目的として、参加されたお客様における具体的な課題とその解決方法の情報交流を行っていただくイベントです。当日は、8 社の企業様にご参加いただき、コンテナのユースケースや運用上の課題について情報交換やディスカッションが行われました。

Read More

AWS Copilot によるコンテナアプリケーションの自動デプロイ

本投稿は Nathan Peck による記事を翻訳したものです アプリケーションをアイデアから人々に触ってもらえる実装に落とし込むのは複数のステップを含むプロセスです。設計が固まりコードが書かれると、どうやってそのアプリケーションをデプロイし、ユーザーのもとに届けるかというのが次のチャレンジとなります。その実現方法の1つが Docker コンテナを利用することであり、AWS Copilot のようなコンテナを実行するためのインフラストラクチャを自動的に構築してくれるようなツールです。もしあなたがまだ AWS Copilot のことをよく知らない場合は、以前のブログ記事「AWS Copilot のご紹介」をお読みいただくとその全体概要を掴んでいただけるかもしれません。 Copilot を利用すると copilot svc deploy のような CLI コマンドを実行することでアプリケーションのビルドやデプロイを実行することができますが、例えば複数の開発者が複数のサービスからなる規模のアプリケーションについて長期的な視点で考えた時には理想的な使い方とは言えません。この記事では、Copilot の基礎的な使い方に基づいてアプリケーションリリースの自動化を進める方法を紹介していきます。そこで、まずはコード変更をリポジトリにプッシュする度にコンテナアプリケーションをビルド、プッシュ、デプロイするという基本的なリリースパイプラインを動かすところから始めます。その後、複数のステージやテストを備え、プロダクションへのリリース前にそのアプリケーションが動作することを確認できるようなベストプラクティスをパイプラインを実装していきます。『本番環境で発見されたバグを修正し、それをユーザーに向けてリリースする』という現実世界のシナリオのウォークスルーが本記事のフィナーレです。 本日のアプリケーション あなたは “String Services” というオンライン文字列操作 API 界のトッププロバイダになることを狙っているスタートアップで働いているとしましょう。ある日、あなたの会社は “reverse.” と呼ばれる文字列操作のサービスを提供していくことを決めます。このサービスはどんな文字列もそのインプットとして受け入れ、逆向きの(reversed)文字列をその結果として返します。あなたの仕事はこの新しいサービスをデプロイし、この API を熱望するお客さまに届けることです。まずは Node.js で書かれたコードを見ていきましょう。 var getRawBody = require(“raw-body”); var http = require(“http”); var server = http.createServer(function (req, res) { getRawBody(req) .then(function (buf) { […]

Read More