From 42eb88b5b1e2ba27ed2326d4f0031ddbf9fd99c8 Mon Sep 17 00:00:00 2001 From: Yuki ASANO Date: Wed, 16 Mar 2022 10:38:48 +0900 Subject: [PATCH 1/2] docs(ja): update jp-docs (commands/concepts/developings) --- site/content/docs/commands/env-init.ja.md | 43 ++++++++++----- .../docs/commands/pipeline-deploy.ja.md | 10 ++-- site/content/docs/commands/svc-deploy.ja.md | 9 ++++ site/content/docs/commands/svc-exec.ja.md | 1 + site/content/docs/concepts/environments.ja.md | 2 +- site/content/docs/concepts/pipelines.ja.md | 4 +- site/content/docs/concepts/services.ja.md | 16 ++++-- .../developing/additional-aws-resources.ja.md | 29 +++++----- .../custom-environment-resources.ja.md | 35 ++++++++++-- site/content/docs/developing/domain.ja.md | 33 +++++++----- .../developing/environment-variables.ja.md | 20 ++++++- .../docs/developing/publish-subscribe.ja.md | 17 ++++-- site/content/docs/developing/secrets.ja.md | 54 ++++++++++++++++--- site/content/docs/developing/sidecars.ja.md | 6 +++ 14 files changed, 214 insertions(+), 65 deletions(-) diff --git a/site/content/docs/commands/env-init.ja.md b/site/content/docs/commands/env-init.ja.md index 13847c8ec97..68b47934e1a 100644 --- a/site/content/docs/commands/env-init.ja.md +++ b/site/content/docs/commands/env-init.ja.md @@ -14,12 +14,12 @@ $ copilot env init [flags] AWS Copilot CLI の全てのコマンド同様、必須フラグを省略した場合にはそれらの情報の入力をインタラクティブに求められます。必須フラグを明示的に渡してコマンドを実行することでこれをスキップできます。 ``` Common Flags + -a, --app string Name of the application. --aws-access-key-id string Optional. An AWS access key. --aws-secret-access-key string Optional. An AWS secret access key. --aws-session-token string Optional. An AWS session token for temporary credentials. --default-config Optional. Skip prompting and use default environment configuration. -n, --name string Name of the environment. - --prod If the environment contains production services. --profile string Name of the profile. --region string Optional. An AWS region where the environment will be created. @@ -29,27 +29,44 @@ Import Existing Resources Flags --import-vpc-id string Optional. Use an existing VPC ID. Configure Default Resources Flags - --override-private-cidrs strings Optional. CIDR to use for private subnets (default 10.0.2.0/24,10.0.3.0/24). - --override-public-cidrs strings Optional. CIDR to use for public subnets (default 10.0.0.0/24,10.0.1.0/24). - --override-vpc-cidr ipNet Optional. Global CIDR to use for VPC (default 10.0.0.0/16). + --override-az-names strings Optional. Availability Zone names. + (default 2 random AZs) + --override-private-cidrs strings Optional. CIDR to use for private subnets. + (default 10.0.2.0/24,10.0.3.0/24) + --override-public-cidrs strings Optional. CIDR to use for public subnets. + (default 10.0.0.0/24,10.0.1.0/24) + --override-vpc-cidr ipNet Optional. Global CIDR to use for VPC. + (default 10.0.0.0/16) -Global Flags - -a, --app string Name of the application. +Telemetry Flags + --container-insights Optional. Enable CloudWatch Container Insights. ``` ## 実行例 -AWS プロファイルの "default" に、デフォルト設定を使用して test Environment を作成します。 - +AWS プロファイルの "default" 利用し、デフォルト設定を使用して test Environment を作成します。 ```bash $ copilot env init --name test --profile default --default-config ``` -AWS プロファイルの "prod-admin" を利用して既存の VPC に prod-iad Environment を作成します。 +AWS プロファイルの "prod-admin" を利用して既存の VPC に prod-iad Environment を作成し、 CloudWatch Container Insights を有効化します。 +```bash +$ copilot env init --name prod-iad --profile prod-admin --container-insights +``` + +VPC リソースをインポートして Environment を作成します。 +```bash +$ copilot env init --import-vpc-id vpc-099c32d2b98cdcf47 \ + --import-public-subnets subnet-013e8b691862966cf,subnet-014661ebb7ab8681a \ + --import-private-subnets subnet-055fafef48fb3c547,subnet-00c9e76f288363e7f +``` + +CIDR と AZ を上書きして、Environment を作成します。 + ```bash -$ copilot env init --name prod-iad --profile prod-admin --prod \ ---import-vpc-id vpc-099c32d2b98cdcf47 \ ---import-public-subnets subnet-013e8b691862966cf,subnet-014661ebb7ab8681a \ ---import-private-subnets subnet-055fafef48fb3c547,subnet-00c9e76f288363e7f +$ copilot env init --override-vpc-cidr 10.1.0.0/16 \ + --override-az-names us-west-2b,us-west-2c \ + --override-public-cidrs 10.1.0.0/24,10.1.1.0/24 \ + --override-private-cidrs 10.1.2.0/24,10.1.3.0/24 ``` ## 出力例 diff --git a/site/content/docs/commands/pipeline-deploy.ja.md b/site/content/docs/commands/pipeline-deploy.ja.md index 04e3a97f174..a0895378b3a 100644 --- a/site/content/docs/commands/pipeline-deploy.ja.md +++ b/site/content/docs/commands/pipeline-deploy.ja.md @@ -4,16 +4,18 @@ $ copilot pipeline deploy [flags] ``` ## コマンドの概要 -`copilot pipeline deploy` は、ワークスペース内に全ての Service がデプロイ対象となるように Pipeline を作成/更新します。あわせてこの Pipeline のデプロイターゲットが Pipeline 用 Manifest にて Application と紐付けられた Environment 群となるように作成/更新されます。 +`copilot pipeline deploy` は、ワークスペース内の全ての Service に対する Pipeline をデプロイします。Pipeline 用 Manifest にて Application と紐付けられた Environment 群を利用します。 ## フラグ ```bash --h, --help help for deploy - --yes Skips confirmation prompt. +-a, --app string Name of the application. +-h, --help help for deploy +-n, --name string Name of the pipeline. + --yes Skips confirmation prompt. ``` ## 実行例 -ワークスペース内の Service 群をデプロイ対象とする形で Pipeline を作成/更新します。 +ワークスペース内の Service 群と Job 群に対する Pipeline をデプロイします。 ```bash $ copilot pipeline deploy ``` diff --git a/site/content/docs/commands/svc-deploy.ja.md b/site/content/docs/commands/svc-deploy.ja.md index c473736fd1a..1983f6ca2f7 100644 --- a/site/content/docs/commands/svc-deploy.ja.md +++ b/site/content/docs/commands/svc-deploy.ja.md @@ -18,11 +18,20 @@ Service デプロイの手順は以下の通りです。 ## フラグ ```bash + -a, --app string Name of the application. -e, --env string Name of the environment. --force Optional. Force a new service deployment using the existing image. -h, --help help for deploy -n, --name string Name of the service. --resource-tags stringToString Optional. Labels with a key and value separated by commas. Allows you to categorize resources. (default []) + --no-rollback bool Optional. Disable automatic stack + rollback in case of deployment failure. + We do not recommend using this flag for a + production environment. --tag string Optional. The service's image tag. ``` + +!!!info + `--no-rollback` フラグは production 環境へのデプロイには **推奨されません**。 サービスダウンタイムが発生する可能性があります。 + 自動的なスタックロールバックが無効化されている状況でデプロイに失敗した場合、次のデプロイを行う前に、AWS Console や AWS CLI を利用して、手動でスタックを開始する必要がある場合があります。 \ No newline at end of file diff --git a/site/content/docs/commands/svc-exec.ja.md b/site/content/docs/commands/svc-exec.ja.md index ee64cc6b00e..2516be2386b 100644 --- a/site/content/docs/commands/svc-exec.ja.md +++ b/site/content/docs/commands/svc-exec.ja.md @@ -39,3 +39,4 @@ $ copilot svc exec -a my-app -e test --name backend --task-id 8c38184 --command !!! info 1. Service デプロイ前に Manifest で `exec: true` が設定されていることを確認してください。 2. これにより Service の Fargate Platform Version が 1.4.0 にアップデートされますのでご注意ください。プラットフォームバージョンをアップデートすると、[ECS サービスのリプレイス](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-platformversion)となり、サービスのダウンタイムが発生します。 + 3. `exec` は Windows コンテナではサポートされていません。 diff --git a/site/content/docs/concepts/environments.ja.md b/site/content/docs/concepts/environments.ja.md index b4fa5bbf34e..5e481b743b8 100644 --- a/site/content/docs/concepts/environments.ja.md +++ b/site/content/docs/concepts/environments.ja.md @@ -36,7 +36,7 @@ Service はパブリックサブネットで実行されますが、ロードバ ### ロードバランサーと DNS -"Load Balanced Web Service" タイプの Service を作ると、Copilot は Application Load Balancer を作成します。同一 Environment 内にデプロイされたすべての "Load Balanced Web Service" タイプの Service は、Service 固有のリスナーを作成してこのロードバランサーを共有します。ロードバランサーは VPC 内の各 Service と通信できるようにセットアップされます。 +"Load Balanced Web Service" タイプの Service を作ると、Copilot は Application Load Balancer を作成します。同一 Environment 内にデプロイされたすべての "Load Balanced Web Service" タイプの Service は、Service 固有のリスナーを作成してこの Application Load Balancer を共有します。ロードバランサーは VPC 内の各 Service と通信できるようにセットアップされます。 所有するドメイン名を Route 53 に登録するよう、Application 作成時にオプションとして設定できます。ドメイン名の利用が設定されている場合、Copilot は各 Environment の作成時に `environment-name.app-name.your-domain.com` のような形でサブドメインを登録し、ACM を通して発行した証明書を Application Load Balancer に設定します。これにより Service が HTTPS を利用できるようになります。 diff --git a/site/content/docs/concepts/pipelines.ja.md b/site/content/docs/concepts/pipelines.ja.md index 680fc4c11f2..3f75520e663 100644 --- a/site/content/docs/concepts/pipelines.ja.md +++ b/site/content/docs/concepts/pipelines.ja.md @@ -5,7 +5,7 @@ !!! Attention AWS CodePipeline は OS ファミリーが Windows の Service をサポートしていません。 - CodePipeline は、Build Stage で Linux ベースの AWS CodeBuild を使用しているため、現時点では Copilot Pipeline で Windows コンテナをビルドすることができません。 + CodePipeline は、Build Stage で Linux ベースの AWS CodeBuild を使用しているため、現時点では Copilot Pipeline で Windows コンテナをビルドできません。 ## Why? @@ -60,6 +60,8 @@ Pipeline の設定はワークスペースのレベルで作成されます。 * __Tracking repository__: デプロイ先の Environment を選択すると、次にどの Git リポジトリを CodePipeline からトラックしたいかを尋ねられます。ここで選ぶリポジトリへのプッシュが、CodePipeline の Pipeline をトリガーするリポジトリとなります。(設定したい対象のリポジトリがここでリストに表示されない場合、 `--url` フラグで明示的に Git リポジトリの URL を渡すこともできます。) +* __Tracking branch__: リポジトリを選択すると、 Copilot は現在のローカルブランチをパイプラインを利用するブランチとして指定します。これはステップ 2 で変更できます。 + ### ステップ2: Pipeline 用 Manifest ファイルの更新 (オプション) Service がシンプルな Manifest ファイルを持つのと同様に、Pipeline にも Manifest があります。`pipeline init` コマンドの実行が完了すると、`copilot/` ディレクトリ内に `pipeline.yml` と `buildspec.yml` という2つのファイルが作成されます。`pipeline.yml` の中は次のような感じになっているはずです (ここでは "api-frontend" という Service が "test" と "prod" の2つの Environment にデプロイされるものと仮定しましょう) diff --git a/site/content/docs/concepts/services.ja.md b/site/content/docs/concepts/services.ja.md index f9c4b9d1d0a..10e49ea6bb0 100644 --- a/site/content/docs/concepts/services.ja.md +++ b/site/content/docs/concepts/services.ja.md @@ -23,17 +23,23 @@ Service のタイプを選択すると、Copilot は Dockerfile 内で記述さ インターネットからアクセス可能な Service を作る際の選択肢には次の2つがあります。 * "Request-Driven Web Service" - Service 実行環境として AWS App Runner サービスを作成します。 -* "Load Balanced Web Service" - Service 実行環境として Appplication Load Balancer (ALB)、セキュリティグループ、ECS サービス (Fargate) を作成します。 +* "Load Balanced Web Service" - Service 実行環境として Appplication Load Balancer (ALB)、Network Load Balancer、または、その両方を作成し、セキュリティグループ、ECS サービス (Fargate) を利用します。 #### Request-Driven Web Service AWS App Runner を利用する Service で、受け付けるトラフィックに応じてオートスケールし、トラフィックがない場合は設定された最低インスタンス数までスケールダウンします。リクエスト量の大きな変化や恒常的な少ないリクエスト量が見込まれる HTTP サービスにとってもよりコスト効率の高い選択肢です。 +ECS とは異なり、 App Runner サービスはデフォルトでは VPC とは接続されていません。 出力トラフィックを VPC 経由でルーティングするには、 +マニフェスト内の[`network`](../manifest/rd-web-service.ja.md#network)フィールドを設定します。 #### Load Balanced Web Service -Application Load Balancer をトラフィックの入り口として Fargate 上でタスクを実行する ECS サービスです。安定したリクエスト量が見込まれる場合、Service から VPC 内のリソースにアクセスする必要がある場合、あるいはより高度な設定の必要がある場合に適した選択肢です。 +Application Load Balancer、Network Load Balancer、または両方をトラフィックの入り口として Fargate 上でタスクを実行する ECS サービスです。 +安定したリクエスト量が見込まれる場合、Service から VPC 内のリソースにアクセスする必要がある場合、あるいはより高度な設定の必要がある場合に適した HTTP まはた TCP サービスの選択肢です。 -Service でインターネット側からのリクエストを捌きたいですか?__Load Balanced Web Service__ を選べば、Copilot は Application Load Balancer やセキュリティグループ、そしてあなたの Service を Fargate で実行するための ECS サービスを作成します。 +Application Load Balancer は Environment レベルのリソースであり、Environment 内の全ての Load Balanced Web Service で共有されることに注意しましょう。 +詳細については、[こちら](environments.ja.md#load-balancers-and-dns)を確認してください。対照的に、 Net Work Load Balancer は Service レベルのリソースであり、 Service 間では共有されません。 + +下図は Application Load Balancer のみを含む Load Balanced Web Service の図です。 ![lb-web-service-infra](https://user-images.githubusercontent.com/879348/86045951-39762880-ba01-11ea-9a47-fc9278600154.png) @@ -45,9 +51,9 @@ VPC 外部からアクセスさせる必要はないが、Application 内の他 ![backend-service-infra](https://user-images.githubusercontent.com/879348/86046929-e8673400-ba02-11ea-8676-addd6042e517.png) ### Worker Service -__Worker Services__ は [pub/sub アーキテクチャ](https://aws.amazon.com/pub-sub-messaging/)による非同期のサービス間通信を実装することができます。 +__Worker Services__ は [pub/sub アーキテクチャ](https://aws.amazon.com/pub-sub-messaging/)による非同期のサービス間通信を実装できます。 -アプリケーション内のマイクロサービスはイベントを [Amazon SNS トピック](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) に `パブリッシュ` することができ、それを "Worker Service" がサブスクライバーとして受け取ることができます。 +アプリケーション内のマイクロサービスはイベントを [Amazon SNS トピック](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) に `パブリッシュ` でき、それを "Worker Service" がサブスクライバーとして受け取ることができます。 Worker Service は次の要素で構成されます。 diff --git a/site/content/docs/developing/additional-aws-resources.ja.md b/site/content/docs/developing/additional-aws-resources.ja.md index 3a1d20288cc..83da99c10e1 100644 --- a/site/content/docs/developing/additional-aws-resources.ja.md +++ b/site/content/docs/developing/additional-aws-resources.ja.md @@ -37,15 +37,20 @@ Service がデプロイされると Copilot はこれらのファイルを全て ## Addon テンプレートの構造 Addon テンプレートには任意の有効な CloudFormation テンプレートを用いることができます。しかしデフォルトでは Copilot は `App`, `Env` そして `Name` [パラメーター](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)を渡すため、必要であれば [Conditions セクション](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html) または [Mappings セクション](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html) でリソースのプロパティをカスタマイズできます。 -ここでは、ECS タスクから [Resources セクション](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/resources-section-structure.html) にアクセスするいくつかの方法を紹介します。 +### Addon リソースとの接続 +ESC タスクまたは App Runner インスタンスから Addon [リソース](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html)にアクセスするいくつかの方法を紹介します。 -1. テンプレートの中で [IAM 管理ポリシー](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html) リソースを使ってタスクにパーミッションを与え、 [Outputs セクション](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html) を使ってパーミッションを ECS タスクロールに注入してください。 -2. [Outputs セクション](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html) を作成して ECS タスクに環境変数として注入したい値を定義してください。 +* ECS タスクロールや App Runner インスタンスロールに対して追加のポリシーが必要な場合は、[IAM 管理ポリシー](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html) Addon リソースをテンプレートに追加し、そのリソースをテンプレート内の[Output](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)に記述します。 パーミッションが ECS タスクロール、または App Runner インスタンスロールに注入されます。 +* ECS サービスにセキュリティグループを追加したい場合、[セキュリティグループ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)をテンプレートに定義した上で、[Outputs](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)に記述します。これによりそのセキュリティグループが ECS サービスにアタッチされます。 +* AWS Secrets Manager を使って秘密情報を ECS コンテナに渡したい場合、[シークレット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html)をテンプレートに定義し、[Outputs ](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)に記述します。これによりその秘密情報がコンテナに大文字のスネークケース (SNAKE_CASE) で環境変数として渡されます。 +* 任意の環境変数を追加したい場合は、渡したい値を[Outputs](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)に記述します。これにより大文字スネークケース (SNAKE_CASE) の環境変数としてコンテナに渡されます。 + +### テンプレートの作成 +テンプレートを作成する場合は、以下に従う必要があります。 + +* `Parameters` セクションに `App` 、 `Env` 、 `Name` を含める +* 少なくとも 1 つの `Resource` を含める -* ECS タスクロールに追加のポリシーを設定したい場合、必要なパーミッションを持つ [IAM 管理ポリシー](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html) リソースをテンプレートに加え、そのリソースをテンプレート内の [Outputs セクション](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)に記述します。これにより必要なパーミッションが ECS タスクロールに追加されます。 -* ECS サービスにセキュリティグループを追加したい場合、[セキュリティグループ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)をテンプレートに定義した上で、[Outputs セクション](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)に記述します。これによりそのセキュリティグループが ECS サービスにアタッチされます。 -* AWS Secrets Manager を使って秘密情報をコンテナに渡したい場合、[シークレット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html)をテンプレートに定義し、[Outputs セクション](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)に記述します。これによりその秘密情報がコンテナに大文字のスネークケース (SNAKE_CASE) で環境変数として渡されます。 -* 任意の環境変数をコンテナに追加したい場合は、渡したい値を[Outputs セクション](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)に記述します。これにより大文字スネークケース (SNAKE_CASE) の環境変数としてコンテナに渡されます。 以下は DynamoDB テーブル Addon を作成するテンプレートの例です。 @@ -96,6 +101,11 @@ Resources: Resource: !Sub ${ MyTable.Arn} Outputs: + # 1. Copilot が ESC タスクロールに対して マネージドポリシーを追加するために、IAM ManagedPolicyを Outputセクションに追加する必要があります。 + MyTableAccessPolicyArn: + Description: "The ARN of the ManagedPolicy to attach to the task role." + Value: !Ref MyTableAccessPolicy + # 2. ECS タスクにリソースのプロパティを環境変数として注入したい場合は、 # Output セクションを定義する必要があります。 # @@ -103,11 +113,6 @@ Outputs: MyTableName: Description: "The name of this DynamoDB." Value: !Ref MyTable - - # 1. さらに IAM ManagedPolicy を出力して Copilot が ECS タスクロールに注入できるようにする必要もあります。 - MyTableAccessPolicyArn: - Description: "The ARN of the ManagedPolicy to attach to the task role." - Value: !Ref MyTableAccessPolicy ``` 次回リリースするとき Copilot はこのテンプレートを Service にネストされたスタックとして用います! diff --git a/site/content/docs/developing/custom-environment-resources.ja.md b/site/content/docs/developing/custom-environment-resources.ja.md index d03c7953e78..a0ef20362cb 100644 --- a/site/content/docs/developing/custom-environment-resources.ja.md +++ b/site/content/docs/developing/custom-environment-resources.ja.md @@ -1,6 +1,6 @@ # Environment のリソースをカスタマイズする -Copilot を使って新しく [Environment](../concepts/environments.ja.md) を作成するとき既存の VPC リソースをインポートすることもできます。(これは以下のように[`env init` を実行するときのフラグ](../commands/env-init.ja.md#_2)またはインタラクティブに質問に答えることで実現できます。) +Copilot を使って新しく [Environment](../concepts/environments.ja.md) を作成するとき既存の VPC リソースをインポートできます。(これは以下のように[`env init` を実行するときのフラグ](../commands/env-init.ja.md#_2)またはインタラクティブに質問に答えることで実現できます。) ```bash % copilot env init @@ -17,10 +17,39 @@ Which credentials would you like to use to create name? [profile default] > No, I'd like to import existing resources (VPC, subnets). ``` -デフォルト設定を選択すると、 Copilot は [AWS のベストプラクティス](https://aws.amazon.com/blogs/containers/amazon-ecs-availability-best-practices/)に従って 2 つのアベイラビリティゾーンにまたがった VPC と 2 つのパブリックサブネットおよびプライベートサブネットを作成します。多くのケースではこの設定はいいものですが、 Copilot は既存のリソースをインポートするときに柔軟に対応できます。例えば、インターネットに面していない 2 つのプライベートサブネットだけあってパブリックサブネットがない VPC をインポートすることができます(分離されたネットワークに関してもっと知りたい方は[こちら](https://github.com/aws/copilot-cli/discussions/2378)をご覧ください)。 +インポート機能を利用し、2 つのパブリックサブネットのみでプライベートサブネットが無い VPC ( default VPC のような ) や 2 つのプライベートサブネットのみでパブリックサブネットが無い、インターネットに面していないワークロード向けの VPC を取り込む事ができます。(分離されたネットワークについてより詳細に知りたい方は、[こちら](https://github.com/aws/copilot-cli/discussions/2378)をご覧ください。) + +## Copilot のデフォルトリソースの変更 +デフォルト設定を選択すると、 Copilot は [AWS のベストプラクティス](https://aws.amazon.com/blogs/containers/amazon-ecs-availability-best-practices/)に従って 2 つのアベイラビリティゾーンにまたがった VPC と 2 つのパブリックサブネットおよびプライベートサブネットを作成します。 +追加のアベイラビリティゾーンや CIDR 範囲を変更したい場合、以下の様な変更を選択できます。 +```bash +$ copilot env init --container-insights +What is your environment's name? env-name +Which credentials would you like to use to create name? [profile default] + + Would you like to use the default configuration for a new environment? + - A new VPC with 2 AZs, 2 public subnets and 2 private subnets + - A new ECS Cluster + - New IAM Roles to manage services and jobs in your environment + [Use arrows to move, type to filter] + Yes, use default. + > Yes, but I'd like configure the default resources (CIDR ranges). + No, I'd like to import existing resources (VPC, subnets). + + What VPC CIDR would you like to use? [? for help] (10.0.0.0/16) + + Which availability zones would you like to use? [Use arrows to move, space to select, type to filter, ? for more help] + [x] us-west-2a + [x] us-west-2b + > [x] us-west-2c + [ ] us-west-2d + + What CIDR would you like to use for your public subnets? [? for help] (10.0.0.0/24,10.0.1.0/24) 10.0.0.0/24,10.0.1.0/24,10.0.2.0/24 + What CIDR would you like to use for your private subnets? [? for help] (10.0.2.0/24,10.0.3.0/24) 10.0.3.0/24,10.0.4.0/24,10.0.5.0/24 +``` ## 制約 - 既存の VPC をインポートする場合は、[VPC のセキュリティのベストプラクティス](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-security-best-practices.html)と、[Amazon VPC FAQ の「セキュリティとフィルタリング」のセクション](https://aws.amazon.com/jp/vpc/faqs/#Security_and_Filtering)に準拠することをお勧めします。 -- プライベートホストゾーンをご利用の場合は、[こちら](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/hosted-zone-private-considerations.html#hosted-zone-private-considerations-vpc-settings)にあるように`enableDnsHostname` と `enableDnsSupport` を true に設定してください。 +- プライベートホストゾーンをご利用の場合は、[こちら](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/hosted-zone-private-considerations.html#hosted-zone-private-considerations-vpc-settings)にあるように `enableDnsHostname` と `enableDnsSupport` を true に設定してください。 - [プライベートサブネット](../manifest/lb-web-service.ja.md#network-vpc-placement)に、インターネットに面したワークロードをデプロイする場合は VPC に [NAT ゲートウェイ](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-nat-gateway.html)が必要です。 diff --git a/site/content/docs/developing/domain.ja.md b/site/content/docs/developing/domain.ja.md index 7080050076e..1277d287b96 100644 --- a/site/content/docs/developing/domain.ja.md +++ b/site/content/docs/developing/domain.ja.md @@ -1,5 +1,11 @@ # ドメイン +!!!attention + 現時点では、 `copilot app init` を実行した時のみに Route 53 ドメインが関連づけられます。 + Application のドメインをアップデートしたい場合 ([#3045](https://github.com/aws/copilot-cli/issues/3045)) 、 + `--domain` オプションをつけて、重複した Application を初期化する必要があります。その後、 `copilot app delete` を実行し、 + 古い Application を削除します。 + ## Load Balanced Web Service [Application](../concepts/applications.en.md#追加のアプリケーション設定)で説明したように、 `copilot app init` を実行するときに Application のドメイン名を設定できます。 [Load Balanced Web Service](../concepts/services.ja.md#load-balanced-web-service) をデプロイすると以下のようなドメイン名を使ってアクセスできるようになります。 @@ -7,25 +13,28 @@ ${SvcName}.${EnvName}.${AppName}.${DomainName} ``` -具体的には例えば以下のようになります。 +上記は、Application Load Balancer を利用している場合です。 ``` -https://kudo.test.coolapp.example.aws +${SvcName}-nlb.${EnvName}.${AppName}.${DomainName} ``` -現在、エイリアスは Application 作成時に指定したドメインの下でのみ使用できます。[サブドメインの責任の Route 53 への委任](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/CreatingNewSubdomain.html#UpdateDNSParentDomain)により、指定したエイリアスは、以下の 3 つのホストゾーンのいずれかでなければなりません。 +これは、Network Load Balancer を利用している場合です。 + +具体的には、 `https://kudo.test.coolapp.example.aws` や `kudo-nlb.test.coolapp.example.aws:443` となります。 + + +現在、エイリアスは Application 作成時に指定したドメインの下でのみ使用できます。[サブドメインの責任の Route 53 への委任](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/CreatingNewSubdomain.html#UpdateDNSParentDomain)により、指定したエイリアスは、以下の 3 つのホストゾーンの 1 つでなければなりません。 - root: `${DomainName}` - app: `${AppName}.${DomainName}` - env: `${EnvName}.${AppName}.${DomainName}` 将来的には証明書をインポートしたり、任意のエイリアスを使用できるようにして、この機能をより強力なものにする予定です! - -!!!info - root と app のホストゾーンは app アカウントに、env のホストゾーンは env アカウントにあります。 ## Service にエイリアスを設定する方法 -Copilot が Service につけるデフォルトのドメイン名を使いたくない場合は、 Service に[エイリアス](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html)を設定することも簡単にできます。 [Manifest](../manifest/overview.ja.md) のエイリアスセクションに直接指定できます。以下のスニペットは Service にエイリアスを設定する例です。 +Copilot が Service につけるデフォルトのドメイン名を使いたくない場合は、 Service に[エイリアス](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html)を設定することも簡単にできます。 [Manifest](../manifest/overview.ja.md) のエイリアスセクションに直接指定できます。 +以下のスニペットは Service にエイリアスを設定する例です。 ``` yaml # copilot/{service name}/manifest.yml のなかで @@ -34,23 +43,23 @@ http: alias: example.aws ``` -!!!info - この機能を使用するには Application のバージョンが v1.0.0 以上である必要があります。Application のバージョンが要件を満たしていない場合は、最初に [`app upgrade`](../commands/app-upgrade.ja.md) を実行するように促されます。 ## 裏で何がおきているか 裏側では Copilot は * Application を作成したアカウント内で `${AppName}.${DomainName}` というサブドメイン用のホストゾーンを作成し * Environment があるアカウント内で `${EnvName}.${AppName}.${DomainName}` という新しい Environment 用のサブドメインのために別のホストゾーンを作成し -* Environment 用のサブドメインに使う ACM 証明書の作成と検証を行い -* HTTPS リスナーと証明書を関連づけて HTTP のトラフィックを HTTPS にリダイレクトし +* Environment 用のサブドメインに使う ACM 証明書の作成と検証し +* ACM 証明書を + - エイリアスが Application Load Balancer (`http.alias`) として利用されている場合、HTTPS リスナー と関連づけて HTTP のトラフィックを HTTPS にリダイレクトし、 + - エリアスが `nlb.alias` として利用されていて、 TLS ターミーネーションが有効な場合、 Network Load Balancer の TLS リスナー * エイリアス用でオプションの A レコードを作成しています。 ## デモ [![AWS Copilot CLI v1.8.0 Release Highlights](https://img.youtube.com/vi/Oyr-n59mVjI/0.jpg)](https://www.youtube.com/embed/Oyr-n59mVjI) ## Request-Driven Web Service -Request-Driven Web Service に[カスタムドメイン](https://docs.aws.amazon.com/apprunner/latest/dg/manage-custom-domains.html)を追加することもできます。Load Balanced Web Service と同様に、Manifest の [`alias`](../manifest/rd-web-service.en.md#http-alias) フィールドを変更することで追加できます。 +Request-Driven Web Service に[カスタムドメイン](https://docs.aws.amazon.com/ja_jp/apprunner/latest/dg/manage-custom-domains.html)を追加もできます。Load Balanced Web Service と同様に、Manifest の [`alias`](../manifest/rd-web-service.en.md#http-alias) フィールドを変更することで追加できます。 ```yaml # in copilot/{service name}/manifest.yml http: diff --git a/site/content/docs/developing/environment-variables.ja.md b/site/content/docs/developing/environment-variables.ja.md index fb1276604f7..cd3a13761ff 100644 --- a/site/content/docs/developing/environment-variables.ja.md +++ b/site/content/docs/developing/environment-variables.ja.md @@ -20,15 +20,17 @@ database_name = os.getenv('DATABASE_NAME') ``` ## デフォルト環境変数とは + デフォルトで、AWS Copilot CLI はサービスが利用できるいくつかの環境変数を提供します。 * `COPILOT_APPLICATION_NAME` - この Service を実行している Application 名 * `COPILOT_ENVIRONMENT_NAME` - Service が実行されている Environment 名(例: test、prod) * `COPILOT_SERVICE_NAME` - 現在の Service 名 -* `COPILOT_LB_DNS` - (存在する場合)ロードバランサー名。例: _kudos-Publi-MC2WNHAIOAVS-588300247.us-west-2.elb.amazonaws.com_ 注: カスタムドメイン名を利用している場合でも、この値は ロードバランサーの DNS 名を保持します +* `COPILOT_LB_DNS` - (存在する場合)ロードバランサー名。例: _kudos-Publi-MC2WNHAIOAVS-588300247.us-west-2.elb.amazonaws.com_ 注: カスタムドメイン名を利用している場合でも、この値はロードバランサーの DNS 名を保持します * `COPILOT_SERVICE_DISCOVERY_ENDPOINT` - サービス検出を介して、Environment の中で他の Service と通信するために Service 名の後に追加されるエンドポイント。値は `{env name}.{app name}.local` となります。サービスディスカバリについてのより詳しい情報は[サービス検出のガイド](../developing/service-discovery.ja.md) を参照してください ## 環境変数を追加する方法 + 環境変数を追加するのは簡単です。[Manifest](../manifest/overview.ja.md) の `variables` セクションに直接追加できます。 下記のスニペットでは、`LOG_LEVEL` という変数を `debug` という値で Service に渡しています。 ```yaml @@ -36,6 +38,7 @@ database_name = os.getenv('DATABASE_NAME') variables: LOG_LEVEL: debug ``` + Environment に応じて、特定の環境変数の値を渡すこともできます。上記と同じ例で、ログレベルを設定し、production の Environment の時だけ値を `info` に書き換えてみます。Manifest の変更は、それをデプロイした時に反映されるので、ローカルでの変更は安全です。 ```yaml @@ -48,10 +51,25 @@ environments: variables: LOG_LEVEL: info ``` + ここでは、Manifest を編集して、環境変数を Application に追加する方法の簡単なガイドを紹介しています。👇 ![Editing the manifest to add env vars](https://raw.githubusercontent.com/kohidave/ecs-cliv2-demos/master/env-vars-edit.svg?sanitize=true) +さらに、環境変数をまとめて追加したい場合、 [env file](https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/taskdef-envfiles.html#taskdef-envfiles-considerations) に環境変数を追加します。そして、 ファイルパス ( Workspace の root からのファイルパス ) を [マニフェスト](../manifest/overview.ja.md)の `env_file` フィールドに記述します。 + +```yaml +# in copilot/{service name}/manifest.yml +env_file: log.env +``` + +And in `log.env` we could have +``` +#This is a comment and will be ignored +LOG_LEVEL=debug +LOG_INFO=all +``` + ## DynamoDB テーブルやS3 バケット、RDS データベースなどの名前を確認する方法 Copilot CLI を使って、DynamoDB テーブルや S3 バケット、データベースなどの追加の AWS リソースをプロビジョニングする場合、出力の値は環境変数として、Application に渡されます。より詳しい情報は、[AWS リソースを追加する](../developing/additional-aws-resources.ja.md)を確認してください。 diff --git a/site/content/docs/developing/publish-subscribe.ja.md b/site/content/docs/developing/publish-subscribe.ja.md index 1299c8ed159..5c99b487bb8 100644 --- a/site/content/docs/developing/publish-subscribe.ja.md +++ b/site/content/docs/developing/publish-subscribe.ja.md @@ -1,17 +1,17 @@ # パブリッシュ / サブスクライブ アーキテクチャ -Copilot [Worker Services](../manifest/worker-service.ja.md)は、すべてのサービスタイプとジョブタイプに共通する `publish` フィールドを利用して、サービス間でメッセージを受け渡すためのパブリッシュ / サブスクライブロジックを簡単に作成することができます。 +Copilot [Worker Services](../manifest/worker-service.ja.md)は、すべてのサービスタイプとジョブタイプに共通する `publish` フィールドを利用して、サービス間でメッセージを受け渡すためのパブリッシュ / サブスクライブロジックを簡単に作成できます。 AWS 上での一般的なパターンは、メッセージの配信と処理を行うための SNS と SQS の組み合わせです。[SNS](https://docs.aws.amazon.com/ja_jp/sns/latest/dg/welcome.html) は堅牢なメッセージ配信システムで、メッセージの配信を保証しながら複数のサブスクライブしたエンドポイントにメッセージを送ることができます。 -[SQS](https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)は、メッセージの非同期処理を可能にするメッセージキューです。キューには 1 つまたは複数の SNS トピックや、AWS EventBridge からのイベントを投入することができます。 +[SQS](https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)は、メッセージの非同期処理を可能にするメッセージキューです。キューには 1 つまたは複数の SNS トピックや、AWS EventBridge からのイベントを投入できます。 この 2 つのサービスを組み合わせることで、メッセージの送受信を効果的に疎結合にできます。つまり、パブリッシャーは自分のトピックをサブスクライブしているキューを意識する必要がなく、また Worker Service のコードはメッセージがどこから来るかを気にする必要がありません。 ## パブリッシャーからのメッセージ送信 既存のサービスから SNS へのメッセージのパブリッシュを許可するには、Manifest に `publish` フィールドを設定するだけです。 -SNS トピックの機能を表す名前を付けましょう。 +SNS トピックの機能を表す名前を付けることを提案します。 ```yaml # api サービス用の manifest.yml @@ -26,6 +26,13 @@ publish: これにより、[SNS トピック](https://docs.aws.amazon.com/ja_jp/sns/latest/dg/welcome.html)が作成されます。また、トピックにリソースポリシーが設定され、AWS アカウントにある SQS キューがサブスクリプションを作成できるようになります。 また Copilot は、任意の SNS トピックの ARN をコンテナ内の環境変数 `COPILOT_SNS_TOPIC_ARNS` に注入します。 +JSON 文字列の形式 : +```json +{ + "firstTopicName": "arn:aws:sns:us-east-1:123456789012:firstTopic", + "secondTopicName": "arn:aws:sns:us-east-1:123456789012:secondTopic", +} +``` ### Javascript での例 パブリッシャーのサービスがデプロイされると、AWS SDK を介して SNS にメッセージを送信できるようになります。 @@ -59,11 +66,11 @@ subscribe: tries: 5 ``` -Copilot は、この Worker Service のキューと、`api` サービスの `ordersTopic`トピックの間にサブスクリプションを作成します。また、キューの URI を、コンテナ内の環境変数 `COPILOT_QUEUE_URI` に注入します。 +Copilot は、この Worker Service のキューと、`api` サービスの `ordersTopic` トピックの間にサブスクリプションを作成します。また、キューの URI を、コンテナ内の環境変数 `COPILOT_QUEUE_URI` に注入します。 ### Javascript での例 -Worker Service 内のコンテナの中心となるビジネスロジックには、キューからメッセージをプルすることが含まれます。これを AWS SDK で行うには、選択した言語用の SQS クライアントを使用します。例えば Javascript でキューからメッセージをプルしたり、処理や削除を行うためには、以下のようなコードスニペットになります。 +Worker Service 内のコンテナの中心となるビジネスロジックには、キューからメッセージをプルすることが含まれます。これを AWS SDK で行うには、選択した言語用の SQS クライアントを使用します。例えば Javascript でキューからメッセージをプルしたり、処理や削除をするためには、以下のようなコードスニペットになります。 ```javascript const { SQSClient, ReceiveMessageCommand, DeleteMessageCommand } = require("@aws-sdk/client-sqs"); diff --git a/site/content/docs/developing/secrets.ja.md b/site/content/docs/developing/secrets.ja.md index 51e005b706d..ad32e8b7e11 100644 --- a/site/content/docs/developing/secrets.ja.md +++ b/site/content/docs/developing/secrets.ja.md @@ -1,16 +1,28 @@ # シークレット -シークレットは、OAuth トークン、シークレットキー、API キーなどの機密情報です。これらの情報はアプリケーションコードでは必要ですが、ソースコードにコミットするべきではありません。AWS Copilot CLI では、シークレットは環境変数として渡されますが、その機密性のため扱いが異なります (詳細は[環境変数を使った開発](../developing/environment-variables.ja.md)を参照して下さい) 。 +シークレットは、OAuth トークン、シークレットキー、API キーなどの機密情報です。これらの情報はアプリケーションコードでは必要ですが、 +ソースコードにコミットするべきではありません。AWS Copilot CLI では、シークレットは環境変数として渡されますが、その機密性のため扱いが異なります + (詳細は[環境変数を使った開発](../developing/environment-variables.ja.md)を参照して下さい) 。 ## シークレットの追加方法 -現在、シークレットを追加するには、シークレットを SecureString として [AWS Systems Manager パラメータストア](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-parameter-store.html) (SSM) に保存する必要があります。そして、SSM パラメータへの参照を [Manifest](../manifest/overview.ja.md) に追加します。 +シークレットを追加するには、シークレットを SecureString として [AWS Systems Manager パラメータストア](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-parameter-store.html) (SSM) 、または [AWS Secrets Manager](https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/intro.html) に保存する必要があります。そして、SSM パラメータへの参照を [Manifest](../manifest/overview.ja.md) に追加します。 -[`copilot secret init`](../commands/secret-init.ja.md) コマンドを利用することで簡単にシークレットを作成できます!シークレットを作成すると、Copilot はどのような名前で作られたかを教えてくれます。その名前を Service や Job の Manifest に記述しましょう。 +[`copilot secret init`](../commands/secret-init.ja.md) コマンドを利用することで簡単にシークレットを作成できます! -### あるいは... -Copilot の外で作成したシークレットを持ち込みたい場合、そのシークレットに次の2つのタグを設定することを忘れないようにしてください - `copilot-application: <このシークレットを利用したい Copilot Application 名>` と `copilot-environment: <このシークレットを利用したい Copilot Environment 名>.` +!!! attention + Request-Driven Web Service はシークレットの利用をサポートしていません。 + +## Copilot の外部で作成したシークレットの取り込み + +## SSM の場合 +Copilot の外部で作成したシークレットを持ち込みたい場合、そのシークレットに次の2つのタグを設定することを忘れないようにしてください。 + +| Key | Value | +| ----------------------- | ----------------------------------------------------------- | +| `copilot-application` | このシークレットを利用したい Copilot Application 名 | +| `copilot-environment` | このシークレットを利用したい Copilot Environment 名 | 上記の `copilot-application` と `copilot-environment` タグは、Copilot が持ち込みシークレットへのアクセスを適切に制御するために必要となります。 @@ -22,8 +34,34 @@ secrets: ``` 更新されたマニフェストをデプロイすると、Service や Job は環境変数 `GITHUB_WEBHOOK_SECRET` にアクセスできるようになります。この環境変数には、SSM パラメータ `GH_WEBHOOK_SECRET` の値である `secretvalue1234` が格納されます。 - これが機能するのは、ECS エージェントがタスクの開始時に SSM パラメータを解決し、環境変数を設定してくれるためです。 -!!! attention - Request-Driven Web Service はシークレットの利用をサポートしていません。 +### Secrets Manager の場合 +SSM と同様に、最初に Secrets Manager のシークレットに、`copilot-application` と `copilot-environment` のタグがあることを確認します。 + +次の構成の Secrets Manager のシークレットがあるとします。 + +| Field | Value | +| ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Name | `demo/test/mysql` | +| ARN | `arn:aws:secretsmanager:us-west-2:111122223333:secret:demo/test/mysql-Yi6mvL` | +| Value | `{"engine": "mysql","username": "user1","password": "i29wwX!%9wFV","host": "my-database-endpoint.us-east-1.rds.amazonaws.com","dbname": "myDatabase","port": "3306"`} | +| Tags | `copilot-application=demo`, `copilot-environment=test` | + + +マニフェストを次の様に変更します。 +```yaml +secrets: + # (推奨) オプション 1. 名前を使ってシークレットを参照します。 + DB: + secretsmanager: 'demo/test/mysql' + # JSON blob 内の特定のキーを参照できます。 + DB_PASSWORD: + secretsmanager: 'demo/test/mysql:password::' + # 事前に定義された環境変数を利用して、マニフェストを簡潔に保つ事ができます。 + DB_PASSWORD: + secretsmanager: '${COPILOT_APPLICATION_NAME}/${COPILOT_ENVIRONMENT_NAME}/mysql:password::' + + # オプション 2. 別の方法として、ARN によってシークレットを指定することができます。 + DB: "'arn:aws:secretsmanager:us-west-2:111122223333:secret:demo/test/mysql-Yi6mvL'" +``` \ No newline at end of file diff --git a/site/content/docs/developing/sidecars.ja.md b/site/content/docs/developing/sidecars.ja.md index 42514d7f3f8..3828b8258a2 100644 --- a/site/content/docs/developing/sidecars.ja.md +++ b/site/content/docs/developing/sidecars.ja.md @@ -90,6 +90,12 @@ logging: : # カスタムの Fluent Bit イメージ内の設定ファイルのフルパス configFilePath: + # サイドカーコンテナに対する環境変数 (オプション) + variables: + : + # サイドカーコンテナに公開するシークレット (オプション) + secrets: + : ``` 例えば以下のように設定できます。 From 69c529deb89219bc2752c754e2e802c62845437b Mon Sep 17 00:00:00 2001 From: Yuki ASANO Date: Fri, 18 Mar 2022 12:21:26 +0900 Subject: [PATCH 2/2] docs(ja): reflection of review comment --- site/content/docs/commands/env-init.ja.md | 2 +- site/content/docs/concepts/services.ja.md | 8 ++++---- site/content/docs/developing/domain.ja.md | 4 ++-- site/content/docs/developing/publish-subscribe.ja.md | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/site/content/docs/commands/env-init.ja.md b/site/content/docs/commands/env-init.ja.md index 68b47934e1a..b14d6c33c82 100644 --- a/site/content/docs/commands/env-init.ja.md +++ b/site/content/docs/commands/env-init.ja.md @@ -48,7 +48,7 @@ AWS プロファイルの "default" 利用し、デフォルト設定を使用 $ copilot env init --name test --profile default --default-config ``` -AWS プロファイルの "prod-admin" を利用して既存の VPC に prod-iad Environment を作成し、 CloudWatch Container Insights を有効化します。 +AWS プロファイルの "prod-admin" を利用して prod-iad Environment を作成し、 CloudWatch Container Insights を有効化します。 ```bash $ copilot env init --name prod-iad --profile prod-admin --container-insights ``` diff --git a/site/content/docs/concepts/services.ja.md b/site/content/docs/concepts/services.ja.md index 10e49ea6bb0..82b190d82d5 100644 --- a/site/content/docs/concepts/services.ja.md +++ b/site/content/docs/concepts/services.ja.md @@ -23,21 +23,21 @@ Service のタイプを選択すると、Copilot は Dockerfile 内で記述さ インターネットからアクセス可能な Service を作る際の選択肢には次の2つがあります。 * "Request-Driven Web Service" - Service 実行環境として AWS App Runner サービスを作成します。 -* "Load Balanced Web Service" - Service 実行環境として Appplication Load Balancer (ALB)、Network Load Balancer、または、その両方を作成し、セキュリティグループ、ECS サービス (Fargate) を利用します。 +* "Load Balanced Web Service" - Service 実行環境として Appplication Load Balancer (ALB)、Network Load Balancer、またはその両方を作成し、セキュリティグループ、ECS サービス (Fargate) を利用します。 #### Request-Driven Web Service AWS App Runner を利用する Service で、受け付けるトラフィックに応じてオートスケールし、トラフィックがない場合は設定された最低インスタンス数までスケールダウンします。リクエスト量の大きな変化や恒常的な少ないリクエスト量が見込まれる HTTP サービスにとってもよりコスト効率の高い選択肢です。 -ECS とは異なり、 App Runner サービスはデフォルトでは VPC とは接続されていません。 出力トラフィックを VPC 経由でルーティングするには、 +ECS とは異なり、 App Runner サービスはデフォルトでは VPC とは接続されていません。 Egress トラフィックを VPC 経由でルーティングするには、 マニフェスト内の[`network`](../manifest/rd-web-service.ja.md#network)フィールドを設定します。 #### Load Balanced Web Service Application Load Balancer、Network Load Balancer、または両方をトラフィックの入り口として Fargate 上でタスクを実行する ECS サービスです。 -安定したリクエスト量が見込まれる場合、Service から VPC 内のリソースにアクセスする必要がある場合、あるいはより高度な設定の必要がある場合に適した HTTP まはた TCP サービスの選択肢です。 +安定したリクエスト量が見込まれる場合、Service から VPC 内のリソースにアクセスする必要がある場合、あるいはより高度な設定の必要がある場合に適した HTTP または TCP サービスの選択肢です。 Application Load Balancer は Environment レベルのリソースであり、Environment 内の全ての Load Balanced Web Service で共有されることに注意しましょう。 -詳細については、[こちら](environments.ja.md#load-balancers-and-dns)を確認してください。対照的に、 Net Work Load Balancer は Service レベルのリソースであり、 Service 間では共有されません。 +詳細については、[こちら](environments.ja.md#load-balancers-and-dns)を確認してください。対照的に、 Network Load Balancer は Service レベルのリソースであり、 Service 間では共有されません。 下図は Application Load Balancer のみを含む Load Balanced Web Service の図です。 diff --git a/site/content/docs/developing/domain.ja.md b/site/content/docs/developing/domain.ja.md index 1277d287b96..1a882e52298 100644 --- a/site/content/docs/developing/domain.ja.md +++ b/site/content/docs/developing/domain.ja.md @@ -51,8 +51,8 @@ http: * Environment があるアカウント内で `${EnvName}.${AppName}.${DomainName}` という新しい Environment 用のサブドメインのために別のホストゾーンを作成し * Environment 用のサブドメインに使う ACM 証明書の作成と検証し * ACM 証明書を - - エイリアスが Application Load Balancer (`http.alias`) として利用されている場合、HTTPS リスナー と関連づけて HTTP のトラフィックを HTTPS にリダイレクトし、 - - エリアスが `nlb.alias` として利用されていて、 TLS ターミーネーションが有効な場合、 Network Load Balancer の TLS リスナー + - エイリアスが Application Load Balancer (`http.alias`) として利用されている場合、HTTPS リスナーと関連づけて HTTP のトラフィックを HTTPS にリダイレクトし + - エリアスが `nlb.alias` として利用されていて、 TLS ターミーネーションが有効な場合、 Network Load Balancer の TLS リスナーと関連づけて * エイリアス用でオプションの A レコードを作成しています。 ## デモ diff --git a/site/content/docs/developing/publish-subscribe.ja.md b/site/content/docs/developing/publish-subscribe.ja.md index 5c99b487bb8..f8a597f2bf1 100644 --- a/site/content/docs/developing/publish-subscribe.ja.md +++ b/site/content/docs/developing/publish-subscribe.ja.md @@ -1,6 +1,6 @@ # パブリッシュ / サブスクライブ アーキテクチャ -Copilot [Worker Services](../manifest/worker-service.ja.md)は、すべてのサービスタイプとジョブタイプに共通する `publish` フィールドを利用して、サービス間でメッセージを受け渡すためのパブリッシュ / サブスクライブロジックを簡単に作成できます。 +Copilot [Worker Services](../manifest/worker-service.ja.md)は、すべての Service タイプと Job タイプに共通する `publish` フィールドを利用して、サービス間でメッセージを受け渡すためのパブリッシュ / サブスクライブロジックを簡単に作成できます。 AWS 上での一般的なパターンは、メッセージの配信と処理を行うための SNS と SQS の組み合わせです。[SNS](https://docs.aws.amazon.com/ja_jp/sns/latest/dg/welcome.html) は堅牢なメッセージ配信システムで、メッセージの配信を保証しながら複数のサブスクライブしたエンドポイントにメッセージを送ることができます。