本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將執行個體加入 Active Directory 網域
透過 AWS Elastic Beanstalk,您環境中的 Windows Server 執行個體可以自動加入 Active Directory 網域。您可以使用 AWS Directory Service 管理目錄,並在 aws:elasticbeanstalk:windows:activedirectory 命名空間中使用組態選項開啟聯結。每個執行個體接著會在啟動時加入網域,然後 Elastic Beanstalk 才會將您的應用程式部署到該網域。您不會撰寫任何自訂聯結邏輯或自行管理聯結。
您可以將執行個體加入 AWS Managed Microsoft AD 目錄或 Simple AD 目錄,或透過 AD Connector 加入自我管理的 Active Directory。
注意
Active Directory 網域加入可在 2026 年 8 月 18 日當天或之後發行的 Windows Server 平台版本上使用。舊版平台不支援 aws:elasticbeanstalk:windows:activedirectory 命名空間,並在驗證期間拒絕其選項。若要升級您的環境,請參閱 更新您 Elastic Beanstalk 環境的平台版本。
網域聯結的運作方式
當具有 Active Directory 選項的 環境中的執行個體啟動時,它會在 Elastic Beanstalk 部署您的應用程式之前執行下列動作:
-
在 目錄中為自己建立電腦物件。執行個體會使用環境執行個體描述檔的登入資料呼叫 AWS Directory Service CreateComputer API 操作。如果您設定
DirectoryOU選項,執行個體會在該組織單位 (OU) 中建立電腦物件。否則,它會在目錄的預設容器中建立物件。 -
將自己重新命名為
EC2-,其中XXXXXXXX是執行個體 ID 的最後八個大寫字元。XXXXXXXX -
加入網域,然後重新啟動以完成加入。這是 Elastic Beanstalk 環境中每個 Windows Server 執行個體在佈建期間執行以套用其主機名稱的相同一次性重新啟動,因此網域聯結不會新增額外的重新啟動。
如果沒有 Active Directory 選項,Elastic Beanstalk 會從其私有 IPv4 地址 (例如 ) 衍生每個 Windows 執行個體的主機名稱IP-0A010203。IP 地址可以重複使用,因此這些名稱可能會與目錄中的過時電腦物件碰撞。這可能發生在跨區域重複使用 IP 範圍的災難復原拓撲中,或在長期環境中發生。設定 Active Directory 選項時,主機名稱會改為衍生自執行個體 ID。由於每個執行個體 ID 都是全域唯一的,因此名稱與過時電腦物件發生衝突的機率可忽略。instance-ID-derived主機名稱僅適用於具有 Active Directory 選項的環境。
先決條件
設定 Active Directory 網域聯結之前,請確認符合下列先決條件:
-
Directory AWS Service 目錄 – AWS 受管 Microsoft AD、Simple AD 或 AD Connector。若要建立目錄服務,請參閱《目錄服務管理指南》中的設定 AWS目錄服務。 AWS
-
網路連線和 DNS 解析 – 您的環境必須在可存取目錄的 VPC 中執行,且您環境中的執行個體必須解析目錄的 DNS 名稱。聯結程序會透過 DNS SRV 記錄探索網域控制站。這通常表示將您的 VPC 與指向目錄 DNS 伺服器的 DHCP 選項集建立關聯。這是標準 AWS Directory Service 組態。如需詳細資訊,請參閱《 AWS Directory Service 管理指南》中的建立或變更 DHCP 選項集。缺少 DNS 解析是網域聯結失敗的常見原因。
-
執行個體描述檔許可 – 環境的執行個體描述檔 (例如
aws-elasticbeanstalk-ec2-role) 必須具有在 目錄ds:CreateComputer上呼叫 的許可。若要遵循最低權限原則,請將範圍限定的政策新增至您的目錄:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ds:CreateComputer", "Resource": "arn:aws:ds:us-east-2:123456789012:directory/d-1234567890" } ] }或者,您可以連接 AmazonSSMDirectoryServiceAccess 受管政策,其中包含您帳戶中所有目錄的
ds:CreateComputer許可。 -
支援的平台版本 – 您的環境必須執行 2026 年 8 月 18 日當天或之後發行的 Windows Server 平台版本。
-
現有的 OU (如果您設定
DirectoryOU) – Elastic Beanstalk 不會建立組織單位。如果您設定DirectoryOU選項,OU 必須已存在於 目錄中,否則聯結會失敗。
設定 Active Directory 網域聯結
若要開啟 Active Directory 網域聯結,請在 aws:elasticbeanstalk:windows:activedirectory 命名空間中設定下列組態選項。您可以在組態檔案中、使用 AWS CLI或設定組態選項的任何其他方法進行設定。如需每個選項的詳細資訊,請參閱 aws:elasticbeanstalk:windows:activedirectory。
-
DirectoryId– 要加入的目錄 ID (例如d-1234567890)。設定此選項會開啟 功能。如果您未設定,環境的行為不會變更。 -
DirectoryName– 目錄的完整 DNS 名稱 (例如corp.example.com)。設定DirectoryId時為必要。 -
(選用)
DirectoryOU– 在 中建立電腦物件的組織單位辨別名稱 (例如OU=WebServers,DC=corp,DC=example,DC=com)。OU 必須已存在。如果您未設定此選項,則會在目錄的預設容器中建立電腦物件。
下列 AWS CLI 範例會在執行環境中設定 Active Directory 網域聯結。此範例使用 --option-settings 參數的 JSON 語法,因為DirectoryOU值包含逗號,速記語法會解譯為分隔符號。
範例 AWS CLI - 設定 Active Directory 網域聯結
aws elasticbeanstalk update-environment \
--environment-name my-env \
--option-settings '[
{"Namespace": "aws:elasticbeanstalk:windows:activedirectory", "OptionName": "DirectoryId", "Value": "d-1234567890"},
{"Namespace": "aws:elasticbeanstalk:windows:activedirectory", "OptionName": "DirectoryName", "Value": "corp.example.com"},
{"Namespace": "aws:elasticbeanstalk:windows:activedirectory", "OptionName": "DirectoryOU", "Value": "OU=WebServers,DC=corp,DC=example,DC=com"}
]'重要
當您在此命名空間中新增、變更或移除任何選項時,Elastic Beanstalk 會重新佈建您環境中的 Amazon EC2 執行個體。這會觸發滾動更新。
如果您變更環境的組態以指向不同的目錄,替代執行個體會加入新的目錄。如果您移除選項,替換執行個體會啟動而不加入網域,並使用標準 IP-address-derived的主機名稱。在這兩種情況下,先前建立的執行個體會保留在 目錄中。如需詳細資訊,請參閱管理目錄中的電腦物件。
確認網域加入
若要確認執行個體已加入網域,請執行下列其中一項操作:
-
確認目錄中存在名為
EC2-(執行個體的主機名稱) 的電腦物件,位於您指定的 OU 或預設容器下。XXXXXXXX -
檢閱行 的執行個體部署日誌
Active Directory: joined to。如需詳細資訊,請參閱檢視 Elastic Beanstalk 環境的部署日誌。directory-name
當您的環境向外擴展時,Auto Scaling 會新增也加入網域的執行個體。若要檢閱其中一個執行個體的部署日誌,請從 Amazon S3 擷取它。如需詳細資訊,請參閱部署日誌存放位置。
失敗的網域聯結
失敗的網域聯結不會封鎖部署。如果執行個體因任何原因無法加入網域,則會回復為標準 IP-address-derived(IP-),部署會繼續,而且環境仍然可以達到就緒狀態並回報狀態良好。XXXXXXXX
為了讓失敗可見,Elastic Beanstalk 會將執行個體的實際網域成員資格與設定的目錄進行比較,並在不相符時發出ERROR事件:
Active Directory domain join did not complete: instance is not joined to 'corp.example.com' (PartOfDomain=False, Domain=WORKGROUP). See the deployment log for the join output.
執行個體會將聯結程序的輸出寫入 C:\cfn\log\eb-ad-join.log。當聯結失敗時,Elastic Beanstalk 也會將此日誌複製到執行個體的部署日誌中,因此您可以擷取原因,而無需連線到執行個體。如需詳細資訊,請參閱檢視 Elastic Beanstalk 環境的部署日誌。
疑難排解
如果您的執行個體未加入網域,請檢查下列項目:
-
聯結日誌 – 讀取執行個體部署日誌中的聯結輸出 (請參閱 檢視 Elastic Beanstalk 環境的部署日誌),或在執行個體
C:\cfn\log\eb-ad-join.log上的 。日誌會記錄導致聯結失敗的特定錯誤。 -
DNS 解析 – 從環境 VPC 中的執行個體,驗證目錄的 DNS 名稱 (
DirectoryName值) 是否解析。如果沒有,請將 VPC 與指向目錄 DNS 伺服器的 DHCP 選項集建立關聯。 -
IAM 許可 – 驗證環境的執行個體描述檔是否允許
ds:CreateComputer目錄。如果沒有它,則嘗試建立電腦物件時,聯結會失敗。 -
組織單位 – 如果您設定
DirectoryOU,請確認 OU 存在於 目錄中,且其辨別名稱完全符合選項值。加入不存在的 OU 失敗。 -
執行個體組態 – 每個執行個體
C:\cfn\eb-ad.json上的 檔案會記錄執行個體啟動所用的DirectoryId和DirectoryName。使用它來確認執行個體收到的目錄組態。
管理目錄中的電腦物件
當執行個體或環境終止時,Elastic Beanstalk 不會從您的目錄刪除執行個體的電腦物件。每個聯結的執行個體都會留下其EC2-電腦物件,而擴展活動會為每個新執行個體建立物件。您有責任使用組織的常用目錄管理工具,定期從目錄中移除過時的電腦物件。XXXXXXXX
由於每個新執行個體的主機名稱衍生自自己的全域唯一執行個體 ID,因此名稱與過時電腦物件發生衝突的機率可忽略。