AWS CloudFormation 自訂資源 - AWS ParallelCluster

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

AWS CloudFormation 自訂資源

從 AWS ParallelCluster 版本 3.6.0 開始,您可以在 AWS CloudFormation 堆疊中使用 AWS ParallelCluster CloudFormation 自訂資源。自訂資源是 AWS ParallelCluster 託管堆疊。如此一來,您就可以用 CloudFormation 來設定和管理叢集。例如,您可以在 CloudFormation 堆疊中設定叢集外部資源,例如網路、共用儲存和安全群組基礎結構。此外,您可以使用 CloudFormation 基礎結構即程式碼管道來管理叢集。

執行下列動作,將 AWS ParallelCluster 自訂資源新增至 CloudFormation 範本:

  1. 新增擁有和託管的自訂資源提供者堆疊 AWS ParallelCluster。

  2. 將 CloudFormation 範本中的提供者堆疊參考為自訂資源。

自訂資源提供者堆疊會處理並回應要 CloudFormation 求。例如,當您部署 CloudFormation 堆疊時,也會設定並建立叢集。若要更新叢集,請更新 CloudFormation 堆疊。刪除堆疊時,請刪除叢集。如需有關 CloudFormation 自訂資源的詳細資訊,請參閱AWS CloudFormation 使用指南中的自訂資源

警告

CloudFormation 不檢測自定義資源漂移。僅用 CloudFormation 於更新叢集配置和刪除叢集。

您可以使用 pcluster CLI 或監視叢集的狀態或更新計算叢集,但不能使用它們來更新叢集配置或刪除叢集。AWS ParallelCluster界面

注意

我們建議您在堆疊中加入終止保護,以避免意外移除。

提供者堆疊由 AWS ParallelCluster

自訂資源提供者堆疊的格式如下列 CloudFormation 範本程式碼片段所示:

PclusterClusterProvider: Type: AWS::CloudFormation::Stack Properties: Parameters: CustomLambdaRole: # (Optional) RoleARN to override default AdditionalIamPolicies: # (Optional) comma-separated list of IAM policies to add TemplateURL: !Sub - https://${AWS::Region}-aws-parallelcluster.s3.${AWS::Region}.${AWS::URLSuffix}/parallelcluster/${Version}/templates/custom_resource/cluster.yaml - { Version: 3.7.0 }
屬性:
參數:
CustomLambdaRole (可選):

具有執行權限的自訂角色 AWS Lambda ,可建立和管理叢集。根據預設,角色會使用AWS ParallelCluster 文件中預設定義的相同原則。

AdditionalIamPolicies (可選):

以逗號分隔的其他 IAM 政策清單,其中包含要新增至 Lambda 使用之角色的 Amazon 資源名稱 (ARN)。這僅在CustomLambdaRole未指定並且可以保持空白時才使用。

如果您需要額外的標頭節點、運算節點或存取 Amazon S3 儲存貯體的政策,請將它們新增到CustomLambdaRoleAdditionalIamPolicy屬性。

如需有關預設原則的詳細資訊,請參閱AWS Identity and Access Management 權限 AWS ParallelCluster

TemplateURL(必填):

自 AWS ParallelCluster 訂資源檔案 URL。

輸出:
ServiceToken:

可用作自訂資源ServiceToken內容的值。自訂資源會ServiceToken指定 AWS CloudFormation 傳送請求的位置。這是包含在 AWS CloudFormation 範本中之叢集資源的必要輸入。

LogGroupArn:

基礎資源記錄到的 ARN。 CloudWatch LogGroup

LambdaLayerArn:

用於執行 AWS ParallelCluster 作業的 Lambda 層的 ARN。

叢集資源

CloudFormation 叢集資源的格式如下列 CloudFormation 範本程式碼片段所示:

PclusterCluster: Type: Custom::PclusterCluster Properties: ServiceToken: !GetAtt [ PclusterClusterProvider , Outputs.ServiceToken ] ClusterName: !Sub 'c-${AWS::StackName}' # Must be different from StackName ClusterConfiguration: # Your Cluster Configuration
屬性:
ServiceToken:

提 AWS ParallelCluster 供者堆疊ServiceToken輸出。

ClusterName:

要建立和管理的叢集名稱。名稱不得與 CloudFormation 堆疊的名稱相符。建立叢集之後,就無法變更名稱。

ClusterConfiguration:

叢集配置 YAML 檔案,如中叢集配置檔所述。不過,您可以使用一般的 CloudFormation 建構,例如建函式。

DeletionPolicy:

定義刪除根堆疊時是否刪除叢集。預設值為 Delete

保留:

如果刪除自訂資源,請保留叢集。

注意

若要維持保留的叢集運作,叢集相依資源 (例如儲存區和網路) 必須將刪除原則設定為保留。

刪除:

刪除自訂資源時,請刪除叢集。

Fn::GetAtt返回值:

Fn::GetAtt內在函數返回一個類型的指定屬性的值。如需有關使用Fn::GetAtt intrinsic函數的詳細資訊,請參閱 Fn:: GetAtt

ClusterProperties:

作業中的pcluster describe-cluster值。

驗證訊息:

字串,其中包含上次建立或更新作業期間發生的所有驗證訊息。

logGroupName:

用於記錄 Lambda 叢集作業的日誌群組名稱。記錄事件會保留 90 天,並在刪除叢集後保留記錄群組。

範例:Fn::GetAtt:

# Provide the public IP address of the head node as an output of a stack Outputs: HeadNodeIp: Description: The public IP address of the head node Value: !GetAtt [ PclusterCluster, headNode.publicIpAddress ]

範例:具有 AWS ParallelCluster 自訂資源的簡單完整 CloudFormation 範本:

AWSTemplateFormatVersion: '2010-09-09' Description: > AWS ParallelCluster CloudFormation Template Parameters: HeadNodeSubnet: Description: Subnet where the HeadNode will run Type: AWS::EC2::Subnet::Id ComputeSubnet: Description: Subnet where the Compute Nodes will run Type: AWS::EC2::Subnet::Id KeyName: Description: KeyPair to login to the head node Type: AWS::EC2::KeyPair::KeyName Resources: PclusterClusterProvider: Type: AWS::CloudFormation::Stack Properties: TemplateURL: !Sub - https://${AWS::Region}-aws-parallelcluster.s3.${AWS::Region}.${AWS::URLSuffix}/parallelcluster/${Version}/templates/custom_resource/cluster.yaml - { Version: 3.7.0 } PclusterCluster: Type: Custom::PclusterCluster Properties: ServiceToken: !GetAtt [ PclusterClusterProvider , Outputs.ServiceToken ] ClusterName: !Sub 'c-${AWS::StackName}' ClusterConfiguration: Image: Os: alinux2 HeadNode: InstanceType: t2.medium Networking: SubnetId: !Ref HeadNodeSubnet Ssh: KeyName: !Ref KeyName Scheduling: Scheduler: slurm SlurmQueues: - Name: queue0 ComputeResources: - Name: queue0-cr0 InstanceType: t2.micro Networking: SubnetIds: - !Ref ComputeSubnet Outputs: HeadNodeIp: Description: The Public IP address of the HeadNode Value: !GetAtt [ PclusterCluster, headNode.publicIpAddress ] ValidationMessages: Description: Any warnings from cluster create or update operations. Value: !GetAtt PclusterCluster.validationMessages

若要進一步瞭解如何使用 CloudFormation AWS ParallelCluster 自訂資源,請參閱建立叢集 AWS CloudFormation

叢集作業

將叢集自訂資源新增至 CloudFormation 堆疊時, CloudFormation 可以執行下列叢集作業:

  • CloudFormation 當叢集部署包含 AWS ParallelCluster 自訂資源的堆疊時,會在新的個別堆疊中建立叢集。

  • 如果您更新堆疊中定義的叢集配置,則會根據組態更新原則 CloudFormation 更新叢集。在更新叢集之前, AWS ParallelCluster 自訂資源提供者不會停止運算叢集。建議您使用此QueueUpdateStrategy設定進行叢集更新。如此一來,您就可以避免在使用 AWS ParallelCluster 自訂資源時,在更新前後進行明確的pcluster update-compute-fleet呼叫。

  • 如果刪除堆疊,則會刪除叢集。

疑難排解包含 AWS ParallelCluster 自訂資源的堆疊

使用 AWS ParallelCluster 自訂資源,從新的個別堆疊 CloudFormation 部署叢集。您可以執行下列步驟來監視叢集建立:

  1. 導覽至, AWS Management Console 然後 CloudFormation 在導覽窗格中選擇「堆疊」。

  2. 使用您為叢集名稱定義的名稱選擇堆疊。

  3. 如果堆疊狀態為ROLLBACK_COMPLETE,則表示叢集建立期間發生錯誤。

  4. 選擇堆疊詳細資料,然後選擇件索引標籤。

  5. 針對您為叢集名稱定義的名稱,搜尋邏輯 ID 上的事件。它有一Status reason個問題的原因。

  6. 您也可以選擇「堆疊」下拉式選單,然後選擇「已刪除」來查看已刪除堆疊的清單。選取具有叢集名稱的堆疊,並檢視事件以取得更多詳細資訊。

  7. 若要檢視管理叢集之自訂資源提供者的輸出,請選取包含說明「AWS ParallelCluster 叢集自訂資源」的堆疊。選擇資選項卡,找到具有邏輯 ID 的資源PclusterCfnFunctionLogGroup,然後跟隨給定的鏈接。檢視顯示 Lambda 除錯輸出的日誌串流。

  8. 若要疑難排解叢集,請參閱AWS ParallelCluster 疑難排