コンテンツにスキップ

AWS Copilot v1.19: 内部ロードバランサー, サブネット配置指定など

投稿日: 2022 年 6 月 13 日

The AWS Copilot コアチームは v1.19 リリースを発表できることを嬉しく思います! このリリースに貢献した@gautam-nutalapati@jonstacksに心から感謝します。 私たちのパブリックコミュニティチャットは成長していて、300 人近い方がオンラインで、 日々助け合ってます。AWS Copilot に関心とサポートを示してくださった皆様に感謝しています。

Copilot v1.19 では新機能の追加と、いくつかの改良が行われました:

  • Backend Services用のロードバランサー: 内部向け に Application Load Balancer を追加することが出来る様になりました。(Load Balanced Web Service 用に作成する様な internet-facing とは対照的に)。 詳しくはこちら.
  • サブネット配置指定: ECS タスクの起動場所をより細かく制御出来る様になりました。サブネットの配置を publicprivate に加えて、特定のサブネットを Copilot に指定出来る様になりました。希望するサブネットの ID をワークロード Manifest に追加するだけで指定できます。
    # in copilot/{service name}/manifest.yml
    network:
      vpc:
        placement:
          subnets: ["SubnetID1", "SubnetID2"]
    
  • ホストゾーン-Aレコード管理: Service Manifest に、エイリアスと共にホストゾーンの ID を記載出来る様になりました。インポートした証明書を使用する Environment へのデプロイ時に Copilot が A レコードを追加します。(#3608, #3643)
    # single alias and hosted zone
    http:
      alias: example.com
      hosted_zone: HostedZoneID1
    
    # multiple aliases that share a hosted zone
    http:
      alias: ["example.com", "www.example.com"]
      hosted_zone: HostedZoneID1
    
    # multiple aliases, some of which use the top-level hosted zone
    http:
      hosted_zone: HostedZoneID1
      alias:
        - name: example.com
        - name: www.example.com
        - name: something-different.com
          hosted_zone: HostedZoneID2
    
  • プライベートルートテーブルへのアクセス: Copilot は CloudFormation スタックからプライベートルートテーブルの ID をエクスポートする様になりました。Addon を利用して VPC ゲートウェイエンドポイントを作成する時に利用します。(#3611)
  • ターゲットグループのヘルスチェックに利用する port: 新しい port フィールドにより、ヘルスチェックのために、ロードバランサーからのリクエストに利用するポートとは異なる、デフォルトではないポートを設定することが出来る様になりました。 (#3548)

    http:
      path: '/'
      healthcheck:
        port: 8080
    

  • バグフィックス:

    • Application から Service が削除された場合に、app init --resource-tags で適用されたタグを保持します(#3582)。
    • Network Load Balancer を利用した Load Balanced Web Service のオートスケーリングフィールドを有効化する際の不具合を修正しました(#3578)。
    • Fargate Windows タスクに対する copilot svc exec を有効にしました(#3566)。

このリリースには互換性を破る変更はありません。

Copilotとは?

AWS Copilot CLI は AWS 上でプロダクションレディなコンテナ化されたアプリケーションのビルド、リリース、そして運用のためのツールです。 開発のスタートからステージング環境へのプッシュ、本番環境へのリリースまで、Copilot はアプリケーション開発ライフサイクル全体の管理を容易にします。 Copilot の基礎となるのは、 AWS CloudFormation です。CloudFormation により、インフラストラクチャを 1 回の操作でコードとしてプロビジョニングできます。 Copilot は、さまざまなタイプのマイクロサービスの作成と運用の為に、事前定義された CloudFormation テンプレートと、ユーザーフレンドリーなワークフローを提供します。デプロイメントスクリプトを記述する代わりに、アプリケーションの開発に集中できます。

より詳細な AWS Copilot の紹介については、Overview を確認してください。

内部ロードバランサー

Contributed by Janice Huang and Danny Randall
Copilot の Environment とワークロードを開始する際にいくつかの設定し、内部ロードバランサーを作成することが出来る様になりました。内部ロードバランサーは、プライベート IP アドレスのみを利用します。

内部ロードバランサーは Environment レベルのリソースです。許可された Service 間で共有されます。copilot env init を実行すると、ALB をサポートする為に、いつくかの特定のリソースをインポートできます。 https を利用している Service に対しては、 --import-cert-arnsフラグを使って、既存のプライベート証明書の ARN をインポートしてください。現時点では、Copilot は Environment で利用している VPC にパブリックサブネットが 無い場合 にインポートした証明書を内部 ALB と関連づけます。つまりプライベートサブネットのみの場合にインポートします。Environment の VPC 内から入力トラフィックを ALB が受け付ける様にしたい場合は、--internal-alb-allow-vpc-ingress フラグを利用します ; そうしない場合、デフォルトでは、内部 ALB へのアクセスは、Environment 内に Copilot が作成した Service のみに限定されます。

内部ロードバランサーの背後に設置できる唯一の Service タイプはBackend Serviceです。Service をデプロイした Environment で ALB を作成する様に Copilot に指示をする為に、http フィールドを Backend Service ワークロードの Manifest に追加してください。

# in copilot/{service name}/manifest.yml
http:
  path: '/'
  network:
    vpc:
      placement: private
  # for https
  alias: example.aws
  hosted_zone: Z0873220N255IR3MTNR4
より詳細については、内部 ALBのドキュメントを確認してください!

次は?

以下のリンクより、新しい Copilot CLI バージョンをダウンロードし、GitHubコミュニティチャットに フィードバックを残してください。

今回のリリースの翻訳はソリューションアーキテクトの浅野が担当しました。