建立服務 - AWS Proton

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

建立服務

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

  1. 平台團隊發佈 AWS Proton 的服務範本名稱。

  2. 服務的名稱。

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

  4. 您想要使用的環境選項。

  5. 如果您使用的是包含服務管道的服務範本,則為程式碼儲存庫的連線 (選用)。

服務中有哪些項目?

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

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

  • 不包含服務管道的服務範本。

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

服務執行個體和選用管道會與服務建立關聯。您只能在服務建立和刪除動作的情況下建立或刪除管道。若要了解如何從服務新增和移除執行個體,請參閱 編輯服務

注意

您的環境是針對環境中 AWS的 或自我管理的 provisioning. AWS Proton provisions 服務,使用與環境相同的佈建方法。建立或更新服務執行個體的開發人員看不到差異,而且兩者的體驗都相同。

如需佈建方法的詳細資訊,請參閱 如何 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 Connection,從清單中選擇您的連線。

    2. 針對儲存庫 ID,從清單中選擇來源碼儲存庫的名稱。

    3. 針對分支名稱,從清單中選擇來源碼儲存庫分支的名稱。

  7. (選用) 在標籤區段中,選擇新增標籤,然後輸入索引鍵和值以建立客戶受管標籤。

  8. 選擇下一步

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

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

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

  12. 選擇建立

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

  13. 在導覽窗格中,選擇服務

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

AWS CLI

當您使用 時 AWS CLI,您可以在 YAML 格式的檔案中指定服務輸入,.aws-proton/service.yamlspec檔案位於您的來源碼目錄中。

您可以使用 CLI get-service-template-minor-version命令來檢視您在規格檔案中為 提供值所需的結構描述和選用參數。

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

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

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

    命令:

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

    規格:

    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 範例命令和回應所示。

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

規格:

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" } }