

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 建立您的第一個快速模式服務 AWS CLI
<a name="express-service-getting-started"></a>

本教學課程說明如何使用 建立快速模式服務應用程式 AWS AWS CLI。您將部署簡單的 Web 應用程式，以示範快速模式服務的核心功能。

## 先決條件
<a name="express-service-prerequisites"></a>

開始前，請確保您具備以下條件：
+ 具有適當許可 AWS 的帳戶
+  AWS AWS CLI 已安裝和設定的
+ 存放在 Amazon ECR 或私有登錄檔中的容器映像

## 步驟 1：建立 IAM 角色
<a name="express-service-create-execution-role"></a>

快速模式服務需要兩個 IAM 角色。任務執行角色允許 Amazon ECS 代您提取容器映像和寫入日誌。使用下列政策建立任務執行角色和基礎設施角色：

```
#Create the roles with ECS trust policies
aws iam create-role --role-name ecsTaskExecutionRole \
    --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "ecs-tasks.amazonaws.com"
                },
                "Action": "sts:AssumeRole",
            }
        ]
    }'

aws iam create-role --role-name ecsInfrastructureRoleForExpressServices \ 
    --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "AllowAccessInfrastructureForECSExpressServices",
                "Effect": "Allow",
                "Principal": {
                    "Service": "ecs.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }'
```

```
#Attach the AWS managed policies
aws iam attach-role-policy --role-name ecsTaskExecutionRole \
    --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
aws iam attach-role-policy --role-name ecsInfrastructureRoleForExpressServices \
    --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRoleforExpressGatewayServices
```

如需詳細資訊，請參閱[Amazon ECS 任務執行 IAM 角色](task_execution_IAM_role.md)。

## 步驟 2：建立您的第一個快速模式服務應用程式
<a name="express-service-create-basic"></a>

使用最低必要參數建立快速模式服務應用程式：

```
aws ecs create-express-gateway-service \
    --primary-container "image"="public.ecr.aws/nginx/nginx:latest" \
    --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \
    --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \
    --monitor-resources
```

此命令會使用下列項目建立快速模式服務應用程式：
+ 從映像名稱產生的唯一服務名稱
+ 1 個 vCPU 和 2 GB 記憶體
+ HTTPS 流量的連接埠 80
+ 根據 CPU 使用率自動擴展
+ 預設 VPC 和公有子網路中的面向網際網路的 Application Load Balancer 
+ 此服務獨有的 URL，格式為 `servicename.ecs.region.on.aws`

命令會持續監控佈建的資源，並傳回狀態。服務部署完成後，應用程式 URL 已準備好接收流量。當您中斷監控時，會傳回所建立服務的相關資訊，包括服務 ARN 和 URL：

```
{
    "service": {
        "cluster": "arn:aws:ecs:region:123456789012:cluster/default",
        "serviceName": "nginx-1234",
        "serviceArn": "arn:aws:ecs:region:123456789012:service/default/nginx-1234",
        "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices",
        "status": {
            "statusCode": "ACTIVE"
        },
        "createdAt": "UNIXTIMESTAMP"
    }
}
```

## 步驟 3：使用自訂設定建立快速模式服務應用程式
<a name="express-service-create-custom"></a>

您可以指定其他參數來自訂快速模式服務應用程式：

```
aws ecs create-express-gateway-service \
    --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \
    --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \
    --primary-container '{"image":"123456789012.dkr.ecr.region.amazonaws.com/my-app:latest","containerPort":8080,"environment":[{"name":"ENV","value":"production"},{"name":"DEBUG","value":"false"}]}' \
    --service-name "my-web-app" \
    --cpu 2 \
    --memory 4 \
    --health-check-path "/health" \
    --scaling-target '{"minTaskCount":3,"maxTaskCount":100}' \
    --monitor-resources
```

這會建立具有下列項目的應用程式：
+ 自訂名稱 "my-web-app"
+ 2 個 vCPU 和 4 GB 記憶體
+ 應用程式流量的連接埠 8080
+ 自訂運作狀態檢查端點
+ 環境變數
+ 最少 3 個任務，最多 100 個任務用於自動擴展

## 步驟 4：監控您的部署
<a name="express-service-monitor-deployment"></a>

`--monitor-resources` 旗標適用於對快速模式服務的任何建立、更新或刪除呼叫。但是，您也可以隨時監控服務中的資源，與變動動作分開。部署時間可能會因需要佈建的資源而有所不同。一旦狀態變更為 `ACTIVE`，您的應用程式就已準備好接收流量。

```
aws ecs monitor-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/app-23d97h88
```

您也可以找到快速模式服務應用程式的目前組態和狀態：

```
aws ecs describe-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/app-23d97h88
```

## 步驟 5：存取您的應用程式
<a name="express-service-access-application"></a>

使用提供的 URL 在啟用時存取快速模式服務應用程式。URL 格式為：

```
https://<service-name>.ecs.<region>.on.aws/
```

例如：

```
https://app-23d97h88.ecs.us-west-2.on.aws/
```

您的應用程式現在正在執行：
+ 自動 SSL/TLS 終止
+ 跨多個可用區域的負載平衡
+ 根據 CPU 使用率自動擴展
+ CloudWatch 記錄和監控
+ 用於未來更新的 5XX 轉返警示和 Canary 部署 