AWS Copilot v1.23: App Runner プライベートサービス, Aurora Serverless v2 など!
投稿日: 2022 年 11 月 1 日
AWS Copilot コアチームは Copilot v1.23 リリースを発表します。 私たちのパブリックなコミュニティチャットは成長しており、オンラインでは 300 人以上、GitHub では 2.5k 以上のスターを獲得しています。 AWS Copilot へご支援、ご支持いただいている皆様お一人お一人に感謝をいたします。
Copilot v1.23 では、いくつかの新機能と改良が施されています。
- App Runner プライベートサービス: App Runner でプライベートサービスの起動がサポートされました。Request-Driven Web Service Manifest に
http.private
を追加すると、App Runner プライベートサービスを作成できます。詳細はこちらを確認してください。 storage init
で Aurora Serverless v2 をサポート: 詳細はこちらを確認してください。- Environment Manifest における誤った
http
フィールドの移動(後方互換性あり!): 詳細はこちらを確認してください。 - ルートファイルシステムへのコンテナアクセスを読み取り専用に制限: 詳細はこちらを確認してください。 (#4062).
- ALB の HTTPS レイヤーに対する SSL ポリシーを設定します: 詳細はこちらを確認してください。 (#4099).
- ALB に対する ソース IP によるアクセス制限: 詳細はこちらを確認してください。 (#4103).
AWS Copilot とは?
AWS Copilot CLI は AWS 上でプロダクションレディなコンテナ化されたアプリケーションのビルド、リリース、そして運用のためのツールです。 開発のスタートからステージング環境へのプッシュ、本番環境へのリリースまで、Copilot はアプリケーション開発ライフサイクル全体の管理を容易にします。 Copilot の基礎となるのは、 AWS CloudFormation です。CloudFormation により、インフラストラクチャを 1 回の操作でコードとしてプロビジョニングできます。 Copilot は、さまざまなタイプのマイクロサービスの作成と運用の為に、事前定義された CloudFormation テンプレートと、ユーザーフレンドリーなワークフローを提供します。 デプロイメントスクリプトを記述する代わりに、アプリケーションの開発に集中できます。
より詳細な AWS Copilot の紹介については、Overview を確認してください。
App Runner プライベートサービス
Copilot を使って App Runner プライベートサービスを作成出来ます。Request-Driven Web Service の Manifest を更新し、
http:
private: true
http:
private:
endpoint: vpce-12345
network.vpc.placement: 'private'
と設定します。
storage init
で Aurora Serverless v2 をサポート
Aurora Serverless v2 は今年の初めに一般利用を開始しており、 現在、Copilot のストレージオプションとしてサポートされています。
以前は、次のコマンドを実行し、
$ copilot storage init --storage-type Aurora
copilot storage init --storage-type Aurora --serverless-version v1
というコマンドを実行します。
より詳しく知りたい場合は、storage init
のドキュメントを確認してください!
Environment Manifest における誤った http
フィールドの移動(後方互換性あり!)
Copilot v1.23.0 では、 Environment Manifest における http
フィールド下の階層を修正しました。
何が修正されるのか、それは何故なのか?
Copilot v1.20.0では、Environment Manifest をリリースし、infrastructure as code の利点を Environment にも取り込みました。当時の http
フィールド階層は次の様な形です。
name: test
type: Environment
http:
public:
security_groups:
ingress: # [Flaw 1]
restrict_to: # [Flaw 2]
cdn: true
private:
security_groups:
ingress: # [Flaw 1]
from_vpc: true # [Flaw 2]
-
security_groups
下のingress
は曖昧。 各セキュリティグループには、対応する ingress があります。複数のセキュリティグループの "ingress" が何を意味するのか不明です。(ここでは、 Copilot がアプリケーションロードバランサーに適用するデフォルトのセキュリティグループを Ingress に設定する事を意味していました。) -
restrict_to
が冗長。http.public
下のingress
は制限され、http.private
下のingress
は許可されることが明確に示唆されなければなりません。from_vpc
の"from"
も同様の冗長性の問題があります。
これらを修正することで、次の様な Envrionment Manifest になります。
name: test
type: Environment
http:
public:
ingress:
cdn: true
private:
ingress:
vpc: true
私はどうすればいいですか?
短い答え: 現時点ではありません。
(推奨) 正しい階層に Manifest を修正する
既存の Manifest は動作し続けますが(これについては後述します)、 Manifest を修正された階層に更新することをお勧めします。 以下は、影響を受けるフィールドを更新する方法のスニペットです。
正しい階層に Manifest を修正する
# If you have
http:
public:
security_groups:
ingress:
restrict_to:
cdn: true
# Then change it to
http:
public:
ingress:
cdn: true
# If you have
http:
private:
security_groups:
ingress:
from_vpc: true
# Then change it to
http:
private:
ingress:
vpc: true
既存の Manifest は動作し続けます
Envrionment Manifest を正しい階層にすぐに修正しなくても大丈夫です。http.public.security_groups.ingress
(不備のあるバージョン)と http.public.ingress
(修正されたバージョン)の両方を含む Manifest に更新しない限り、既存の Manifest は動作し続けます。
例えば、 v1.23.0 のリリース前に、Manifest が次の様なものだったとします。
# Flawed hierarchy but will keep working.
http:
public:
security_groups:
ingress:
restrict_to:
cdn: true
しかし、ある時点で、次の様に Manifest を修正したとします。
# Error! Both flawed hierarchy and corrected hierarchy are present.
http:
public:
security_groups:
ingress:
restrict_to:
cdn: true
ingress:
source_ips:
- 10.0.0.0/24
- 10.0.1.0/24
http.public.security_groups.ingress
(不備のあるバージョン)と http.public.ingress
(修正されたバージョン)の両方が存在することを検出します。エラーとなり、修正されたバージョンの http.public.ingress
だけが存在する様に、Manifest を更新する様な提案が表示されます。
# Same configuration but written in the corrected hierarchy.
http:
public:
ingress:
cdn: true
source_ips:
- 10.0.0.0/24
- 10.0.1.0/24
次は?
以下のリンクより、新しい Copilot CLI バージョンをダウンロードし、GitHub や コミュニティチャットにフィードバックを残してください。
- 最新 CLI バージョンのダウンロード
- スタートガイドを試す
- GitHub でリリースノートの全文を読む
今回のリリースの翻訳はソリューションアーキテクトの浅野が担当しました。