Amazon Web Services ブログ

Category: AWS CloudFormation

AWS CDKでクラウドアプリケーションを開発するためのベストプラクティス

この記事では、AWS Cloud Development Kit (AWS CDK) を中心とした、大規模なチームで複雑なクラウドアプリケーションの開発を組織化するための戦略について説明します。AWS CDK では、開発者や管理者は、TypeScript、Python、Java、C#などの使い慣れたプログラミング言語を使ってクラウドアプリケーションを定義することができます。アプリケーションは、Stage、Stack、Constructに整理されており、ランタイムロジック (AWS Lambda コードやコンテナ化されたサービスなど) と、Amazon Simple Storage Service (Amazon S3) バケット、Amazon Relational Database Service (Amazon RDS) データベース、ネットワークなどのインフラストラクチャコンポーネントの両方において、モジュール化された設計手法を可能にしています。 この記事では、AWS CDKの基本的なコンセプトに関する簡単なチュートリアルではなく、より実践的な内容について説明します。ローカルでコードを書きテストする方法や、本番環境や様々なステージングアカウントにデプロイする方法、そしてチームのアプリを整理して、より大きな組織で活用する方法について説明します。 AWS CDKを初めてご利用になる方は、AWS CDK Intro Workshop から始めることを強くお勧めします。この記事では、いくつかの高度なトピックを扱っていますが、基礎を把握しておくと良いでしょう。詳細については、AWS CDKリファレンスドキュメントとGitHub リポジトリにある aws-cdk-examples  のサンプルコードを参照してください。

Read More

re:Invent 2020におけるマネジメントとガバナンス関連セッションのご紹介

AWS re:Inventは、お客様と関わり合い、サービスや機能に関して学び、共有できる、エキサイティングな時期です。現在のパンデミックにより、今年のre:Inventは11月30日から12月18日までの 3 週間にわたって完全オンライン、無料で開催されます。そうです、あなたには参加する権利があるのです。 AWS re:Invent 2020はバーチャルで開催され無料です!!! このブログでは、AWSでのマネジメントとガバナンスに関するセッションのハイライトを紹介します。これらは、ビジネスの俊敏性とガバナンスコントロールの両者を維持しながら、AWS環境を有効化し、プロビジョニングし、そして運用するために、役立つセッションです。各セッションは、世界各地のお客様に向け複数回ブロードキャストされ、すべてあなたの家で快適な環境でご視聴いただけます。これらのセッションのメリットを享受するため、re:Inventに登録してください。

Read More

[AWS Black Belt Online Seminar] AWS CloudFormation deep dive 資料及び QA 公開

先日 (2020/10/06) 開催しました AWS Black Belt Online Seminar「AWS CloudFormation deep dive」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 ※ライブ配信中に切れてしまった最後の部分を再編集して掲載しております。 20201006 AWS Black Belt Online Seminar AWS CloudFormation deep dive AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. DeletionPolicy:Retain のとき、削除されるリソースは Changeset でどう表示されますか。Stack のリファクタリングで元スタックを削除するのは怖いので確認したいと思っています。 A. DeletionPolicy を指定してリソースを作り、対象のリソースを除外したテンプレートを作って ChangeSet を作ると、ChangeSet 上は Remove と表示され、リソースが残ることの確認はできません。類似のテンプレートを使ってテストを行い、加えて本番の環境に正しく DeletionPolicy が設定されていることを CFn 画面や CLI で得られるテンプレート情報で確認して削除を行って頂くことをおすすめします。 Q. SAM のアプリを CodePipeline でデプロイする場合、sam deploy コマンドをパイプラインの中で実行する形でいいのでしょうか ? まだ仕組みとして洗練されていない感じがします。 […]

Read More
CDK

CloudFormation テンプレートから AWS Cloud Development Kit への移行

AWS CloudFormation を使用すると、開発者やシステム管理者は、関連する AWS リソースのコレクションを簡単に作成および管理し、それらを整然かつ予測可能な方法でプロビジョニングおよび更新できます。AWS CloudFormation のサンプルテンプレートの使用、または独自のテンプレートの作成によって、アプリケーションの実行に必要な AWS リソース、相互の依存関係、および実行時パラメーターを定義できます。AWS サービスのプロビジョニングの順序や、それらの依存関係を解決するための詳細を把握する必要はありません。CloudFormation はあなたに代わってこれを処理します。AWS リソースをデプロイしたら、制御され予測可能な方法で変更し更新できます。これにより、ソフトウェアと同じ方法で AWS インフラストラクチャにバージョン管理を適用できます。 2019 年 7 月、AWS Cloud Development Kit(CDK)がリリースされました。開発者が AWS インフラストラクチャを TypeScript、JavaScript、Python、C#、Java などの使い慣れたプログラミング言語のコードで定義できるようになったことで、お客様の選択肢が増えました。CDK では、より高いレベルの抽象化を使用してインフラストラクチャを定義できますが、その背後では CloudFormation が使われています。つまり、自動ロールバックやドリフト検出など、CloudFormation のすべてのメリットを享受できます。 多くの開発者は、アプリケーションコードに使用するのと同じ使い慣れたプログラミング言語でインフラストラクチャを定義することを好むため、CDKを使用したいと考えています。しかし一方で、実証済みのインフラストラクチャパターンと重要な構成設定をエンコードした CloudFormation テンプレートの広範なライブラリをすでにお持ちです。これらのテンプレートは、構築と維持に時間と労力を要します。一方で既存のスタックを再現する CDK コードを手動で記述することは、面倒でエラーが発生しやすくなります。 今日まで、既存のテンプレートで定義されたインフラストラクチャを活用する唯一の方法は、コアモジュールの CFnInclude クラスでした。これにより、CDK アプリケーションに CloudFormation テンプレートを組み込み、変更せずに出力することができました。ただし、このソリューションにはいくつかの制限があります。 テンプレートに含まれるリソースは、インクルードした後で変更することはできません。 テンプレートから取り込んだリソースは、その論理 ID を使用して手動で参照します。これはエラーが発生しやすく、この方法で作成された参照は、CDKが提供する強力な機能である CDK の自動クロススタックリファレンス生成機能を利用できません。 CloudFormation-Include CDK モジュールの発表 既存の CloudFormation スタックを CDK コードに移行するために特別に開発された CloudFormation-include […]

Read More
CDK

CDK Pipelines: AWS CDK アプリケーションの継続的デリバリ

AWS Cloud Development Kit(AWS CDK)は、使い慣れたプログラミング言語でクラウドインフラストラクチャを定義し、AWS CloudFormation を通じてプロビジョニングするためのオープンソースのソフトウェア開発フレームワークです。AWS CDK は、次の 3 つの主要なコンポーネントで構成されています。 再利用可能なインフラストラクチャ・コンポーネントをモデリングするためのコアフレームワーク CDK アプリケーションをデプロイするための CLI AWS Construct Library(クラウドリソースを抽象化し、実績のあるデフォルト値をカプセル化する高レベルのコンポーネントのセット) CDK を使用すると、cdk deploy を実行するだけで、ワークステーションから AWS クラウドにアプリケーションを簡単にデプロイできます。これは、初期開発およびテストを行う場合に最適ですが、本番ワークロードをデプロイするためには、より信頼性の高い自動化されたパイプラインを使用する必要があります。 CDKアプリケーションを継続的にデプロイするために、お好みのCI/CDシステムを利用することが可能ですが、より簡単で、かつすぐに利用可能な方法をお客様はご要望でした。これはCDKの中核的な理念に適合します。つまりクラウドアプリケーションの開発を可能な限り簡素化して、お客様が関心のある部分に集中することです。 CDK Pipelines の開発者プレビューリリースをお知らせします。CDK Pipelines は、AWS CodePipeline によって CDK アプリケーションの継続的なデプロイパイプラインを簡単にセットアップできる高レベルのコンストラクトライブラリです。この投稿では、CDK Pipelines を使用して、AWS Lambda と連携した Amazon API Gateway エンドポイントを 2 つの異なるアカウントにデプロイする方法について説明します。

Read More

[AWS Black Belt Online Seminar] AWS CloudFormation 資料及び QA 公開

先日 (2020/08/26) 開催しました AWS Black Belt Online Seminar「AWS CloudFormation」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20200826 AWS Black Belt Online Seminar AWS CloudFormation AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. AWS CloudFormation テンプレートを作り込む際、実際にスタック作成してトライ&エラーで作り込んでますが、スタック作成せずにテンプレートを検証できる方法はないでしょうか? A. 本 Black Belt の 55 スライド目のとおり、事前にテスト関連ツールにて事前検証可能です。最終的には実環境でのテストが必要ですが、本 Black Belt で紹介した機能を使用して事前に検証することで、実環境でのトライ&エラーを防ぐことができます。 Q. CloudFormation 初心者なのですが、プログラミング経験は豊富なので、これから IaC に携わる場合は、CDK や Pulumi を学習する方がよいでしょうか? A. プログラミング言語に慣れているということであれば、AWS Cloud Development Kit (CDK) から取り組むのも一つの手です。CloudFormation よりも少ない行数で構成管理を実現できる可能性があります。AWS CDK を使うことで CloudFormation を知らなくてよくなる訳ではございません。あくまで […]

Read More

CloudFormation で cfn-init に代えて State Manager を利用する方法とその利点

はじめに AWS CloudFormationを介してAmazon Elastic Cloud Compute (EC2) インスタンスをデプロイした後には、ソフトウェアのインストール、またはオペレーティングシステムの設定が必要になることがほとんどです。多くのAWSのお客様はCloudFormationのヘルパースクリプトの一つである cfn-init (2012年2月から利用可能)を使用していると思います。しかし、それ以後もAWSは、お客様のフィードバックに応じて多くの新機能とサービスをリリースしてきました。そのうちの一つはAWS Systems Managerです。このブログ記事では、AWS CloudFormationを介してデプロイされたAmazon EC2インスタンスに対して、AWS Systems Manager State Managerを使用してインスタンスを設定する、よりシンプルで堅牢な方法を紹介します。

Read More

モダンアプリケーション開発ホワイトペーパー(日本語改定版)が公開されました

皆さん、こんにちは! モダンアプリケーション開発スペシャリスト ソリューションアーキテクトの福井です。 私が執筆したモダンアプリケーション開発のホワイトペーパー(日本語版)がAWSホワイトペーパーサイトで公開されましたので、その内容を紹介させて頂きます。このホワイトペーパーは、以前こちらのブログで紹介させて頂いたModern Application Development on AWS(英語版)の日本語版になります。   ホワイトペーパーの内容 公開されたホワイトペーパードキュメントは、「AWS モダンアプリケーション開発 – AWS におけるクラウドネイティブ モダンアプリケーション開発と設計パターン」(日本語版)というタイトルの51ページのドキュメントで、 はじめに モダンアプリケーション開発 モダンアプリケーションの設計パターン AWSでのCI/CD まとめ の各章から構成されています。各章の簡単なご紹介は下記の通りです。

Read More

JenkinsとAWS CodeBuildおよびAWS CodeDeployとの連携によるCI/CDパイプラインの構築

この記事は、オープンソースの自動化サーバーである Jenkins を用いて、AWS CodeBuild のビルド成果物を AWS CodeDeploy でデプロイし、機能的なCI/CDパイプラインを構築する方法を説明します。適切な設定を行うことで、GitHubリポジトリにプッシュされたソースコードの変更を元にCI/CDパイプラインが起動され、自動的にCodeBuildに送られ、その出力がCodeDeployによってデプロイされることを実現できます。

Read More

Amazon RDS ポイントインタイムリカバリを管理するための AWS CloudFormation カスタムリソースの構築

Amazon RDS は、クラウド内でのリレーショナルデータベースのセットアップ、運用、およびスケーリングを容易にし、ハードウェアのプロビジョニング、データベースの設定、パッチ適用、およびバックアップなどの時間がかかる管理タスクを自動化しながら、コスト効率に優れ、サイズ変更が可能な容量を提供するため、煩わしい作業を AWS にまかせて、ビジネスロジックとアプリケーション機能に集中することが可能になります。 AWS 責任共有モデルでは、データを保護し、災害に備えて適切なバックアップと復旧を確実にすることがユーザーの責任になります。バックアップは、所定の時点におけるデータセットのスナップショットです。最後の完全なバックアップ後に行われた変更のすべてを復元するための復旧戦略を設計してください。 RDS を使用すると、新しいデータベースインスタンスを作成して、特定の時点にデータベースインスタンスを復元することができます。AWS マネジメントコンソール、AWS CLI、または RDS API を使用してポイントインタイムリカバリを実行できます。 組織がコンソールと AWS CLI へのアクセスをデータベース管理者のみに制限している場合があります。現在、AWS CloudFormation はポイントインタイムリカバリをサポートしないため、その次善策として AWS CloudFormation のカスタムリソースがあります。カスタムリソースでは、スタックを作成、更新 (カスタムリソースを変更した場合)、または削除するたびに AWS CloudFormation が実行するテンプレートに、カスタムプロビジョニングロジックを作成することができます。たとえば、AWS CloudFormation のリソースタイプとして使用できないリソースを含めたい場合は、カスタムリソースを使用してこれらのリソースを含めることができます。そうすることで、引き続き単一のスタック内で関連リソースのすべてを管理することができます。 この記事では、カスタムリソースである AWS Lambda 関数を使用して、バックアップ保持期間内の過去の任意の時間に RDS データベースのポイントインタイムリカバリを行う方法について説明します。 ソリューションの概要 RDS サービスは、データベースインスタンスのすべてのトランザクションログを 5 分ごとに Amazon S3 に保存します。コンソールでは、このプロパティがデータベースインスタンスの最終復元時間として表示されます。復元は、バックアップ保持期間内の任意の時点に行うことができます。 この記事では、以下の手順を実行します。 提供されている AWS CloudFormation テンプレートを使用して Lambda 関数と関連する IAM ロールを作成する。 必要なパラメータを持つ Lambda 関数を呼び出して、指定された時間へのデータベースの復旧を検証するために、もう一つの […]

Read More