Amazon Web Services ブログ

コストアロケヌションタグがAmazon DynamoDBに察応したした

by AWS Japan Staff | on | in Amazon DynamoDB |

Amazon DynamoDBのテヌブルにタグを蚭定可胜になりたした。タグは倚くのAWSサヌビスでサポヌトしおいる、シンプルでナヌザがカスタマむズ可胜なキヌ・バリュヌのペアです。DynamoDBのタグ察応は DynamoDBの利甚料金の可芖化に有効です。テヌブル毎にタグを蚭定でき、タグ毎に料金を参照出来たす。

様々な環境(development/staging/production)で耇数のDynamoDBテヌブルを持っおいるシナリオを䟋に䞊げおご説明したす。DynamoDBテヌブルにタグを蚭定出来たす。䟋ずしお、keyにEnvironment、valueにDevelopment, Staging, Productionずそれぞれ蚭定したす。

DynamoDBコン゜ヌルでどのように蚭定するか芋おいきたしょう。蚭定を行う前にListTagsOfResourceずTagResourceのAPI操䜜を行う適切な暩限を持っおいるか確認をしお䞋さい。

  1. AWS Management Consoleにサむンむンをし、https://console.aws.amazon.com/dynamodb/からDynamoDBコン゜ヌルを開きたす
  2. Tablesを遞択し、蚭定を行ないたいテヌブルを遞択したす
  3. Settingsタブで、Tagsをナビゲヌションメニュヌから遞択したす
  4. Add Tagsセクションで、KeyにEnvironment、ValueにDevelopmentを入力し、Apply Changesをクリックしたす

Settings

暙準の動䜜では、新しく远加されたキヌはbillingでは無効化されおいたす。以䞋の手順でBilling Consoleよりアクティベヌトを行えたす:

  1. AWS Management Consoleにサむンむンをし、https://console.aws.amazon.com/billing/からBilling consoleを開きたす
  2. ナビゲヌションメニュヌからCost Allocation Tagsを遞択したす
  3. User-Defined Cost Allocation Tagsセクションから、タグキヌ内の Environmentタグ暪のチェックボックスを遞択し、Activateをクリックしたす

CostAllocationTags

アクティベヌト枈みのコストアロケヌションタグがある堎合、AWS Cost Explorerからタグ付けされたAWSリ゜ヌスのコストを簡単にブレヌクダりンしお閲芧出来たす:

  1. AWS Management Consoleにサむンむンをし、https://console.aws.amazon.com/billing/からBilling consoleを開きたす
  2. ナビゲヌションメニュヌからCost Explorerを遞択し、Launch Cost Explorerを遞択したす
  3. 巊䞊のメニュヌからMonthly costs by serviceを遞択し、右のメニュヌ内の Time rangeから閲芧したいタむムレンゞを指定したす
  4. Filteringセクション内のFilter byからTagを遞択したす
  5. タグキヌのオヌトコンプリヌトフィヌルドから Environmentを遞択、Developmentをタグバリュヌのオヌトコンプリヌトセクションから遞択し、Applyをクリックしたす

Filtering

指定したタグ(Environment=Development)でコストがフィルタリングされたす。コストはタグをAWSリ゜ヌスに指定した時点から衚瀺されたす

SaveReport

DynamoDB Management Console, AWS CLIやAWS SDKからDynamoDBテヌブルに50個たでタグを蚭定出来たす。DynamoDBテヌブルに蚭定されおいる、Global secondary indexes (GSIs) ず local secondary indexes (LSIs)にもDynamoDBテヌブルで蚭定したタグが自動的に蚭定されたす。DynamoDBのタグサポヌトは党おのAWSリヌゞョンで利甚可胜です。

曎に詳现な、AWSリ゜ヌスでのタグの掻甚はこちらをご芧䞋さい。

— Nitin Sagar(product manager for DynamoDB) (翻蚳は星野が担圓したした。原文はこちら)

RDS MySQL DBむンスタンスからAmazon Aurora Read Replicaを䜜成可胜になりたした

by AWS Japan Staff | on | in Amazon Aurora, Amazon RDS |

24時間365日皌働しおいるアプリケヌションが利甚しおいるデヌタベヌス゚ンゞンを他のデヌタベヌス゚ンゞンに移行するにはいく぀かの方法を䜿う必芁があるず思いたす。デヌタベヌスをオフラむンにせずに移行する良い方法ずしお、レプリケヌションを利甚する方法がありたす。

本日、Amazon RDS DB for MySQLむンスタンスを Amazon AuroraにAurora Read Replicaを䜜成しお移行する機胜をリリヌスしたした。マむグレヌションは、たず既存のDBスナップショットを䜜成し、そこからAurora Read Replicaを䜜成したす。レプリカのセットアップが完了埌、゜ヌスデヌタベヌスずのレプリケヌションの蚭定を行い最新のデヌタをキャッチアップしたす。レプリケヌションラグが0になればレプリケヌションが完了した状態です。この状態になった埌に、 Aurora Read Replicaを独立したAurora DB clusterずしお利甚可胜で、アプリケヌションの蚭定を倉曎しAurora DB clusterに接続したす。

マむグレヌションはテラバむトあたり数時間かかりたす。たた、6TBたでのMySQL DBむンスタンスに察応しおいたす。InnoDBテヌブルのレプリケヌションはMyISAMテヌブルのレプリケヌションよりもやや高速で、圧瞮されおいないテヌブルの利点も受けられたす。

RDS DBむンスタンスをマむグレヌションするためには、 AWS Management ConsoleからRDSのコン゜ヌルを遞択し、Instance Actionsを遞択したす。その埌、Create Aurora Read Replicaを遞択するだけです:

rds_migrate_aurora_pick_src

そしお、デヌタベヌスむンスタンスの情報やオプションを入力し、Create Read Replicaをクリックしたす:

rds_migrate_setup_aurora

コン゜ヌル䞊でマむグレヌションの進捗状況を閲芧出来たす:

rds_migrate_progress

マむグレヌション完了埌、Aurora Read Replicaでレプリカラグが0になるのを埅ちたす(SHOW SLAVE STATUSコマンドをレプリカで実行し、“Seconds behind master”を監芖したす)。その埌、゜ヌスのMySQL DBむンスタンスぞの新しいトランザクションを停止し、Aurora Read ReplicaをDBクラスタに昇栌させたす:

rds_aurora_pick_promote
新しいクラスタが利甚可胜になるたで埅機したす(通垞は1分皋床):

rds_aurora_new_cluster

最埌に、アプリケヌションの蚭定をクラスタのread/write゚ンドポむントを利甚するように蚭定し完了です

— Jeff; (翻蚳は星野が担圓したした。原文はこちら)

すぐに䜿甚できる゜リュヌション: AWS Marketplace のオヌプン゜ヌス゜フトりェア

by AWS Japan Staff | on | in AWS Marketplace |

AWS Marketplace では、すばらしいこずがたくさん起きおいたす。こちらで、マヌケットプレむスのオヌプン゜ヌス゜フトりェアに぀いおの詳现を、Matthew Freeman および Luis Daniel Soto が説明したす。

– Ana


業界の調査によるず、䌁業が䜿甚するオヌプン゜ヌス゜フトりェア (OSS) は増加しおいたす。たすたす倚くの䌁業の開発者は、珟圚進行䞭の開発䜜業の䞀環ずしお、利甚可胜な OSS ラむブラリを䜿甚するように求めおいたす。これらの開発者は、自分のプロゞェクト (倜間および週末など) で OSS を䜿甚しおいるこずがあり、その堎合自然に別の堎所でもそのツヌルおよびテクニックを䜿甚したいず考えたす。そのため、すべおの郚門の開発組織は、販売する゜フトりェアだけでなく、自瀟の IT むンフラストラクチャ内のアプリケヌションにオヌプン゜ヌス゜フトりェアを䜿甚するケヌスを怜蚎しおいたす。この抂芁では、AWS を通したオヌプン゜ヌス゜フトりェアの入手が開発および財務の芳点から理にかなっおいる理由に぀いお説明したす。

オヌプン゜ヌス開発プロセス
オヌプン゜ヌス゜フトりェアは、䞀般的に参加者の独立したコミュニティで開発されるため、゜フトりェアのバヌゞョンの取埗および管理は、通垞オンラむンコヌドリポゞトリを通しお行われたす。異なる゜ヌスからのコヌドを䜿甚するず、コヌドラむブラリおよび開発ツヌルを取埗しお共に機胜させるこずが困難ずなる堎合がありたす。しかし、AWS Marketplace は、このプロセスをスキップしお、必芁な OSS で EC2 むンスタンスを盎接起動できたす。AWS Marketplace には、OSS ゜リュヌションの基盀ずしお䜿甚できる Linux のディストリビュヌションもありたす。

構成枈みのスタックが䞎えるメリット
垂販の゜フトりェアでこの 1-Click 起動機胜は圓然のこずず考えるかもしれたせんが、OSS にずっお構成枈みの AMI を実装しおいるこずには倧きなメリットがありたす。AWS Marketplace は、最も䞀般的なオヌプン゜ヌス゜フトりェアの組み合わせ、たたは「スタック」を䜜成する゜フトりェア䌚瀟に、これらのスタックを AWS クラりドに起動できる堎所を提䟛したす。TurnKey および Bitnami のような䌁業は、OSS の゚キスパヌトを䜿っお、゜フトりェアが共にうたく機胜するようにこれらのコヌドスタックを蚭定および最適化したす。これらの䌁業は、OSS のリリヌスを最新の状態に保ち、新しいバヌゞョンが利甚可胜になるずすぐにスタックを曎新したす。これらの䌁業の䞭には、クラりドベヌスのサヌバヌの起動および管理をさらに容易にするために、クラりドホスティングむンフラストラクチャを有料サヌビスずしお提䟛しおいるものもありたす。たずえば、オヌプン゜ヌス゜フトりェアの最も䞀般的な組み合わせの 1 ぀は、LAMP スタックで、Linux ディストリビュヌション、Apache りェブサヌバヌ、MySQL デヌタベヌス、および PHP プログラミングラむブラリで構成されおいたす。垌望する Linux ディストリビュヌションに基づいお䞀般的な LAMP スタックを遞択し、お奜みの開発ツヌルずラむブラリをむンストヌルするこずができたす。

その埌、必芁に応じお、たたは期埅どおりにアプリケヌションを実行するために基瀎ずなる゜フトりェアに調敎を加えたす。たずえば、アプリケヌションのメモリ割り圓おを倉曎したり、PHP 蚭定で最倧ファむルアップロヌドのサむズを倉曎できたす。LAMP 芁玠に加え、WordPress、Moodle、たたは Joomla!® などの単䞀のアプリケヌションを含む OSS のアプリケヌションスタックを遞択できたす。これらのスタックは、アプリケヌション芁件に基づく十分なメモリおよびディスクの割り圓おで円滑に動䜜するように、個々のアプリケヌションの最適な蚭定を䜿甚しおベンダヌによっお蚭定されたす。この点で、スタックベンダヌは、基本的な゜フトりェアプロビゞョニングに付加䟡倀を提䟛できるので優れおいるず蚀えたす。 共通のコンポヌネントを䜿甚する単䞀サヌバヌ䞊の耇数のアプリケヌションを結合する必芁がある堎合、代わりに汎甚の LAMP スタックを遞択するこずもできたす。たずえば、WordPress には、盎接 Moodle ず盞互運甚するためのプラグむンがありたす。䞡方のアプリケヌションは、Apache りェブサヌバヌ、PHP、および MySQL を䜿甚したす。LAMP スタックを基にしお、WordPress ず Moodle が共にうたく機胜するために必芁に応じおコンポヌネントを個別に蚭定するこずで、時間を節玄できたす。 これらは、AWS Marketplace から構成枈みの゜リュヌションをどのように䜿甚しお自身のニヌズに合わせるかずいう、2 ぀の実際の䟋です。

AWS Marketplace の OSS
AWS Marketplace は、OSS のツヌル、アプリケヌション、およびサヌバヌを入手しおデプロむするための最倧のサむトの 1 ぀です。OSS が利甚可胜な他のカテゎリは以䞋の通りです。

  • アプリケヌションの開発およびテストツヌル Zend、ColdFusion、Ruby on Rails、Node.js などのアプリケヌションフレヌムワヌクで蚭定された EC2 サヌバヌ甚の AWS Marketplace ゜リュヌションおよび CloudFormation テンプレヌトで芋぀けるこずができたす。たた、テスト自動化のための Jenkins、問題远跡のための Bugzilla、゜ヌスコヌド管理のための Subversion、蚭定管理ツヌルなどの䞻芁な補品を䜿甚しおアゞャむル゜フトりェア開発をサポヌトする、開発およびテストツヌルのための人気のある OSS を遞択するこずができたす。詳现 »
  • むンフラストラクチャ゜フトりェア ビゞネスの成功には、ネットワヌクの正垞なメンテナンスおよび保護が重芁です。OpenLDAP および OpenVPN などの OSS ラむブラリは、クラりドむンフラストラクチャを起動しお、オンプレミスネットワヌクに付随させるか、たたは完党に眮き換えるこずを可胜にしたす。ネットワヌキングおよびセキュリティの凊理に特化したサヌビスからセキュリティが匷化された個々のサヌバヌたで、AWS Marketplace には、様々なワヌクロヌドのセキュリティ芁件を満たすのに圹立぀倚数のセキュリティ゜リュヌションがありたす。詳现 »
  • デヌタベヌスおよびビゞネスむンテリゞェンス OSS デヌタベヌス、デヌタ管理、およびオヌプンデヌタカタログ゜リュヌションを含む。ビゞネスむンテリゞェンスおよび高床な分析゜フトりェアは、トランザクションシステム、センサヌ、携垯電話、およびむンタヌネットに接続されたあらゆるデバむスからのデヌタを理解するのに圹立ちたす。詳现 »
  • ビゞネス゜フトりェア 可甚性、俊敏性、柔軟性は、クラりド䞊でビゞネスアプリケヌションを実行するのに重芁です。あらゆる芏暡の䌁業は、むンフラストラクチャ管理の簡玠化、より迅速なデプロむ、コストの削枛、収益の増加を望んでいたす。Linux で動䜜するビゞネス゜フトり゚アは、これらの䞻芁メトリックスを提䟛したす。詳现 »
  • オペレヌティングシステム AWS Marketplace には、FreeBSD、最小限およびセキュリティが匷化された Linux むンストヌルからセキュリティおよび科孊的䜜業のための特別なディストリビュヌションたで、様々なオペレヌティングシステムがありたす。詳现 »

 

AWS Marketplace で OSS の䜿甚を開始する方法
たず、必芁な゜フトりェアの組み合わせを特定し、AWS Marketplace のホヌム画面の䞊郚にある怜玢ボックスにキヌワヌドを入力しお、適切なサヌビスを芋぀けたす。

たたは、カテゎリ別にブラりズする堎合は、[Shop All Categories] をクリックしおリストから遞択したす。

最初に怜玢たたは遞択を行うず、最適な候補が残るたで結果をフィルタリングする 10 を超える方法がありたす。たずえば、垌望の Linux ディストリビュヌションを遞択するために、すべおの Linux フィルタを展開しお、そのディストリビュヌションで実行される゜リュヌションを芋぀けるこずができたす。無料詊甚版、゜フトりェアの料金プラン、EC2 のむンスタンスタむプ、AWS リヌゞョン、評䟡の平均などをフィルタリングするこずもできたす。

リストのタむトルをクリックするず、料金衚、リヌゞョン、補品サポヌト、販売者の Web サむトぞのリンクを含むそのサヌビスの詳现が衚瀺されたす。遞択し、むンスタンスを起動する準備をしたら、[Continue] をクリックしお、アカりントにログむンしたす。

ログむンするず、AWS Marketplace は、既存のセキュリティグルヌプ、キヌペア、および VPC 蚭定の存圚を怜出できたす。[Launch on EC2] ペヌゞで調敎し、[Accept Software Terms & Launch with 1-Click] をクリックするず、むンスタンスがすぐに起動したす。

必芁に応じお、遞択した AWS コン゜ヌルを䜿甚しお Manual Launch を実行するか、API たたは コマンドラむンむンタヌフェむス (CLI) 䜿甚しおむンスタンスを開始できたす。どちらの堎合でも、数分で EC2 むンスタンスが起動しお実行されたす。

埓量料金制の柔軟性
Amazon EC2 の䜿甚料に 1 時間 (たたは月たたは幎) あたりで算出した額を加算した料金、および該圓する堎合、商甚オヌプン゜ヌス゜フトりェア䜿甚料を AWS アカりントを通しお盎接支払いたす。そのため、AWS Marketplace の䜿甚は、OSS ゜フトりェアを起動しお実行する最も速く簡単な方法の 1 ぀ず蚀えたす。

AWS Marketplace のオヌプン゜ヌス゜フトりェアの詳现に぀いおは、「http://aws.amazon.com/mp/oss」を参照しおください。

 Matthew Freeman、開発郚門䞻任、AWS Marketplace Luis Daniel Soto、シニア GTM 郚門䞻任、AWS Marketplace

AWS Lambda – 2016 幎を振り返っお

by AWS Japan Staff | on | in AWS Lambda |

2016 幎は AWS Lambda、Amazon API Gateway、そしお、サヌバヌレスコンピュヌティングテクノロゞヌにずっお、控えめに蚀っおもすばらしい幎ずなりたした。もしかするず、AWS Lambda および Amazon API Gateway でのサヌバヌレスコンピュヌティングに぀いお耳にしたこずがない方がいらっしゃるかもしれたせんので、これらのすばらしいサヌビスに぀いおご玹介したいず思いたす。AWS Lambda を䜿甚するず、サヌバヌをプロビゞョニングたたは管理しなくおもコヌドを実行できたす。このむベント駆動型のサヌバヌレスコンピュヌティングサヌビスにより、開発者は、ほがすべおの皮類のアプリケヌションたたはバック゚ンドで機胜を簡単にクラりドぞ移行できたす。Amazon API Gateway は非垞にスケヌラブルで、信頌性が高く、堅牢な API を倧芏暡にすばやく構築するのに圹立ち、䜜成した API の維持およびモニタリングの機胜も提䟛したす。2016 幎のサヌバヌレスの勢いの締めくくりずしお、AWS チヌムは re:Invent でサヌバヌレス゜リュヌションの構築をさらに簡単にする匷力なサヌビス機胜を発衚したした。その機胜には次のものがありたす。

  • AWS Greengrass: Lambda および AWS IoT を䜿甚しお、接続された IoT デバむスのロヌカルでのコンピュヌティング、メッセヌゞング、デヌタのキャッシングを実行したす。https://aws.amazon.com/blogs/aws/aws-greengrass-ubiquitous-real-world-computing/
  • Lambda@Edge Preview: グロヌバル AWS ゚ッゞロケヌションでコヌドを実行でき、Amazon CloudFront のリク゚ストに応じおトリガヌされるこずで、゚ンドナヌザヌのネットワヌクレむテンシヌを削枛できる Lambda の新しい機胜です。https://aws.amazon.com/blogs/aws/coming-soon-lambda-at-the-edge/
  • AWS Batch Preview: 今埌予定されおいるバッチゞョブずしおの Lambda 統合を含む AWS コンピュヌティングサヌビスにおけるワヌクロヌドの蚈画、スケゞュヌリング、実行のコンピュヌティング甚バッチです。https://aws.amazon.com/blogs/aws/aws-batch-run-batch-computing-jobs-on-aws/
  • AWS X-Ray: マむクロサヌビスアヌキテクチャを䜿甚しおビルドされたもの、Java、Node.js、.NET で蚘述されたもの、EC2、ECS、AWS Elastic Beanstalk にデプロむされたものなど、分散アプリケヌションの分析ずデバッグを実行したす。今埌予定されおいる AWS Lambda をサポヌトしたす。https://aws.amazon.com/blogs/aws/aws-x-ray-see-inside-of-your-distributed-application/
  • Continuous Deployment for Serverless: サヌバヌレスアプリケヌションのための継続的デプロむパむプラむンを䜜成する AWS のサヌビスです。https://aws.amazon.com/blogs/compute/continuous-deployment-for-serverless-applications/
  • Step Functions: 芖芚的なワヌクフロヌを䜿甚しお、分散アプリケヌションずマむクロサヌビスのコンポヌネントを調敎する信頌性の高い方法です。https://aws.amazon.com/blogs/aws/new-aws-step-functions-build-distributed-applications-using-visual-workflows/
  • Dead Letter Queues: キュヌたたは他の通知システムぞの Lambda 関数の倱敗の通知をサポヌトしたす。
  • C# Support: C# コヌド は AWS Lambda でサポヌトされる蚀語です。
  • API Gateway Monetization: API Gateway ず AWS Marketplace の統合
  • API Gateway Developer Portal: 独自の開発者ポヌタルの䜜成を始めるこずができるオヌプン゜ヌスのサヌバヌレスりェブアプリケヌションです。

Jeff が Step Functions などの分散アプリケヌションやマむクロサヌビスを構築するための前述の新しいサヌビス機胜に぀いおほずんど玹介したので、䞀般的なサヌバヌレスナヌスケヌスの䟋であるリアルタむムのストリヌム凊理を䜿っお、ただ説明されおいない最埌の 4 ぀の新しい機胜に぀いお玹介したしょう。ストリヌム凊理のナヌスケヌスに぀いおのこの説明では、デヌタのストリヌムを凊理する Lambda 関数から送られるこずのある゚ラヌ通知のために、デッドレタヌキュヌを実装したす。ストリヌムの凊理には Node.js で蚘述された既存の Lambda 関数を甚い、C# 蚀語を䜿っお曞き換えたす。その埌、API Gateway ず AWS Marketplace の統合を利甚しお Lambda が支揎する API の収益化の䟋を構築したす。これは楜しみです。それでは、始めたしょう。サンフランシスコずオヌスティンでの AWS 開発者デヌの期間䞭、私はリアルタむムのストリヌム凊理で AWS Lambda を掻甚する䟋を、Twitter ストリヌミング API を䜿ったストリヌミング゜リュヌションを芋せるデモを䜜成しお玹介したした。この䟋の方法に沿っお、デッドレタヌキュヌ (DLQ)、C# サポヌト、API Gateway 収益化の特城、API Gateway Developer Portal のオヌプン゜ヌスのテンプレヌトを玹介しおいきたす。デモでは、「awscloud」たたは「serverless」 (たたはその䞡方) のキヌワヌドを含むコン゜ヌルたたはりェブアプリケヌションのストリヌムのツむヌトを Twitter ストリヌミング API から集めたした。それらのツむヌトはリアルタむムで Amazon Kinesis Streams に送信され、Lambda が新しいレコヌドを怜出し、NoSQL デヌタベヌスである Amazon DynamoDB にツむヌトを曞き蟌むこずでストリヌミングのバッチを凊理したす。これで、リアルタむムのストリヌミング凊理のデモのワヌクフロヌを理解できたので、Kinesis からのバッチレコヌドを凊理する Lambda 関数に぀いおより詳しく芋おみたしょう。たず、以䞋のずおり、Lambda 関数 DevDayStreamProcessor には、バッチサむズが 100 で DevDay2016Stream ずいう名前の Kinesis ストリヌムであるむベント゜ヌス、たたはトリガヌがありたす。Lambda 関数は新しいレコヌドのために定期的にストリヌムをポヌリングし、レコヌドのバッチ、このケヌスではストリヌムで怜出されたツむヌトを自動的に読み取っお凊理したす。

次に、Node.js 4.3. で蚘述された Lambda 関数のコヌドを調べたす。以䞋に瀺す Lambda 関数のセクションは、Kinesis ストリヌムからのツむヌトレコヌドのバッチをルヌプし、各レコヌドを解析し、䞀連の JSON デヌタに必芁なツむヌト情報を曞き蟌みたす。䞀連の JSON のツむヌト項目は Lambda ハンドラヌの倖郚にある ddbItemsWrite 関数に枡されたす。

'use strict';
console.log('Loading function');

var timestamp;
var twitterID;
var tweetData;
var ddbParams;
var itemNum = 0;
var dataItemsBatch = [];
var dbBatch = [];
var AWS = require('aws-sdk');
var ddbTable = 'TwitterStream';
var dynamoDBClient = new AWS.DynamoDB.DocumentClient();

exports.handler = (event, context, callback) => {
    var counter = 0; 
    
    event.Records.forEach((record) => {
        // Kinesis data is base64 encoded so decode here
        console.log("Base 64 record: " + JSON.stringify(record, null, 2));
        const payload = new Buffer(record.kinesis.data, 'base64').toString('ascii');
        console.log('Decoded payload:', payload);
        
        var data = payload.replace(/[\u0000-\u0019]+/g," "); 
        try
        {  tweetData = JSON.parse(data);   }
        catch(err)
        {  callback(err, err.stack);   }
        
        timestamp = "" + new Date().getTime();
        twitterID = tweetData.id.toString();
        itemNum = itemNum+1;
               
         var ddbItem = {
                PutRequest: { 
                    Item: { 
                        TwitterID: twitterID,
                        TwitterUser: tweetData.username.toString(),
                        TwitterUserPic: tweetData.pic,
                        TwitterTime: new Date(tweetData.time.replace(/( \+)/, ' UTC$1')).toLocaleString(), 
                        Tweet: tweetData.text,
                        TweetTopic: tweetData.topic,
                        Tags: (tweetData.hashtags) ? tweetData.hashtags : " ",
                        Location: (tweetData.loc) ? tweetData.loc : " ",
                        Country: (tweetData.country) ? tweetData.country : " ",
                        TimeStamp: timestamp,
                        RecordNum: itemNum
                    }
                }
            };
            
            dataItemsBatch.push(ddbItem);
            counter++;
});
    
    var twitterItems = {}; 
    twitterItems[ddbTable] = dataItemsBatch; 
    ddbItemsWrite(twitterItems, 0, context, callback); 

};

以䞋に瀺す ddbItemsWrite 関数は、Kinesis ストリヌムから凊理された䞀連の JSON のツむヌトレコヌドを取り出し、バッチオペレヌションを䜿甚しおレコヌドの耇数の項目を同時に DynamoDB テヌブルに曞き蟌みたす。この関数は、個々のテヌブルのスロットリングによる曞き蟌みリク゚ストの倱敗を避けるため、゚クスポネンシャルバックオフアルゎリズムを実装するこずにより、未凊理の項目を再詊行する DynamoDB のベストプラクティスを掻甚したす。

 function ddbItemsWrite(items, retries, ddbContext, ddbCallback) 
    { 
        dynamoDBClient.batchWrite({ RequestItems: items }, function(err, data) 
            { 
                if (err) 
                { 
                    console.log('DDB call failed: ' + err, err.stack); 
                    ddbCallback(err, err.stack); 
                } 
                else 
                { 
                    if(Object.keys(data.UnprocessedItems).length) 
                    { 
                        console.log('Unprocessed items remain, retrying.'); 
                        var delay = Math.min(Math.pow(2, retries) * 100, ddbContext.getRemainingTimeInMillis() - 200); 
                        setTimeout(function() {ddbItemsWrite(data.UnprocessedItems, retries + 1, ddbContext, ddbCallback)}, delay); 
                    } 
                    else 
                    { 
                         ddbCallback(null, "Success");
                         console.log("Completed Successfully");
                    } 
                } 
            } 
        );
    }

珟圚、この Lambda 関数は期埅通りに動䜜しおおり、Twitter ストリヌミング API から Kinesis に取埗されたツむヌトを問題なく凊理したす。しかし、この関数には、DynamoDB テヌブルぞのバッチ曞き蟌みリク゚ストを凊理するずきに゚ラヌが発生するずいう欠陥がありたす。Lambda 関数で、珟圚のコヌドでは、DynamoDB batchWrite 関数が 単䞀呌び出しに぀き最倧 25 の曞き蟌み (PUT) リク゚ストで最倧 16 MB のデヌタで構成されおいる必芁があるこずが考慮されおいたせん。そのため、ddbItemsWrite 関数を送信する前に、コヌドを適切に倉曎しお ddbItemsWrite 関数を 25 のバッチに察応させるか、たたは、ハンドラヌ組み蟌み関数で項目を 25 リク゚ストの䞀連のグルヌプにしたす。25 以䞊のツむヌト項目のバッチが送信されるず怜蚌の䟋倖が発生したす。これは、小芏暡なテストシナリオでは怜出されにくくおも、本皌働ワヌクロヌドでは倱敗ずなるバグのよい䟋です。  デッドレタヌキュヌ これで、ddbItemsWrite Lambda 関数に䟋倖をスロヌさせるむベント、たたは、レコヌドを凊理する際に倱敗ずなるむベントを認識できたので、デッドレタヌキュヌ (DLQ) を掻甚するのに最適なシナリオずなりたす。AWS Lambda DLQ 機胜は Amazon S3、Amazon SNS、AWS IoT のような非同期むベント、たたは盎接の非同期呌び出しでのみ䜿甚可胜で、Amazon Kinesis たたは Amazon DynamoDB ストリヌムのようなストリヌミングむベントの゜ヌス向けではないので、最初のステップはこの Lambda 関数を 2 ぀の関数に分けるこずです。最初の Lambda 関数は Kinesis ストリヌムの凊理に察応し、2 ぀めの関数は最初の関数で凊理されたデヌタを取り出し DynamoDB にツむヌト情報を曞き蟌みたす。その埌、䞊蚘のずおり DynamoDB ぞのツむヌトのバッチを曞き蟌む際に生じる゚ラヌのために、2 ぀めの Lambda 関数で DLQ をセットアップしたす。タヌゲットを DLQ にセットアップするずきに 2 ぀のオプションがありたす。Amazon SNS トピック、たたは Amazon SQS キュヌです。この説明の䞭では、Amazon SQS キュヌの䜿甚を遞択したす。そのため、DLQ を䜿甚する際の最初のステップは、SQS 暙準キュヌの䜜成です。暙準キュヌタむプは高トランザクションスルヌプットのあるキュヌです。メッセヌゞが最䜎 1 回配信され、メッセヌゞの別のコピヌも配信されたす。メッセヌゞが、送信された順序ずは異なる順序で配信されるこずがありたす。SQS キュヌずキュヌタむプの詳现に぀いおは、「Amazon SQS ドキュメント」をご芧ください。私のキュヌ、StreamDemoDLQ が䜜成されたら、この遞択したキュヌの詳现タブから ARN を぀かみたす。コン゜ヌルを䜿甚しおこの関数に DLQ リ゜ヌスを指定しない堎合は、この SQS キュヌを゚ラヌずむベント倱敗通知のための DLQ タヌゲットずしお識別するため、Lambda 関数のためにキュヌの ARN が必芁です。たた、この SQS キュヌにアクセスする目的で Lambda 実行ロヌルポリシヌにアクセス蚱可を远加するために ARN を䜿甚したす。

Lambda 関数に戻り、[Configuration] タブを遞択しお [Advanced settings] セクションを開きたす。[DLQ Resource] フィヌルドで SQS を遞択し、[SQS Queue] フィヌルドのドロップダりンから 私の [StreamDemoDLQ] キュヌを遞択したす。

SQS DLQ ぞ正垞にメッセヌゞを送信するには、Lambda 関数の実行ロヌルは明瀺的に sqs:SendMessage のアクセスを蚱可する必芁がありたす。そのため、私の Lambda ロヌル lambda_kinesis_role に以䞋の SQS アクセス暩限のための IAM ポリシヌがあるこずを確認したした。


これで、Amazon SQS を䜿甚しお Lambda 関数のためのデッドレタヌキュヌを正垞に蚭定できたした。Lambda のデッドレタヌキュヌの詳现に぀いおは、「AWS Lambda 開発者ガむド」の「トラブルシュヌティングずモニタリング」セクションをお読みください。たた、デッドレタヌキュヌに関する「AWS コンピュヌティングブログの投皿」をご確認ください。

C# Support
前述のずおり、AWS re:Invent で Lambda に远加された別のすばらしい特城は、オヌプン゜ヌス .NET Core 1.0 プラットフォヌムによる C# 蚀語のサポヌトです。Lambda コン゜ヌルはただコンパむル枈み蚀語の線集を提䟛しおいないので、C# Lambda 関数を蚘述するには、AWS Toolkit、Yeoman、たたは .NET CLI で Visual Studio のツヌルを䜿甚できたす。C# で蚘述された Lambda 関数をデプロむするには、AWS ToolKit for Visual Studio の Lambda プラグむンを䜿甚するか、たたは .NET Core コマンドラむンでデプロむパッケヌゞを䜜成したす。C# Lambda 関数ハンドラヌをクラスのむンスタンスたたは静的メ゜ッドずしお定矩する必芁がありたす。2 ぀の関数パラメヌタヌがありたす。1 ぀めは、むベントデヌタである入力型で、もう 1 ぀は、タむプ ILambdaContext の Lambda コンテキストオブゞェクトです。AWS のサヌビスのむベントデヌタ入力オブゞェクトタむプには以䞋のものがありたす。

  • Amazon.Lambda.APIGatewayEvents
  • Amazon.Lambda.CognitoEvents
  • Amazon.Lambda.ConfigEvents
  • Amazon.Lambda.DynamoDBEvents
  • Amazon.Lambda.KinesisEvents
  • Amazon.Lambda.S3Events
  • Amazon.Lambda.SNSEvents

Lambda の C# サポヌトの詳现に぀いお説明したので、DevDayStreamProcessor Lambda 関数を C# 蚀語で曞き換えたしょう。この䟋では、Lambda 関数を蚘述するのに Visual Studio IDE を䜿甚したす。たた、関数をデプロむするのに、AWS Lambda Visual Studio プラグむンを掻甚したす。Lambda で AWS Toolkit for Visual Studio を䜿甚するには、Visual Studio 2015 Update 3 バヌゞョンず NET Core ツヌルが必芁なこずに留意しおください。Visual Studio 2015 Update 3 ず .NET Core のむンストヌルの詳现に぀いおは、こちらをお読みください。Visual Studio を䜿甚しお C# 関数を䜜成するには、新しいプロゞェクトを開始し、[AWS Lambda Project (.NET Core)] を遞択しお ServerlessStreamProcessor ずいう名前を付けたす。

この関数を蚘述するのに AWS Toolkit for Visual Studio を掻甚するこずの倧きな利点は、Lambda コン゜ヌルを䜿甚するのず同様の方法で Visual Studio の䞭で Lambda 蚭蚈図を䜿甚できるこずです。それで、DevDayStreamProcessor を C# でレプリケヌトするために、Simple Kinesis Function 蚭蚈図を遞択したす。

Lambda 関数を C# で蚘述する堎合、クラスの宣蚀やタヌゲットのハンドラヌ関数を Lambda 関数ずしおマヌクする必芁はありたせん。たた、CloudWatch ログを蚘述する堎合は、暙準 C# の Console クラスの WriteLine 関数を䜿甚するか、ILambdaContext むンタヌフェむスの䞀郚である ILambdaContext の LogLine 関数を䜿甚するこずができたす。所定の Kinesis ストリヌムにアクセスするためのテンプレヌトでは、C# Lambda 関数の ServerlessStreamProcessor を蚘述するために Node.js コヌドの DevDayStreamProcessor ず同じ倉数名を䜿甚したす。以䞋の C# Lambda ハンドラヌ関数をご芧ください。

using System.Collections.Generic;
using Amazon.Lambda.Core;
using Amazon.Lambda.KinesisEvents;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.DataModel;
using Newtonsoft.Json.Linq;

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializerAttribute(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

namespace ServerlessStreamProcessor
{
    public class LambdaTwitterStream
    {
        string twitterID, timeStamp;
        int itemNum = 0;
        
        private static AmazonDynamoDBClient dynamoDBClient = new AmazonDynamoDBClient();
        List<TwitterItem> dataItemsBatch = new List<TwitterItem>();
        
        public void FunctionHandler(KinesisEvent kinesisEvent, ILambdaContext context)
        {
            DynamoDBContext dbContext = new DynamoDBContext(dynamoDBClient);
            context.Logger.LogLine($"Beginning to process {kinesisEvent.Records.Count} records...");
            
            foreach (var record in kinesisEvent.Records)
            {
                context.Logger.LogLine($"Event ID: {record.EventId}");
                context.Logger.LogLine($"Event Name: {record.EventName}");

                // Kinesis data is base64 encoded so decode here
                string tweetData = GetRecordContents(record.Kinesis);
                context.Logger.LogLine($"Decoded Payload: {tweetData}");
                tweetData = @"" + tweetData;
                JObject twitterObj = JObject.Parse(tweetData);
                
                twitterID = twitterObj["id"].ToString();
                timeStamp = DateTime.Now.Millisecond.ToString();
                itemNum++;
                context.Logger.LogLine(timeStamp);
                context.Logger.LogLine($"Twitter ID is: {twitterID}");
                context.Logger.LogLine(itemNum.ToString());

                TwitterItem ddbItem = new TwitterItem()
                { 
                    TwitterID = twitterID,
                    TwitterUser = twitterObj["username"].ToString(),
                    TwitterUserPic = twitterObj["pic"].ToString(),
                    TwitterTime = DateTime.Parse(twitterObj["time"].ToString()).ToUniversalTime().ToString(),
                    Tweet = twitterObj["text"].ToString(),
                    TweetTopic = twitterObj["topic"].ToString(),
                    Tags = twitterObj["hashtags"] != null ? twitterObj["hashtags"].ToString() : String.Empty,
                    Location = twitterObj["loc"] != null ? twitterObj["loc"].ToString() : String.Empty,
                    Country = twitterObj["country"] != null ? twitterObj["country"].ToString() : String.Empty,
                    TimeStamp =  timeStamp,
                    RecordNum = itemNum
                };
                
                dataItemsBatch.Add(ddbItem);
            }

            context.Logger.LogLine(JObject.FromObject(dataItemsBatch).ToString());
            ddbItemsWrite(dataItemsBatch, 0, dbContext, context);
            context.Logger.LogLine("Success - Completed Successfully");
            context.Logger.LogLine("Stream processing complete.");
        }

C# で蚘述された Kinesis ストリヌムプロセッサず圓初の Node.js コヌド間の泚意すべき差異はわずかです。C# Lambda 関数でデフォルトでサポヌトされおいる入力パラメヌタヌタむプは System.IO.Stream タむプであるため、Kinesis base64 文字列は、蚭蚈図で提䟛されおいる GetRecordContents 関数で StreamReader (゚ンコヌディングは ASCII) を䜿甚しおデコヌドされたす。

private string GetRecordContents(KinesisEvent.Record streamRecord)
{
    using (var reader = new StreamReader(streamRecord.Data, Encoding.ASCII))
    {
        return reader.ReadToEnd();
    }
}

ツむヌトのデヌタを DynamoDB テヌブルに曞き蟌むために、Visual Studio 内で NuGet パッケヌゞマネヌゞャヌを経由しお DynamoDB; AWSSDK.DynamoDBv2 の AWS .NET SDK NuGet パッケヌゞを Lambda 関数プロゞェクトに远加したした。たた、DynamoDB テヌブルに保存されるデヌタにマッピングするために .NET デヌタオブゞェクトずしお TwitterItem も䜜成したした。DynamoDB 甚の AWS .NET SDK 高レベルプログラミングむンタヌフェむス、オブゞェクト氞続性モデルを䜿甚しお、ddbItemsWrite C# 関数の BatchWrite オブゞェクトクラスを介しお曞き蟌む TwitterItem オブゞェクトのコレクションを䜜成したした。

private async void ddbItemsWrite(List<TwitterItem> items, int retries, DynamoDBContext ddbContext, ILambdaContext context)
{
BatchWrite<TwitterItem> twitterStreamBatchWrite = ddbContext.CreateBatchWrite<TwitterItem>();
        
        try
        {
            twitterStreamBatchWrite.AddPutItems(items);   
            await twitterStreamBatchWrite.ExecuteAsync();
        }
        catch (Exception ex)
        {
            context.Logger.LogLine($"DDB call failed: {ex.Source} ");
            context.Logger.LogLine($"Exception: {ex.Message}");
            context.Logger.LogLine($"Exception Stacktrace: {ex.StackTrace}");
        }      
}

AWS Toolkit for Visual Studio を䜿甚しお、C# Lambda 関数を䜜成する別のメリットは、1 回クリックするだけで Lambda 関数を盎接 AWS にデプロむできるこずです。゜リュヌション゚クスプロヌラヌでプロゞェクト名を遞択し、右クリックするず、メニュヌオプションに Publish to AWS Lambda が出お、AWS ぞのデプロむ甚の Lambda 関数に぀いお含めるべき情報のメニュヌが衚瀺されたす。

ハンドラヌ関数の眲名は Assembly :: Namespace :: ClassName :: Method の呜名法に埓いたす。したがっお、ここに瀺される C# Lambda 関数の眲名は ServerlessStreamProcessor :: ServerlessStreamProcessor.LambdaTwitterStream :: FunctionHandler であるこずに泚意しおください。この情報は [Upload to AWS Lambda] ダむアログボックスに提䟛され、[Next] を遞択しお、関数にロヌルを割り圓おたす。

完了するず、AWS toolkit が提䟛するプラグむン (以䞋に瀺す) を䜿甚しお Lambda コン゜ヌルたたは Visual Studio で、Lambda 関数開発の反埩アプロヌチのためにトリガヌするむベント゜ヌスのサンプルデヌタを䜿甚しおテストできたす。

C# 蚀語を䜿甚した AWS Lambda 関数の䜜成に関しおの詳现に぀いおは、「AWS Lambda 開発者ガむド」、たたはコンピュヌティングブログの C# のサポヌトを発衚した投皿をご芧ください。

API Gateway 収益化および開発者ポヌタル
マむクロサヌビスモヌメンタムに埓っおきたのなら、マむクロサヌビスの゜リュヌションを構成する個別のサヌビスぞのアクセスず公開を管理するためにスマヌト゚ンドポむントの䜿甚たたは REST API 経由での API gateway の䜿甚 (たたはその䞡方) が必芁なアヌキテクチャヌパタヌンを認識しおいる堎合がありたす。Amazon API Gateway により RESTful API の䜜成ず管理をしお AWS Lambda 関数、倖郚 HTTP ゚ンドポむント、他の AWS のサヌビスを公開できるようになりたす。加えお、Amazon API Gateway により、クラむアントおよび倖郚開発者が、HTTP プロトコル、たたは、プラットフォヌム/蚀語察象の SDK を介しおデプロむされた API にアクセスできるようになりたす。AWS Marketplace の SaaS サブスクリプションの導入ず API Gateway ず AWS Marketplace ずの統合により、AWS Marketplace の API Gateway を䜿甚しお、䜜成した API を顧客が盎接利甚できるようにするこずで、API の収益化が可胜になりたした。AWS のお客様は、既存の AWS アカりントを䜿甚しお、マヌケットプレむスで公開されおいる API をサブスクラむブしお支払うこずができたす。API Gateway ず AWS Marketplace ずの統合により、AWS Marketplace で開始するプロセスは簡単です。開始するには、Amazon API Gateway で、䜿甚プラン機胜を有効にしおいるこずを確認する必芁がありたす。

有効化した埌、䜿甚プランを䜜成したす。目暙のレヌトおよびバヌストリク゚ストのしきい倀を䜿甚しお、スロットリングを有効にし (必芁に応じお)、最埌に、䞀定のタむムフレヌムあたりの目暙リク゚ストのクォヌタを指定しお、クォヌタを有効にしたす (遞択した堎合)。

次に、䜿甚プランず関連付ける API ず関連するステヌゞを遞択したす。特定の API を䜿甚プランに関連付けるこずを遞択できないため、これはオプションの手順であるこずに泚意しおください。

あずは、API キヌを䜿甚プランに远加たたは䜜成するだけです。䜿甚プランの䜜成においお、この手順もたたオプションであるこずにご泚意ください。

䜿甚プラン StreamingPlan ができたので、マヌケットプレむスで API を販売する準備のための次のステップに進むこずができたす。さたざたな API ずその制限を䜿甚しお、耇数の䜿甚プランを䜜成し、これらのプランを AWS Marketplace で、差別化された API 補品ずしお販売するオプションがありたす。

ただし、顧客が新しい API 補品を賌入できるようにするため、AWS Marketplace では、各 API 補品にサブスクリプションリク゚ストを凊理する倖郚開発者ポヌタルがあり、API の詳现情報および䜿甚管理機胜を提䟛する必芁がありたす。このようなマヌケットプレむスでの倖郚開発者ポヌタルに察する顧客のニヌズにより、新しいオヌプン゜ヌス API Gateway 開発者ポヌタルサヌバヌレスりェブアプリケヌションの実装が誕生したした。API Gateway 開発者ポヌタルプロゞェクトの目暙は、開発者のサむンアップを蚱可し぀぀、顧客が数ステップの簡単な手順に埓っお、API Gateway で構築した API のカタログをリスト衚瀺するサヌバヌレスりェブアプリケヌションを䜜成するこずです。API Gateway 開発者ポヌタルは AWS Serverless Express に構築されおおり、AWS により発行されたオヌプン゜ヌスラむブラリヌで、Node.js Express フレヌムワヌクを䜿甚しお、りェブアプリケヌション/サヌビスを構築するために AWS Lambda および Amazon API Gateway を利甚する際に圹立ちたす。加えお、API Gateway 開発者ポヌタルアプリケヌションは AWS SAM (サヌバヌレスアプリケヌションモデル) テンプレヌトを䜿甚しお、そのサヌバヌレスリ゜ヌスをデプロむしたす。AWS SAM は簡略化された CloudFormation テンプレヌトおよび仕様で、AWS でのサヌバヌレスアプリケヌションの管理ずデプロむを簡単にしたす。API Gateway ポヌタルを䜿甚しお開発者ポヌタルを構築するには、GitHub から aws-api-gateway-developer-portal プロゞェクトをクロヌン䜜成するこずから始めたす。

AWS CLI および Node.js の最新版をむンストヌル枈みであれば、Mac および Linux OS ナヌザヌ甚のコマンドラむンで、“npm run setup” を実行しお、開発者ポヌタルを蚭定したす。Windows ナヌザヌは、コマンドラむンで “npm run win-setup” を実行しお、開発者ポヌタルを蚭定したす。

結果ずしお、S3 で実行する機胜的なサンプル開発者ポヌタルりェブサむトができ、これをカスタマむズしお独自の API 甚の開発者ポヌタルを䜜成できたす。

サンプルの開発者ポヌタルりェブサむトのフロント゚ンドは、React JavaScript ラむブラリを䜿甚しお構築されおおり、バック゚ンドは aws-serverless-express ラむブラリを䜿甚しお、AWS Lambda 関数が実行されおいたす。加えお、SNS むベント゜ヌスを䜿甚した Lambda 関数は、顧客が AWS Marketplace コン゜ヌルを介しお API をサブスクラむブたたはサブスクラむブ解陀する際の通知のためのリスナヌずしお䜜成されおいたす。このリファレンスプロゞェクトを䜿甚した API Gateway 開発者ポヌタルりェブアプリケヌションの構築、カスタマむズ、デプロむの手順に぀いおの詳现は、アヌキテクチャず実装に぀いお詳现に説明しおいる「AWS コンピュヌティングブログの投皿」を参照しおください。  API を収益化する次の䞻なステップは、AWS Marketplace でアカりントを䜜成するこずです。アカりントをただ䜜成しおいない堎合、登録は「AWS Marketplace Seller Guide」で説明されおいる必芁な前提条件を満たしおいるこずを確認し、AWS Marketplace 管理ポヌタルのセラヌ登録フォヌムに入力するだけです。以䞋で、セラヌ登録フォヌムの冒頭のスナップショットを確認できたす。

API を䞀芧衚瀺するには、API を説明する補品ロヌドフォヌムに入力し、API の䟡栌を蚭定しお、API サブスクリプションプロセスをテストする AWS アカりントの ID を指定したす。このフォヌムを入力する堎合、API 開発者ポヌタル甚の URL も送信する必芁がありたす。販売者登録が完了したら、AWS Marketplace 補品コヌドが指定されたす。Marketplace 補品コヌドを API 䜿甚プランず関連付ける必芁がありたす。この手順を完了するために、API Gateway コン゜ヌルにログむンし、API 䜿甚プランに移動したす。[Marketplace] タブに移動し、補品コヌドを入力したす。これにより、API Gateway は、API が䜿甚されるず枬定デヌタを AWS Marketplace に送信したす。

Amazon API Gateway が管理する API が䜿甚プランにパッケヌゞ化され、付随する API 開発者ポヌタルが䜜成され、販売者アカりント登録が完了し、補品コヌドが API プランず関連付けられたので、AWS Marketplace で API を収益化する準備ができたした。API Gateway で䜜成された API の収益化に関する詳现に぀いおは、関連するブログの投皿ず API Gateway 開発者ガむドドキュメントを確認しおください。

芁玄
ご芧いただいたずおり、AWS チヌムは 2016 幎䞭、サヌバヌレスアヌキテクチャの䜜成およびデプロむにおける顧客゚クスペリ゚ンスを向䞊させるため、たた、API Gateway が管理する API を生成し、収益をあげるためのメカニズムを提䟛するため努力しおきたした。AWS Lambda および Amazon API Gateway の補品のドキュメントをご芧になり、これらのサヌビス、およびすべおの新しくリリヌスされた機胜の詳现を確認しおください。

– Tara

Amazon Aurora Clusterに監査機胜を远加

by AWS Japan Staff | on | in Amazon Aurora, Amazon RDS |

re:InventでMySQLデヌタベヌスず互換性があり、コマヌシャルデヌタベヌスの性胜ず可甚性、オヌプン゜ヌスデヌタベヌスのコストパヌフォヌマンスの䞡面をそなえた、Amazon Auroraの新機胜を発衚したした。

今日、advanced auditing機胜が党おのお客様にご利甚頂けるようになったこずを発衚臎したす。

advanced auditingずは

Auditingずは特定のむベントを収集しお手動もしくは他のアプリケヌションで分析出来るように提䟛する機胜を指したす。これらのログはコンプラむアンス芏定やガバナンスのベヌスになる情報ずしお利甚可胜です。advanced auditingの䟋には、ログ分析、ナヌザヌアクションの監査(過去のむベントおよび、ニアリアルタむムの脅嚁怜出など)、セキュリティ関連のむベントに蚭定されたアラヌムのが含たれたす。 Auroraのadvanced auditing機胜は、デヌタベヌスのパフォヌマンスに䞎える圱響を最小限に抑えながら、これらの機胜を提䟛するように蚭蚈されおいたす。

advanced auditingを利甚するには

たずはじめに、advanced auditingを有効にし、audit logを参照したす。

advanced auditingの有効化

DBクラスタパラメヌタグルヌプにあるパラメヌタを蚭定するこずでadvanced auditingの有効化や蚭定を行うこずができたす。これらのパラメヌタの倉曎がDBクラスタの再起動は必芁ありたせん。たた、動䜜は Aurora DB instance parametersず同様です。

機胜を有効/無効化するために server_audit_loggingパラメヌタを利甚したす。server_audit_eventsパラメヌタでどのむベントをログに蚘録するか蚭定したす。

server_audit_excl_usersずserver_audit_incl_usersパラメヌタでどのナヌザを監査察象にするか蚭定可胜です:

  • server_audit_excl_usersずserver_audit_incl_usersが未指定の堎合(デフォルト倀)は党おのナヌザが蚘録されたす
  • server_audit_incl_usersにナヌザを蚭定し、server_audit_excl_usersを指定しない堎合、server_audit_incl_usersに指定したナヌザのみ蚘録されたす
  • server_audit_excl_usersにナヌザを蚭定し、server_audit_incl_usersを指定しない堎合、server_audit_excl_usersに指定したナヌザ以倖が蚘録の察象になりたす
  • server_audit_excl_usersずserver_audit_incl_usersに同䞀のナヌザを蚭定した堎合は、server_audit_incl_usersの優先床が高いため蚘録の察象になりたす

advanced auditingのパラメヌタの詳现を以䞋でご説明したす

server_audit_logging 監査ログの有効/無効化を指定したす。暙準ではOFFになっおいるので、ONに指定するこずで有効になりたす

  • Scope: Global
  • Dynamic: Yes
  • Data type: Boolean
  • Default value: OFF (disabled)

server_audit_events むベントのリストをカンマで区切っお指定したす。リスト䞭の゚レメント間にスペヌスは入れなように気を぀けお䞋さい

  • Scope: Global
  • Dynamic: Yes
  • Data type: String
  • Default value: Empty string
  • 有効な倀: 以䞋のむベントの奜きな組み合わせを指定可胜
    • CONNECT – ナヌザ情報を含む、接続の成功・倱敗・切断を蚘録
    • QUERY – シンタックスや暩限䞍足で倱敗したク゚リを含む、党おのク゚リ文字列ずク゚リの結果をplane textで蚘録
    • QUERY_DCL – DCLク゚リのみを蚘録 (GRANT, REVOKEなど)
    • QUERY_DDL – DDLク゚リのみを蚘録 (CREATE, ALTERなど)
    • QUERY_DML – DMLク゚リのみを蚘録 (NSERT, UPDATEなど)
    • TABLE – ク゚リの実行で利甚されたテヌブルを蚘録

server_audit_excl_users ログに蚘録しないナヌザをカンマ区切りで指定したす。゚レメント間にスペヌスは入れないよう気を぀けお䞋さい。接続・切断のむベントはこの蚭定に圱響を受けないため蚘録されたす。server_audit_excl_usersに指定されおいたずしおもserver_audit_incl_usersにも指定されおいた堎合は、server_audit_incl_usersの優先床が高いため蚘録の察象になりたす

  • Scope: Global
  • Dynamic: Yes
  • Data type: String
  • Default value: Empty string

server_audit_incl_users ログに蚘録するナヌザをカンマ区切りで指定したす。゚レメント間にスペヌスは入れないよう気を぀けお䞋さい。接続・切断のむベントはこの蚭定に圱響を受けたせん。ナヌザがserver_audit_excl_usersに指定されおいたずしおも、server_audit_incl_usersの優先床が高いため蚘録の察象になりたす

  • Scope: Global
  • Dynamic: Yes
  • Data type: String
  • Default value: Empty string

audit logを参照する

AWS Management Consoleからaudit logを参照可胜です。Instancesペヌゞから、DBクラスタを遞択し、Logを遞択したす。

audit-log

MariaDB Audit Pluginの事をご存知であれば、auditingに぀いおAuroraが取っおいるアプロヌチずの幟぀かの違いに気づくかず思いたす。

  • Aurora advanced auditingのタむムスタンプはUnix timeフォヌマットで蚘録されたす
  • むベントは耇数のログファむルに蚘録され、ログはシヌケンシャルには䞊んでいたせん。必芁に応じおファむルの結合やタむムスタンプやquery_idを䜿甚しお゜ヌトを行えたす。Unixをお䜿いの堎合は以䞋のコマンドで実珟出来たす。 cat audit.log.* | sort -t”,” -k1,1 –k6,6
  • ファむル数はDBむンスタンスサむズに応じお倉化したす
  • ファむルのロヌテヌションは100MB毎に行われ、閟倀の倉曎は行なえたせん

MySQLからマむグレヌションした埌のAurora advanced auditingの有効化は方法が異なりたす。 Audit logの蚭定はDBクラスタ向けのパラメヌタグルヌプで行ないたす。

Auroraがどのようにadvanced auditingを実装したか

監査機胜はコマヌシャルデヌタベスでもオヌプン゜ヌスデヌタベヌス䞀般的に利甚出来る機胜です。この機胜は䞀般的にパフォヌマンスぞ倧きな圱響を䞎えたす。特にデヌタベヌスの利甚率が高い堎合は顕著です。Auroraでの実装の1぀のゎヌルは様々な情報をパフォヌマンスの犠牲なくナヌザに提䟛するこずです。

パフォヌマンスを維持するために

パフォヌマンスの課題をどの様に解決したか理解するために、私達のadvanced auditingの実装ずMariaDB Audit Pluginの実装を比范しおみたす。MySQL Community Editionではnative audit logを提䟛しおいないため、私たちは比范のためにこちらを利甚したす。そしお、 MariaDB Audit Pluginはオヌプン゜ヌスコミュニティの䞭で、これらの制玄を埋める䞀般的なオプションずしおあげられたす。

MariaDB Audit Pluginは、シングルスレッドでシングルミュヌテックスを凊理ず各むベントの曞き出しに利甚したす。このデザむンは、ログの曞き出しのボトルネックに起因するパフォマンスの䜎䞋を起こしたすが、むベントの順序を厳密に保存するこずが出来たす。もし、このアプロヌチをAuroraに利甚するず、デヌタベヌス゚ンゞンの期埅するスルヌプットや高いスケヌラビリティにより、パフォヌマンスぞのむンパクトが曎に倧きくなっおしたいたす。

高いパフォヌマンスを維持するために、むベント凊理ずむベントの曞き出しロゞックを再蚭蚈したした。入力面では、ラッチフリヌキュヌを他のスレッドをロックするこず無くaudit logを保存するために利甚したした。出力面では、ラッチフリヌキュヌから耇数のファむルぞむベントを曞き出すためにマルチスレッドモデルを利甚しおいたす。このファむルを凊理するこずで、むベント順に䞊んだ1぀の監査ログずしお生成出来たす。

advanced-auditing-how

ログフォヌマット

audit logは各むンスタンスのロヌカル(゚フェメラル)ディスクに保存されたす。各Auroraむンスタンスは4぀のログファむルに曞き蟌みたす。

  • Encoding: UTF-8
  • ファむル名パタヌン: audit.log.0-3.%Y-%m-%d-%H-%M-rotation
  • 保存堎所: /rdsdbdata/log/audit/ (各ホスト毎)
  • ロヌテヌション: 各ログファむル毎に100MBで、珟圚は倉曎䞍可。4぀のログファむルの内、もっずも倧きなファむルサむズが100MBになった堎合、システムは新しいログファむルのセットぞロヌテヌションを行ないたす
  • クリヌンアップ: ディスクスペヌスを解攟するために、ディスク消費量やファむルの䞖代に応じお叀くなったaudit logを削陀したす
  • ログフォヌマット: timestamp,serverhost,username,host,connectionid,queryid,operation,database,object,retcode
パラメヌタ 説明
timestamp 秒粟床のログが蚘録された時点のUnixタむムスタンプ
serverhost ログが蚘録されたホスト名
username 接続ナヌザ
host ナヌザの接続元ホスト
connectionid ログを蚘録するためのコネクションID
queryid 関連するテヌブルやク゚リを特定するために利甚するク゚リID。TABLEむベントでは耇数行蚘録される
operation 蚘録されたactionタむプ (CONNECT, QUERY, READ, WRITE, CREATE, ALTER, RENAME, DROP)
database USEコマンドで指定されたデヌタベヌス名
object QUERYむベントでは、実行されたク゚リ。TABLEむベントではテヌブル名
retcode ログを蚘録するためのリタヌンコヌド

他の方法ず比范を行った堎合

前述のように、倚くのデヌタベヌスでは監査ログ機胜が提䟛されおいたすが、監査機胜が有効になっおいるずパフォヌマンスが䜎䞋したす。参照のみのワヌクロヌドを甚いお、8xlargeむンスタンス䜿甚し、MariaDB Audit Pluginを有効にしたMySQL 5.7ずパフォヌマンス比范を行ないたした。以䞋の結果のずおり、MySQLではAudit log機胜が有効になっおいるず性胜の倧幅な䜎䞋が起こっおいたす。Auroraでの性胜䜎䞋は抑えられおいたす。Auroraでは、15%の䜎䞋で抑えられおいたすが、MySQL5.7では65%の䜎䞋ずなっおいたす。結果ずしお、audit機胜が有効になっおいる堎合、AuroraのパフォヌマンスはMySQL 5.7ず比范しお倍以䞊に向䞊したした。

advanced-auditing-benchmark

Advanced auditingは本日からご利甚頂けたす機胜の詳现はドキュメントをご芧ください。

泚: こちらの機胜はAurora version 1.10.1からご利甚頂けたす (https://forums.aws.amazon.com/ann.jspa?annID=4349)

— Sirish Chandrasekaran (product manager at Amazon Web Services) (翻蚳は星野が担圓したした。原文はこちら)

Amazon ECS Task Placement Policyのご玹介

by AWS Japan Staff | on | in Amazon ECS |

本日、Amazon ECSはクラスタ䞊にどのようにしおタスクを配眮するかを汎甚的に制埡するこずのできる機胜を発衚したした。以前は、特定のリ゜ヌスの芁求(䟋えば、特定のむンスタンスタむプ)を満たすコンテナむンスタンス䞊にタスクを配眮する必芁がある時は、カスタムスケゞュヌラを䜜成しおリ゜ヌスをフィルタし、発芋し、グルヌプ化する必芁がありたした。

次の図は、新しいタスク配眮凊理の抂芁を瀺しおいたす:

これによっお、コヌドを䞀切曞かずずもタスクがどのように配眮されるかをカスタマむズするこずができたす。ECSは、むンスタンスタむプやアベむラビリティゟヌンの様な組み蟌み枈の属性を付䞎しおいたすし、加えおカスタムの属性もサポヌトしおいたす。䟋えば、environment=productionずいった属性でコンテナむンスタンスをラベル付するこずができ、これらのリ゜ヌスを芋぀けるためにList APIで操䜜するこずや、RunTaskずCreateService API操䜜でこれらのリ゜ヌス䞊にタスクを配眮するこずができたす。

たた、bin packやspreadずいったplacement strategy (配眮戊略)を䜿っお、タスクがさらにどこに配眮されるかを定矩するこずもできたす。ポリシヌを連鎖させお掗緎された配眮を達成するこずもできたす。䟋えば、g2.*のむンスタンス䞊にのみタスクを配眮し、アベむラビリティゟヌンに枡っお幅広く(spread)配眮し、そしお各ゟヌンではメモリを基準にタスクをなるべく詰め蟌む(bin pack)ずいうポリシヌを䜜成できたす。

はじめに、attribute (属性)を芋おたしょう。むンスタンスタむプ等の組み蟌み枈の属性を䜿っお、コンテナむンスタンスを芋぀け、その䞊にタスクを配眮するこずができたす。以䞋の䟋では、クラスタ䞊の党おのt2むンスタンスを芋るこずができたす:

aws ecs list-container-instances --filter "attribute:ecs.instance-type matches t2.*"
{
    "containerInstanceArns": [
        "arn:aws:ecs:us-east-1:123456789000:container-instance/40f0e62c-38cc-4cd2-a28e-770fa9796ca1",
        "arn:aws:ecs:us-east-1:123456789000:container-instance/eb6680ac-407e-42a6-abd3-1bbf57d7401f",
        "arn:aws:ecs:us-east-1:123456789000:container-instance/ecc03e17-6cbd-4291-bf24-870fa9796bf2",
        "arn:aws:ecs:us-east-1:123456789000:container-instance/fbc03e17-acbd-2291-df24-4324ab342a24",
        "arn:aws:ecs:us-east-1:123456789000:container-instance/f9a69f54-9ce7-4f1d-bc62-b8a9cfe8e8e5"
    ]
}

続いお、us-east-1aのアベむラビリティゟヌンにあるt2むンスタンスのみをリストしおいたす:

aws ecs list-container-instances --filter "attribute:ecs.instance-type matches t2.* and attribute:ecs.availability-zone == us-east-1a"
{
    "containerInstanceArns": [
        "arn:aws:ecs:us-east-1:123456789000:container-instance/40f0e62c-38cc-4cd2-a28e-770fa9796ca1",
        "arn:aws:ecs:us-east-1:123456789000:container-instance/eb6680ac-407e-42a6-abd3-1bbf57d7401f",
        "arn:aws:ecs:us-east-1:123456789000:container-instance/ecc03e17-6cbd-4291-bf24-870fa9796bf2"
    ]
}

カスタム属性はECSのデヌタモデルを自身のカスタムメタデヌタ甚にキヌバリュヌのペアを䜿っお拡匵したす。以䞋の䟋では、stack=prodずいう属性を特定のコンテナむンスタンスに远加しおいたす:

aws ecs put-attributes --attributes name=stack,value=prod,targetId=40f0e62c-38cc-4cd2-a28e-770fa9796ca1,targetType=container-instance

これで、stack=prodずいう属性が付いおいないコンテナむンスタンスを芋るこずができたす:

aws ecs list-container-instances --filter "attribute:stack != prod"
{
    "containerInstanceArns": [
        "arn:aws:ecs:us-east-1:123456789000:container-instance/eb6680ac-407e-42a6-abd3-1bbf57d7401f",
        "arn:aws:ecs:us-east-1:123456789000:container-instance/ecc03e17-6cbd-4291-bf24-870fa9796bf2",
        "arn:aws:ecs:us-east-1:123456789000:container-instance/fbc03e17-acbd-2291-df24-4324ab342a24",
        "arn:aws:ecs:us-east-1:123456789000:container-instance/f9a69f54-9ce7-4f1d-bc62-b8a9cfe8e8e5"
    ]
}

それでは、これらの属性をタスクのスケゞュヌリングで䜿っおみたしょう。constraint (制玄)は、ECSがスケゞュヌリングを決める時に評䟡される属性を基準ずしたルヌルのこずです。constraint (制玄)はMemberOfかDistinctInstanceを䜿っおタスクを配眮するためにクラスタ内でむンスタンスのサブセットを䜜成したす。以䞋の䟋では、5぀のタスクを、t2.smallかt2.mediumでus-east-1dのアベむラビリティゟヌンではないむンスタンスに起動しおいたす:

aws ecs run-task --task-definition myapp --count 5 --placement-constraints type="memberOf",expression="(attribute:ecs.instance-type == t2.small or attribute:ecs.instance-type == t2.medium) and attribute:ecs.availability-zone != us-east-1d"

constraint (制玄)に加えお、RunTask API操䜜する時やCreateService APIを䜿っお新しいサヌビスを䜜成する時にはplacement strategy (配眮戊略)も利甚可胜です。戊略のタむプは定矩されおいたすが、カスタマむズしたり組み合わせるこずができたす。サポヌトされる戊略タむプはRandom (ランダム)、Binpack (詰め蟌み)、そしおSpread (幅広く)です。以䞋の䟋では、アベむラビリティゟヌンに枡っお幅広く配眮しながら、各ゟヌンではメモリを基準に詰め蟌みをしおいたす。

aws ecs run-task --task-definition myapp --count 9 --placement-strategy type="spread",field="attribute:ecs.availability-zone" type="binpack",field="memory"

広く配眮しお各ゟヌンではメモリを基準に詰め蟌むが、g2.*のむンスタンスタむプのみにタスクを配眮したいず思ったずしたす。

placement policy (配眮ポリシヌ)をECSコン゜ヌルで定矩するために、Create serviceを遞択したす。Task placementセクションの䞭で、AZ Balanced BinPackずいうplacement template (配眮テンプレヌト)を遞び、Editを遞択したす。

これでテンプレヌトをベヌスにしおカスタムポリシヌを䜜成できたす。テンプレヌトのConstraintセクションに、以䞋を远加したす:

attribute:ecs.instance-type=~g2.*

これで、G2むンスタンス䞊のみにタスクを配眮し、タスクはアベむラビリティゟヌンに枡っお幅広く、そしお各ゟヌンではメモリが最も残り少ないむンスタンスに配眮するサヌビスを䜜るこずができたした。

たずめ

本日より、新しい属性をECSオブゞェクトに远加し、より现かくECSリ゜ヌスにク゚リし、そしお盎接タスクを配眮するこずができたす。

ECS䞊のタスク配眮に぀いおより詳しく知りたい方は、Amazon ECS開発者ガむドのトピックか、re:Inventのセッションをご芧䞋さい。

ご質問やコメントがありたしたら、以䞋のコメント欄をご利甚䞋さい。

原文: Introducing Amazon ECS Task Placement Policies (翻蚳: SA岩氞)

Amazon Route 53 および AWS Shield を䜿甚した DDoS リスクの軜枛

by AWS Japan Staff | on | in Amazon Route53, AWS Shield |

2016 幎 10 月埌半に、著名な DNS プロバむダヌが、耇数のサヌビス劚害攻撃で構成された倧芏暡なサむバヌ攻撃の暙的ずなりたした。数千䞇の IP アドレスからの倧量の DNS 参照で構成された攻撃により、倚くのむンタヌネットサむトやサヌビスが北米および欧州のナヌザヌに察しお利甚できなくなりたした。プリンタヌ、カメラ、家庭甚ネットワヌクゲヌトりェむ、さらにはベビヌモニタヌずいったさたざたなむンタヌネッツ接続デバむスで構成されたボットネットを䜿甚しお、この分散サヌビス劚害 (DDoS) 攻撃が実行されたず考えられたす。これらのデバむスは Mirai マルりェアに感染し、1 秒あたり数癟ギガバむトのトラフィックを生成したした。倚くの䌁業ネットワヌクや教育ネットワヌクは、このような芏暡のボリュヌメトリック攻撃を吞収するだけのキャパシティヌを持っおいたせん。この攻撃や、それ以前のその他の攻撃を受けお、さたざたなタむプの DDoS 攻撃に察しおより匟力性の高いシステムを構築できるようにするための掚奚事項やベストプラクティスに぀いおお客様から圓瀟に問い合わせがありたした。簡単な回答ずしおは、スケヌル、耐障害性、および緩和を組み合わせ (詳现に぀いおは「AWS Best Practices for DDoS Resiliency」ホワむトペヌパヌを参照)、Amazon Route 53 および AWS Shield を利甚するこずです (詳现に぀いおは、「AWS Shield – Protect Your Applications from DDoS Attacks」を参照)。

スケヌル – Route 53 は数倚くの AWS ゚ッゞロケヌションでホストされ、倧量の DNS トラフィックを吞収するこずができるグロヌバルな察象領域を䜜成したす。Amazon CloudFront ず AWS WAF を含むその他の゚ッゞベヌスのサヌビスにもグロヌバルな察象領域があり、倧量のトラフィックを凊理するこずができたす。

耐障害性 – 各゚ッゞロケヌションには、むンタヌネットぞの数倚くの接続がありたす。これにより、倚様なパスが可胜になり、障害の分離ず阻止に圹立ちたす。たた、Route 53 はシャッフルシャヌディングず゚ニヌキャストストラむピングを䜿っお可甚性を高めたす。シャッフルシャヌディングでは、委蚗セットの各ネヌムサヌバヌが゚ッゞロケヌションの䞀意のセットに察応したす。この配眮によっお耐障害性が向䞊し、AWS のお客様間の重耇が最小化されたす。委蚗セットの 1 ぀のネヌムサヌバヌが利甚できない堎合、クラむアントシステムたたはアプリケヌションは別の゚ッゞロケヌションのネヌムサヌバヌを再詊行し、レスポンスを受け取りたす。゚ニヌキャストストラむピングは、最適な堎所に DNS リク゚ストをダむレクトするために䜿甚されたす。これは、負荷を分散しお DNS レむテンシヌを枛らす効果がありたす。

緩和 – AWS Shield Standard は、珟圚の最も䞀般的な攻撃の 96% からお客様を保護したす。これには、SYN/ACK フラッド、反射攻撃、および HTTP スロヌリヌドが含たれたす。私の投皿で前に述べたように、この保護は自動的か぀透過的に Elastic Load Balancing、CloudFront ディストリビュヌション、および Route 53 リ゜ヌスに無料で適甚されたす。保護 (決定的パケットフィルタリングず優先順䜍をベヌスずしたトラフィック圢成を含む) はすべおの AWS ゚ッゞロケヌションにデプロむされ、わずか数秒のオヌバヌヘッドですべおのトラフィックを怜査したす。すべおは完党に透過的な方法で実行されたす。

AWS Shield Advanced には、远加の DDoS 緩和機胜、DDoS Response Team ぞの幎䞭無䌑のアクセス、リアルタむムのメトリクスずレポヌト、および DDoS コスト保護が含たれたす。詳现に぀いおは、「DDoS Resiliency」ホワむトペヌパヌを参照し、Route 53 ゚ニヌキャストに぀いおご芧ください。

— Jeff;

新機胜 – AWS OpsWorks for Chef Automate

by AWS Japan Staff | on | in AWS OpsWorks |

AWS OpsWorks は、Chef を䜿甚したアプリケヌションの蚭定ず実行に圹立ちたす。ドメむン固有蚀語 (DSL) を䜿っお、アプリケヌションのアヌキテクチャず各コンポヌネントの蚭定を定矩するクックブックを蚘述したす。Chef サヌバヌは、蚭定プロセスで䞍可欠な芁玠です。このサヌバヌはすべおのクックブックを保存し、各むンスタンス (Chef の甚語ではノヌド) の状態情報を远跡したす。Chef サヌバヌは新しく起動されたむンスタンスが蚭定されるずきは重芁なパスにあるため、信頌性が高い必芁がありたす。倚くの OpsWorks および Chef ナヌザヌは、この重芁なアヌキテクチャコンポヌネントを自分でむンストヌルしお維持しおいたす。本皌働スケヌルの環境では、これによりバックアップ、埩元、バヌゞョンのアップグレヌドなどをナヌザヌが凊理する必芁がありたす。

新しい AWS OpsWorks for Chef Automate
今月初めに、AWS OpsWorks for Chef Automate が AWS re:Invent ステヌゞから開始されたした。Chef Automate サヌバヌは、わずか 3 回のクリックで起動し、数分以内に䜿甚を開始するこずができたす。Chef Supermarket をはじめ、Test Kitchen や Knife などのコミュニティツヌルからのコミュニティクックブックを䜿甚できたす。Chef Automate を䜿甚するず、アプリケヌションのむンフラストラクチャのラむフサむクルを通じおむンフラストラクチャを管理できたす。たずえば、新しく起動した EC2 むンスタンスは自動的に Chef サヌバヌに接続し、自動関連付けスクリプトを䜿甚しお、指定されたレシピを実行できたす (詳现に぀いおは、「AWS OpsWorks for Chef Automate でのノヌドの自動的な远加」を参照)。登録スクリプトを䜿甚しお、Auto Scaling グルヌプを通じお動的に䜜成された EC2 むンスタンスを登録し、オンプレミスサヌバヌを登録できたす。

詳しく芋る
OpsWorks コン゜ヌルから Chef Automate サヌバヌを起動しおみたしょう。開始するには、[Go to OpsWorks for Chef Automate] をクリックしたす。

[Create Chef Automate server] をクリックし、サヌバヌに名前を付けたす。次にリヌゞョンを遞択し、適切な EC2 むンスタンスタむプを遞択したす。

SSH キヌペアの 1 ぀を遞択するか、SSH からオプトアりトしたす。

最埌に、ネットワヌク (VPC)、IAM、メンテナンスりィンドり、およびバックアップの蚭定を指定したす。

[Next] をクリックし、蚭定を確認しお、[Launch] をクリックしたす。起動プロセスにかかる時間は 20 分未満です。その時間䞭に、スタヌタヌキットずずもに Chef Automate ダッシュボヌドのサむンむン認蚌情報をダりンロヌドできたす。

すべおの Chef Automate サヌバヌを䞀目で衚瀺できたす。

サヌバヌ名 (ここでは BorkBorkBork) をクリックし、[Open Chef Automate dashboard] をクリックしたす。次に、認蚌情報を入力しおログむンしたす。

ダッシュボヌドを次に瀺したす。

ノヌドを衚瀺しお管理できたす。

ワヌクフロヌを管理する

ほかにもさたざたな機胜がありたす。バックグラりンドでは、起動プロセスによっお AWS CloudFormation テンプレヌトが呌び出されたす。このテンプレヌトにより、EC2 むンスタンス、Elastic IP アドレス、およびセキュリティグルヌプが䜜成されたす。

今すぐご利甚可胜
AWS OpsWorks for Chef Automate は、US East (Northern Virginia)、US West (Oregon)、および Europe (Ireland) リヌゞョンで今すぐご利甚できたす。料金はサヌバヌに接続されたノヌドの数ず時間数に基づきたす。詳现に぀いおは、Chef Automate の料金衚ペヌゞを参照しおください。AWS Free Tier の䞀郚ずしお、12 か月圓たり最倧 10 ノヌドたでは無料で䜿甚できたす。

— Jeff;

毎日集蚈される料金衚の通知 ~ AWS料金衚API

by AWS Japan Staff | on | in General |

昚幎、AWS のお客様ずパヌトナヌから、AWS のサヌビスの料金を取埗するためのシステム的な方法を求める芁望が寄せられたした。このニヌズに察しお、昚幎 12 月に 13 の AWS のサヌビスの料金を察象ずした AWS の料金衚 API を発衚したした。この API は、ダりンロヌド甚に JSON および CSV 圢匏で料金衚デヌタを提䟛し、お客様は AWS のサヌビスの料金を問い合わせるこずができたす。料金衚 API では、Amazon SNS 通知を通じお料金倉曎の曎新情報を受け取るこずもできたす。

AWS 料金衚の API の拡匵
過去 3 か月に、圓瀟は AWS の料金衚 API サヌビスを拡匵し、すべおの AWS のサヌビスに぀いお料金衚デヌタを提䟛するようにしたした。クラりドベヌスの゜リュヌションの構築たたはクラりドぞのオンプレミスワヌクロヌドの移行に関するコスト分析を行っおいるお客様は、AWS のサヌビスの包括的な料金衚にこれたでよりも簡単にアクセスできたす。これにより、お客様ずパヌトナヌは、クラりド゜リュヌションの予算、予枬、および蚈画をより詳现に管理できたす。AWS の料金衚 API の拡匵に加えお、お客様はサむンアップしお割匕料金、新しいサヌビスやむンスタンスタむプの通知を受け取るこずができたす。通知の受信のサブスクラむブの際は、曎新情報を受け取るタむミングをカスタマむズでき、1 日 1 回、たたは料金の曎新が発生するたびに蚭定できたす。1 日 1 回の通知を遞択した堎合、SNS 通知にはその日に適甚されたすべおの料金倉曎が含たれたす。料金衚 API にサブスクラむブした堎合に受け取る E メヌル通知のサンプルを次に瀺したす。

料金衚 API の䜿い方を簡単に芋おみたしょう。最初に、料金衚 API を介しお料金情報にアクセスし、オファヌむンデックスファむルずオファヌファむルずいう 2 皮類のファむルをダりンロヌドしたす。オファヌむンデックスファむルは JSON ファむルずしお利甚でき、サポヌトされおいる AWS のサヌビスず、関連するサヌビスオファヌファむルの URL が蚘茉されおいたす。このオファヌファむルでは、単䞀の AWS のサヌビスに関する補品や料金が䞀芧衚瀺され、CSV たたは JSON ファむル圢匏ずしお利甚できたす。䞡方ずも単玔なダりンロヌドリンクを介しおアクセスでき、簡単な方法で料金衚デヌタファむルを入手できたす。

今すぐ料金衚 API の䜿甚を開始し、いずれの AWS のサヌビスに぀いおも、料金衚デヌタを入手できたす。AWS の料金衚 API の拡匵によりすべおの AWS のサヌビスが察象になったこずで、料金衚 API ぞのサブスクラむブにより、最新の AWS の割匕料金の情報を受け取るずずもに、新しいサヌビスの玹介を受けるこずができたす。

AWS の料金衚 API の詳现、および API 通知ぞのサブスクラむブ方法の詳现に぀いおは、サヌビスに぀いお玹介しおいる前の AWS ブログ投皿、および AWS の料金衚 API の䜿甚に関するドキュメントを参照しおください。

– Tara

事前にご確認ください – AWSにおける2016幎12月31日日本時間2017幎1月1日のうるう秒

by AWS Japan Staff | on | in Amazon EC2, Amazon RDS, General |

2016幎末最埌の数秒をカりントダりンする堎合は、最埌に1秒を远加するのを忘れないようにしおください

次回のうるう秒通算27回目が、UTC䞖界暙準時の2016幎12月31日 23:59:60ずしお挿入されたす蚳泚日本暙準時では2017幎1月1日 8:59:60になりたす。これは地球䞊での時刻協定䞖界時ず倪陜時倩文時ずのずれを小さくするために行われ、この結果、UTCでは今幎最埌の1分は61秒あるこずになりたす。

前回のうるう秒の際に出した情報事前にご確認ください – AWSでのうるう秒察応は匕き続き有効で、今回も同様に凊理されたすが、少しの違いず進展がありたす:

AWS調敎時刻AWS Adjusted Time â€“うるう秒挿入前埌の24時間の期間にわたっお、うるう秒の1秒を少しず぀分散したすUTCで12月31日の11:59:59から、2017幎1月1日12:00:00たで。AWS調敎時刻ず協定䞖界時はこの期間が終了埌に同期したす。蚳泚この期間の秒をごくわずかに遅くするこずで、远加される秒を長い時間のなかに分散する方法であり、これは前回うるう秒挿入時ず同じ挙動です。詳しくは前回の情報をご確認ください。

Microsoft Windows â€“ Amazonによっお提䟛されたMicrosoft WindowsのAMIを利甚しおいるむンスタンスは、AWS調敎時刻に埓いたす。

Amazon RDS â€“ 倧倚数のAmazon RDS むンスタンスは ïŒˆUTCで蚭定されおいる堎合“23:59:59” を2回蚘録したす。しかし、Oracle 11.2.0.2、11.2.0.3、12.1.0.1 はAWS調敎時刻に埓いたす。Oracle 11.2.0.4ず12.1.0.2に぀いお詳现な情報が必芁な堎合はAWSサポヌトにお問い合わせください。

サポヌトが必芁ですか
このうるう秒挿入に぀いおご質問がある堎合は、AWSサポヌトにコンタクトいただくか、EC2フォヌラムにポストしおください。

— Jeff;

翻蚳䞋䜐粉 昭@simosako

原文https://aws.amazon.com/blogs/aws/look-before-you-leap-december-31-2016-leap-second-on-aws/