建立服務 - AWS Proton

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

建立服務

若要以開發人員身分部署應用程式,您可以建立服務並提供下列輸入。AWS Proton

  1. 由平台小組發佈的AWS Proton服務範本名稱。

  2. 服務的名稱。

  3. 您要部署的服務執行個體數。

  4. 您想要使用的環境。

  5. 如果您使用的服務模板包含服務管道(可選),則與代碼存儲庫的連接。

什麼是在一個服務?

在建立AWS Proton服務時,您可以從兩種不同類型的服務範本中進行選擇:

  • 包含服務管線 (預設值) 的服務範本。

  • 包含服務管線的服務範本。

在建立服務時,您必須至少建立一個服務執行個體。

服務執行個體和選用管線與服務相關聯。您只能在服務建立和刪除動作的前後關聯內建立刪除管線。若要了解如何從服務新增和移除執行個體的詳細資訊,請參閱編輯服務

注意

您的環境已設定為AWS-或自我管理的佈建。 AWS Proton使用與環境使用相同的佈建方法,在環境中佈建服務。創建或更新服務實例的開發人員看不到差異,他們的體驗在兩種情況下都是相同的。

如需佈建方法的詳細資訊,請參閱如何AWS Proton佈建基礎設

服務範本

主要和次要版本的服務模板都可用。使用主控台時,請選取服務範本的最新Recommended主要和次要版本。當您使用AWS CLI且只指定服務範本的主要版本時,您會隱含地指定其最新的Recommended次要版本。

以下說明主要和次要範本版本及其使用方式之間的差異。

  • 模板的新版本在獲得Recommended平台團隊成員的批准後立即變為。這表示新服務是使用該版本建立的,而且系統會提示您將現有服務更新為新版本。

  • 通過AWS Proton,平台團隊可以自動將服務實例更新為服務模板的新次要版本。次要版本必須向後相容。

  • 由於主要版本要求您提供新的輸入作為更新過程的一部分,您需要將服務更新為其服務模板的主要版本。主要版本向後兼容。

建立服務

下列程序顯示如何使用主AWS Proton控台或AWS CLI建立具有或不含服務管線的服務。

AWS Management Console
建立如下列主控台步驟所示的服務。
  1. AWS Proton主控台中,選擇 [服務]。

  2. 選擇 Create service (建立服務)

  3. 在 [選擇服務範本] 頁面中,選取範本並選擇 [設定]。

    如果您想使用已啟用的管道,請為您的服務選擇標記為「排除管道」的範本。

  4. 在 [設定服務] 頁面的 [服務設定] 區段中,輸入服務名稱

  5. (選用) 輸入服務的描述。

  6. 在「服務儲存庫設定」區段中:
    1. 對於「CodeStar 連線」,請從清單中選擇您的連線。

    2. 對於「儲存庫 ID」,請從清單中選擇原始程式碼儲存庫的名稱。

    3. 對於「分支名稱」,請從清單中選擇原始程式碼儲存庫分支的名稱。

  7. (選擇性) 在「標」區段中,選擇「新增標籤」,然後輸入金鑰和值以建立客戶管理的標籤。

  8. 選擇 Next (下一步)。

  9. 在 [設定自訂設定] 頁面的 [服務執行個體] 區段的 [新增執行個體] 區段中。您必須輸入required參數的值。您可以輸入optional參數值,或在指定時使用預設值。

  10. 在「管線輸入」區段中,您必須輸入required參數值。您可以輸入optional參數值,或在指定時使用預設值。

  11. 選擇 [下一步] 並檢閱您的輸入。

  12. 選擇 Create (建立)。

    檢視服務詳細資訊和狀態,以及您服務的AWS受管理標籤和客戶管理標籤。

  13. 在導覽窗格中,選擇 Services (服務)。

    新頁面會顯示您的服務清單,以及狀態和其他服務詳細資料。

AWS CLI

使用時AWS CLI,您可以在位於原始程式碼目錄中的 YAML 格式spec檔案中指定服務輸入。.aws-proton/service.yaml

您可以使用 CLIget-service-template-minor-version 命令來檢視您在 spec 檔案中提供值的結構描述必要參數和選用參數。

如果您想要使用具有的服務範本pipelineProvisioning: "CUSTOMER_MANAGED"請勿在規格中包含該pipeline:區段,也不要在create-service命令中包含-repository-connection-arn-repository-id、和-branch-name參數。

使用服務管線建立服務,如下列 CLI 步驟所示。

  1. 設定管線的服務角色,如下列 CLI 範例命令所示。

    命令:

    $ aws proton update-account-settings \ --pipeline-service-role-arn "arn:aws:iam::123456789012:role/AWSProtonServiceRole"
  2. 下列清單顯示以服務範本結構描述為基礎的範例規格,其中包括服務管線和執行個體輸入。

    Spec (格)

    proton: ServiceSpec pipeline: my_sample_pipeline_required_input: "hello" my_sample_pipeline_optional_input: "bye" instances: - name: "acme-network-dev" environment: "ENV_NAME" spec: my_sample_service_instance_required_input: "hi" my_sample_service_instance_optional_input: "ho"

    使用管線建立服務,如下列 CLI 範例命令和回應所示。

    命令:

    $ aws proton create-service \ --name "MySimpleService" \ --branch-name "mainline" \ --template-major-version "1" \ --template-name "fargate-service" \ --repository-connection-arn "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" \ --repository-id "myorg/myapp" \ --spec "file://spec.yaml"

    回應:

    { "service": { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService", "createdAt": "2020-11-18T19:50:27.460000+00:00", "lastModifiedAt": "2020-11-18T19:50:27.460000+00:00", "name": "MySimpleService", "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "repositoryId": "myorg/myapp", "status": "CREATE_IN_PROGRESS", "templateName": "fargate-service" } }

建立沒有服務管線的服務,如下列 CLI 範例命令和回應所示。

以下顯示包含服務管線輸入的範例規格。

Spec (格)

proton: ServiceSpec instances: - name: "acme-network-dev" environment: "ENV_NAME" spec: my_sample_service_instance_required_input: "hi" my_sample_service_instance_optional_input: "ho"

若要在沒有佈建服務管線的情況下建立服務,您需要提供的路徑,而spec.yaml包含存放庫參數,如下列 CLI 範例命令和回應所示。

命令:

$ aws proton create-service \ --name "MySimpleServiceNoPipeline" \ --template-major-version "1" \ --template-name "fargate-service" \ --spec "file://spec-no-pipeline.yaml"

回應:

{ "service": { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleServiceNoPipeline", "createdAt": "2020-11-18T19:50:27.460000+00:00", "lastModifiedAt": "2020-11-18T19:50:27.460000+00:00", "name": "MySimpleServiceNoPipeline", "status": "CREATE_IN_PROGRESS", "templateName": "fargate-service-no-pipeline" } }