Amazon Web Services ブログ

Category: Programing Language

面白法人カヤックにおけるビルディングブロックとしてのAmazon ECSの活用とサービス間連携の工夫

開発者がアプリケーションを開発・パッケージング・デプロイするための強力な手法として、コンテナ技術はその代表的な1つに挙げられます。そしてそのようなコンテナ技術における様々なユースケースをサポートすべく、AWSではAmazon Elastic Container Service (Amazon ECS) に代表される多様なサービスを提供しています。
面白法人カヤック の技術部/インフラエンジニアである 藤原 俊一郎 氏にゲスト投稿いただき、Amazon ECS をはじめとした各AWSサービスをビルディングブロックとして組み合わせて利用していく上での課題と、その解決策の実例を紹介します。

Read More

AWS CLI v2 が一般利用可能となりました

AWS CLI バージョン 2 (v2) の v2.0.0 GA リリースを発表できることを嬉しく思います。 AWS CLI v2 は AWS CLI v1 をベースに構築され、コミュニティのフィードバックに基づいた多くの機能と拡張機能が含まれています。 新機能 AWS CLI v2 には、改良されたインストーラ、AWS シングルサインオン(SSO)などの新しい設定オプション、さまざまなインタラクティブ機能など、いくつかの新機能があります。

Read More

AWS Systems Manager の新しいオートメーション機能

本日、AWS Systems Manager 内で追加された自動化機能を発表します。Systems Manager をまだ使用していない方のために説明すると、本サービスは統合されたユーザーインターフェイスを提供するため、複数の AWS サービスから運用データを表示し、AWS リソース全体の運用タスクを自動化できます。 この新しいリリースで、さらに強力になりました。AWS Systems Manager に追加機能を追加しました。これにより、チーム内または組織内の他のユーザーと自動化を構築、実行、共有できるため、インフラストラクチャの管理を繰り返すのがより簡単になり、エラーが発生しにくくなります。 ナビゲーションメニューの AWS Systems Manager コンソール内には、オートメーションという項目があり、このメニュー項目をクリックするとオートメーションを実行ボタンが表示されます。 これをクリックすると、実行するドキュメントを尋ねられます。AWS では、選択可能なドキュメントのライブラリを提供しますが、今日は独自のドキュメントを作成するため、ドキュメントを作成ボタンをクリックします。 これにより、新しい画面が表示され、Python または PowerShell スクリプトを実行するドキュメント (オートメーションプレイブックとも呼ぶ) を作成できます。 コンソールには、ドキュメントを編集するための 2 つのオプションがあります。YAML エディタまたはガイド付きの段階的なユーザーインターフェイスを提供する「ビルダー」ツールで、各ワークフローステップのドキュメントを含めることができます。 それでは、簡単なオートメーションを構築して実行してみましょう。ビルダーツールを使用してドキュメントを作成する場合、最初に必要なのはドキュメント名です。 次に、説明を入力する必要があります。以下に示すように、Markdown を使用して説明の書式を設定できます。説明は、ドキュメントの機能を説明する絶好の機会です。ほとんどのユーザーは、これらのドキュメントをチームの他のユーザーと共有し、日常の問題を解決するためのドキュメントライブラリを構築したいと思っています。 オプションで、ドキュメントのパラメータを指定するように求められます。これらのパラメータは、後で作成するすべてのスクリプトで使用できます。この例では、3 つのパラメータ imageId、tagValue、instanceType を作成しました。このドキュメントを実行するときに、設定したデフォルトを上書きするこれらのパラメータの値を提供する機会があります。 誰かが私のドキュメントを実行すると、実行されるスクリプトは AWS サービスと対話します。ドキュメントは、Assume ロールを提供するオプションとともに、ほとんどのアクションに対するユーザー権限を使用して実行されます。ただし、スクリプトを実行する操作を含むドキュメントの場合、スクリプトが AWS API を呼び出すときにロールが必要です。 ビルダーツールで、Assume ロールをグローバルに設定できます。ただし、ドキュメントに assumeRole というパラメータを追加したいので、それを実行している人であれば誰でも別のパラメータを提供できます。 次に、Assume ロールプロパティのテキストボックスで {{assumeRole}} 構文を使用して、このパラメータをグローバルに assumeRole に結び付けます (パラメータ名 […]

Read More

Amazon DynamoDB スキャンパフォーマンスに対する Python バージョンの影響の分析

Amazon DynamoDB は、柔軟なスキーマを使用できる NoSQL データベースです。これは、項目それぞれにどのような属性が存在するかという点で、同じテーブル内の項目が互いに異なることを意味します。 前の AWS ブログ記事では、項目あたりの属性数の影響について検証しましたが、私たちは先日、お客様の Python アプリケーションにおけるスキャンが遅いという問題を解決するお手伝いをしていた時、Python バージョンのアップグレードがパフォーマンス向上に役立つかどうかを確認するために、異なるバージョンの Python インタプリタを調べました。 この記事では、Python インタプリタのバージョンがスキャンパフォーマンスにどのように影響し得るかをお見せしたいと思います。 手法 パーティションキーとソートキー (どちらも文字列) で構成されるプライマリキーというシンプルな構造の DynamoDB テーブルを 1 つ作成しました。また、それぞれに 7 文字のキー名 (「field01」、「field10」、など) を含む、個別の 6 文字の文字列属性 24 個 (6 x 24 = 合計 144 文字) で構成されるもうひとつの DynamoDB テーブルも作成しました。 DynamoDB には、単一のリクエストで取得するデータの量に 1 MB の上限があるので、ランダムなデータ 10,000 項目でテーブルをシードしてから、1 MB の上限内に収まるだけの項目を取得する単一のスキャンを実行します。その後、クライアント側でこれらの項目を取得し、アンマーシャルするためにかかる時間を測定します。 ウォークスルー 以下は、Python バージョンの比較に関する典型的な質問です。 Python のあるバージョンを使用する場合と、別のバージョンを使用する場合とでは、どのようにパフォーマンスが変化するのか? […]

Read More

AWS DMS タスク ID を使用して DMS タスクログをダウンロードするための Python コード

AWS Database Migration Service (AWS DMS) を使用すると、データベースを迅速かつ安全に AWS に移行できます。この記事では、AWS DMS タスク ID を使用して AWS DMS タスクログをローカルコンピュータにダウンロードするために必要なサンプル Python コードについて説明します。 概要 DMS タスクログには、移行プロセス中に記録されたタスク情報が含まれています。記事「AWS DMS 移行のデバッグ: 問題が発生した場合の対処方法 (パート1)」で示唆されているように、AWS DMS を使用してデータを移行する際、これらのログを使用して問題を解決することができます。 この記事では、DMS は Amazon CloudWatch Logs のログストリームにタスクログを送信するので、DMS 移行タスクに関する情報を取得できます。けれども、トラブルシューティングをスピードアップするためにローカルにログをダウンロードしたい場合はどうすればよいでしょうか? Download DM Task ログの GitHub レポジトリで、DMS タスク ID を使用して AWS DMS タスクログをダウンロードするための完璧な Python コードを見つけてください。この記事の残りの部分では、Python コードを分解してそのソリューションの使用方法を次の順序で説明します。 必要なライブラリをインポートします。 DMS タスク ID の引数とログの時間範囲を読み取ります。 エポックからの経過時間をミリ秒に変換します。 […]

Read More

新発表 – AWS Toolkits for PyCharm、IntelliJ(プレビュー)、Visual Studio Code(プレビュー)

ソフトウェア開発者には好みの開発ツールというものがあります。パワフルなエディタを使う人もいれば、特定の言語やプラットフォームに最適化された統合開発環境(IDE)を使う人もいます。AWS Lambda のコンソールのエディタを使って、2014年に私は初めての AWS Lambda 関数を作りました。現在では、サーバーレス・アプリケーションをビルドしデプロイするためのツールの選択肢は豊富になりました。例えば、昨年 AWS Cloud9 がリリースされて AWS Lambda のコンソールのエディタ環境は大きく強化されました。.NET アプリケーションでは、 AWS Toolkit for Visual Studio と AWS Tools for Visual Studio Team Services を使う事ができます。 AWS Toolkits for PyCharm、IntelliJ(プレビュー)、そして Visual Studio Code(プレビュー) 今日、 AWS Toolkit for PyCharm の一般提供をお知らせします。また、 AWS Toolkits for IntelliJ と Visual Studio Code の開発者プレビューをお知らせします。これら(AWS Toolkits for IntelliJ と Visual Studio […]

Read More

.NET Frameworkのためのカスタムビルド環境でAWS CodeBuildを拡張する

.NET Framework用のカスタムCodeBuildビルド環境の作成方法について説明している、この素晴らしいブログを書いたMicrosoftプラットフォーム担当シニア・ソリューション・アーキテクト、Greg Eppelに感謝します。 — AWS CodeBuildは、ソースコードをコンパイルし、テストを実行し、展開可能なソフトウェアパッケージを生成する、フルマネージドなビルドサービスです。 CodeBuildは、Android、Go、Java、Node.js、PHP、Python、Ruby、Dockerなどのプログラミング言語とランタイムのためのビルド環境を提供します。 CodeBuildは、Microsoft Windows Serverプラットフォーム用のビルドもサポートしています。これには、Windows上の.NET Core用にあらかじめパッケージ化されたビルド環境も含まれます。アプリケーションで.NET Frameworkが使用されている場合は、独自のDockerイメージを使用して、Microsoftの.NET Frameworkクラスライブラリを含むカスタムビルド環境を作成する必要があります。この手順が必要な理由については、よくある質問を参照してください。この記事では、.NET Frameworkアプリケーション用のカスタムビルド環境を作成し、この環境を使用するようにCodeBuildを設定する手順を説明します。

Read More

Amazon CloudWatch LogsとMonologを使用したPHPアプリケーションログ

ロギングとデバッグ情報は、さまざまな角度からアプローチできます。アプリケーションフレームワークを使用する場合でも、一からコーディングする場合でも、異なるプロジェクト間で使い慣れたコンポーネントやツールを使用することは常に快適です。今回の例では、PHPアプリケーションからのログを、Amazon CloudWatch Logsに出力させます。これを実現するために、すでに普及しよく利用されている標準に準拠した既存のソリューションを使いたいと思っていました。これらの理由からオープンソースのログライブラリであるPHP Monolog(https://github.com/Seldaek/monolog)を使用します。 PHP Monolog 新しいPHPアプリケーション、フレームワーク、またはサービスを扱う人にとって、ソリューション間で頻繁に現れる技術の選択肢の1つとしてアプリケーションログ用のMonologを利用することが挙げられます。PHP Monologは標準に準拠したPHPライブラリで、開発者はデータベース、ファイル、ソケット、さまざまなサービスなどのさまざまな種類のフォーマットにログを送信できます。PHP MonologはPSR-3で定義されたPHPロギングの標準化よりも前に、PSR-3のインターフェースと標準を実装していました。これにより、Monologはロギングライブラリ用の共通インタフェースに準拠しています。CloudWatch LogsでMonologを使用すると、PSR-3互換ロギングソリューションが作成されます。Monologは、Laravel、Symfony、CakePHPなど多くの異なるアプリケーションやフレームワークで使用できます。今日の例は、アプリケーションログの目的で、PHP Monologを使用してCloudWatchLogsに情報を送信し、CloudWatchのアラームと通知でアプリケーションデータを使用できる構造とプロセスを構築することです。これにより、アプリケーションからのログをキーにAmazon EC2 AutoScalingのようなサービスのアクションに使用することができます。 Amazon CloudWatch Logs 顧客第一主義の組織として、AWSはお客様やAWSパートナーが要望する重要な機能やサービスを絶えず構築し、リリースしています。本日、ハイライトされるサービスの1つがAmazon CloudWatch Logsです。CloudWatch Logsを使用すると、アプリケーション、オペレーティングシステムおよびインスタンス、AWSサービス、およびその他のさまざまなソースからのログファイルの情報を保存できます。以前のブログ記事では、CloudWatch Logsをさまざまなプログラミング例とともに紹介しました。 ブログ記事にはCloudWatch Logsを使用してアプリケーションからのエントリを保存するPHPの例があります。この例を使用してスタンドアロンソリューションとして拡張し、アプリケーション内からCloudWatch Logsにログを送ることができます。この例では、PHP Monologを活用してこの機能を強化します。 Monologの実装 Monologを使用開始するには、Composer(https://getcomposer.org/)を使用して必要なライブラリをインストールします。以下の手順では、AWS SDK for PHP、PHP Monologおよび CloudWatch Logsへのログを有効にするMonologのアドオンをインストールします。 curl -sS https://getcomposer.org/installer | php php composer.phar require aws/aws-sdk-php php composer.phar require monolog/monolog php composer.phar require maxbanton/cwh:^1.0 あるいは、次のエントリをcomposer.jsonファイルにコピーし、php composer.phar installコマンドでインストールすることもできます。 { “minimum-stability”: “stable”, “require”: { […]

Read More