View a markdown version of this page

在 AWS PCS AWS中為節點生命週期動作使用維護的指令碼 - AWS PCS

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

在 AWS PCS AWS中為節點生命週期動作使用維護的指令碼

AWS 會發佈常用生命週期動作的維護指令碼。您可以直接從運算節點群組組態參考維護的指令碼。指令碼在每次開機時都具有等冪性和安全性。

AWS 從每個 AWS中的公有、受管 Amazon S3 儲存貯體分發指令碼 AWS 區域。您可以依指令碼的 Amazon S3 URI 參考指令碼。您可以參考維護的指令碼,就像參考自己的指令碼一樣。您可以直接從 AWS受管儲存貯體參考指令碼。

可用的指令碼

指令碼

Description

先決條件套件

mount-efs.sh

將 Amazon EFS 檔案系統掛載在指定的路徑上,並在重新啟動時將其保留。

amazon-efs-utils, nfs-utils

mount-fsx-lustre.sh

將 Amazon FSx for Lustre 檔案系統掛載在指定的路徑上,並在重新啟動時將其保留。

lustre-client

configure-efs-homes.sh

將 Amazon EFS 檔案系統掛載為主目錄基礎,並設定 PAM,以便在第一次登入時建立每個使用者的主目錄。

amazon-efs-utilsnfs-utils和 PAM mkhomedir套件 (請參閱每個指令碼的需求)

configure-ldaps.sh

為 LDAP 或 LDAPS 身分驗證設定 SSSD,並支援已驗證綁定 (來自 AWS Secrets Manager 的憑證) 或匿名綁定。

sssdsssd-toolssssd-ldap和 相關套件 (請參閱每個指令碼要求)

configure-cloudwatch-logs.sh

設定 Amazon CloudWatch 代理程式,將節點的生命週期動作日誌轉送至 Amazon CloudWatch Logs。

amazon-cloudwatch-agent

重要

這些指令碼不會安裝其先決條件套件。使用指令碼之前,請在 AMI 中安裝必要的套件。如果缺少先決條件,則指令碼會失敗。有些指令碼需要節點的執行個體角色具有特定許可。請參閱每個指令碼的需求。

參考指令碼

在生命週期動作的 scriptLocation 欄位中,依其 Amazon S3 URI 參考指令碼。指令碼存放在每個指令碼中 AWS受管aws-pcs-repo-region儲存貯體的aws-pcs-node-lifecycle-scripts字首下 AWS 區域。在 AWS 區域 與您的叢集相同的 中使用 儲存貯體。

s3://aws-pcs-repo-region/aws-pcs-node-lifecycle-scripts/script-vversion.sh

每個指令碼都會使用語意版本控制進行版本控制。您可以在主要版本中鎖定特定版本或追蹤最新版本:

  • 固定特定版本 — 使用完整語意版本,例如 mount-efs-v1.0.0.sh。特定版本的內容不可變。使用固定版本進行生產。

  • 追蹤最新版本 — 使用主要版本別名,例如 mount-efs-v1-latest.sh。別名指向該主要版本中的最新版本。將其與 配對scriptCachingPolicyREFRESH_ON_REBOOT,以在重新開機時取得更新。

每個指令碼都有一個配套的 SHA-256 檢查總和檔案,位於與.sha256尾碼相同的位置 (例如 mount-efs-v1.0.0.sh.sha256)。讀取 .sha256值,並將其設定為指令碼的 checksum。然後,代理程式會在下載時驗證指令碼的完整性。如需詳細資訊,請參閱指令碼完整性 (總和檢查)

可用的指令碼版本

AWS 獨立版本每個指令碼。下表列出每個指令碼的可用版本。在指令碼的 Amazon S3 URI 中使用版本,如中所述參考指令碼

mount-efs.sh

版本

發行日期

版本備註

1.0.0

2026 年 7 月 23 日

初始版本。

mount-fsx-lustre.sh

版本

發行日期

版本備註

1.0.0

2026 年 7 月 23 日

初始版本。

configure-efs-homes.sh

版本

發行日期

版本備註

1.0.0

2026 年 7 月 23 日

初始版本。

configure-ldaps.sh

版本

發行日期

版本備註

1.0.0

2026 年 7 月 23 日

初始版本。

configure-cloudwatch-logs.sh

版本

發行日期

版本備註

1.0.0

2026 年 7 月 23 日

初始版本。

範例:使用維護的指令碼掛載 EFS 檔案系統

下列範例參考 中維護的mount-efs.sh指令碼us-west-2 AWS 區域。您可以將引數傳遞為具名旗標。如需指令碼的引數,請參閱 指令碼引數

aws pcs update-compute-node-group \ --cluster-identifier my-cluster \ --compute-node-group-identifier my-cng \ --node-lifecycle-actions '{ "stages": { "nodeBootstrapped": [ { "name": "Mount EFS home directory", "scriptSource": { "scriptLocation": "s3://aws-pcs-repo-us-west-2/aws-pcs-node-lifecycle-scripts/mount-efs-v1.0.0.sh" }, "arguments": ["--file-system-id", "fs-12345678", "--mount-point", "/shared"], "onError": "TERMINATE", "executionPolicy": "EVERY_BOOT" } ] } }'

節點的執行個體角色必須具有指令碼物件的s3:GetObject許可。私有子網路中的節點可以透過 S3 閘道 VPC 端點到達儲存貯體。如需詳細資訊,請參閱指令碼儲存位置

指令碼引數

每個指令碼都會採用具名標記引數。將每個旗標及其值做為arguments陣列的個別元素傳遞 (例如,["--file-system-id", "fs-12345678"])。所有指令碼都會執行為 root並支援 AL2、AL2023、RHEL、Ubuntu 和 Rocky Linux 作業系統。

mount-efs.sh

旗標

必要

預設

Description

--file-system-id

EFS 檔案系統 ID,例如 fs-0123456789abcdef0

--mount-point

在 掛載的絕對路徑,例如 /mnt/efs

--options

tls,iam

逗號分隔的掛載選項。預設會啟用傳輸中加密和 IAM 身分驗證。

使用預設iam選項時,節點的執行個體角色必須允許 elasticfilesystem:ClientMountelasticfilesystem:ClientWrite。節點的子網路必須具有 EFS 掛載目標,其安全群組允許來自節點的傳入 NFS (TCP 2049)。

mount-fsx-lustre.sh

旗標

必要

預設

Description

--fsx-dns-name

FSx for Lustre 檔案系統 DNS 名稱。

--mount-name

檔案系統的 Lustre 掛載名稱 (來自 FSx 主控台MountName的值)。

--mount-point

在 掛載的絕對路徑,例如 /fsx

--options

noatime,flock

逗號分隔的掛載選項。預設值遵循 FSx for Lustre 建議。

節點的子網路必須到達檔案系統,且檔案系統的安全群組必須允許來自節點的傳入 Lustre 流量 (TCP 988 和 1018–1023,適用於使用預留來源連接埠的用戶端)。

configure-efs-homes.sh

旗標

必要

預設

Description

--efs-id

EFS 檔案系統 ID,例如 fs-0123456789abcdef0

--home-base

/home

在 掛載 EFS 檔案系統的絕對路徑,並在其中建立主目錄。

--options

tls,iam

逗號分隔的掛載選項。預設會啟用傳輸中加密和 IAM 身分驗證。

此指令碼需要 amazon-efs-utilsnfs-utils和 PAM mkhomedir支援。在 RHEL-family 節點上,安裝 oddjoboddjob-mkhomedirauthselect。在 AL2023 上,authselect明確安裝 。在 Ubuntu 上安裝 libpam-modules。IAM 和網路需求符合 mount-efs.sh

configure-ldaps.sh

旗標

必要

Description

--ldap-uri

LDAP 伺服器 URI。必須以 ldap://或 開頭ldaps://

--search-base

LDAP 搜尋基礎,例如 dc=example,dc=com

--secret-arn

AWS 存放繫結憑證之秘密的 Secrets Manager ARN。當您省略此旗標時,指令碼會將 SSSD 設定為匿名繫結。

--tls-cacert

用於 TLS 驗證的 CA 套件絕對路徑。預設為作業系統的 CA 套件。

此指令碼需要 sssdsssd-ldapsssd-tools。在 RHEL-family 節點上,它也需要 authselectauthconfigoddjob-mkhomedir。在 Ubuntu 上,它需要 libpam-modules

使用 時--secret-arn,節點的執行個體角色必須允許 secretsmanager:GetSecretValue 秘密,且節點需要 awsclipython3套件。秘密的值必須是格式 的 JSON{"username": "<bind-dn>", "password": "<bind-password>"}。匿名繫結不會發出 AWS API 呼叫,也不需要 IAM 許可。

configure-cloudwatch-logs.sh

旗標

必要

預設

Description

--log-group-name

/aws/pcs/${PCS_CLUSTER_ID}/lifecycle

要轉送的 CloudWatch Logs 日誌群組。省略時,指令碼會從 AWS PCS 設定PCS_CLUSTER_ID的環境變數衍生名稱。

指令碼會轉送生命週期動作日誌目錄 (/var/log/amazon/pcs/lifecycle/actions)。節點的執行個體角色必須在目標日誌群組logs:PutLogEvents上允許 logs:CreateLogStreamlogs:CreateLogGroup和 。使用此指令碼轉送日誌執行個體外部,以進行事後偵錯。

注意

Amazon CloudWatch 代理程式必須以 執行root以轉送這些日誌。只有root使用者可以讀取 /var/log/amazon/pcs/lifecycle/actions

注意

指令碼將其組態寫入專用片段檔案。Amazon CloudWatch 代理程式將此片段與任何現有組態結合,而不會覆寫它,因此指令碼會保留您現有的指標和日誌群組設定。