使用直接變更模式建立堆疊 - AMS 進階使用者指南

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

使用直接變更模式建立堆疊

使用 在 CloudFormation 中啟動堆疊時,有兩個需求AWSManagedServicesCloudFormationAdminRole,以便 AMS 管理堆疊:

  • 範本必須包含 AmsStackTransform

  • 堆疊名稱必須以字首開頭,stack-後面接著 17 個字元的英數字串。

注意

若要成功使用 AmsStackTransform,您必須確認堆疊範本包含 CAPABILITY_AUTO_EXPAND功能,以便 AWS CloudFormation (CFN) 建立或更新堆疊。您可以透過CAPABILITY_AUTO_EXPAND在 create-stack 請求中傳遞 來執行此操作。如果在範本中AmsStackTransform包含 時未確認此功能,CFN 會拒絕請求。如果您的範本中有轉換,CFN 主控台會確保您傳遞此功能,但當您透過其 APIs 與 CFN 互動時,可能會錯過此功能。

每當您使用下列 CFN API 呼叫時,都必須傳遞此功能:

使用 DCM 建立或更新堆疊時,會在堆疊上執行 CFN 擷取和堆疊更新 CTs 的相同驗證和增強,如需詳細資訊AWS CloudFormation ,請參閱擷取指導方針、最佳實務和限制。例外情況是,AMS 預設安全群組 (SGs) 不會連接到 Auto Scaling 群組 (ASGs) 中的任何獨立 EC2 執行個體或 EC2 執行個體。當您使用獨立 EC2 執行個體或 ASGs 建立 CloudFormation 範本時,您可以連接預設 SGs。

注意

IAM 角色現在可以使用 建立和管理AWSManagedServicesCloudFormationAdminRole

AMS 預設 SGs 具有輸入和輸出規則,允許執行個體成功啟動,並在稍後透過 SSH 或 RDP 由 AMS 操作與您存取。如果您發現 AMS 預設安全群組過於寬鬆,您可以使用更嚴格的規則建立自己的 SGs,並將其連接到執行個體,只要它仍然允許您和 AMS 操作在事件期間存取執行個體。

AMS 預設安全群組如下:

  • SentinelDefaultSecurityGroupPrivateOnly:可透過此 SSM 參數在 CFN 範本中存取 /ams/${VpcId}/SentinelDefaultSecurityGroupPrivateOnly

  • SentinelDefaultSecurityGroupPrivateOnlyEgressAll:可透過此 SSM 參數在 CFN 範本中存取 /ams/${VpcId}/SentinelDefaultSecurityGroupPrivateOnlyEgressAll

AMS 轉換

Transform陳述式新增至 CloudFormation 範本。這會新增 CloudFormation 巨集,以在啟動時向 AMS 驗證和註冊堆疊。

JSON 範例

"Transform": {     "Name": "AmsStackTransform",     "Parameters": {       "StackId": {"Ref" : "AWS::StackId"}     }   }

YAML 範例

Transform: Name: AmsStackTransform Parameters: StackId: !Ref 'AWS::StackId'

更新現有堆疊的範本時,也請新增 Transform陳述式。

JSON 範例

{   "AWSTemplateFormatVersion": "2010-09-09",   "Description" : "Create an SNS Topic",    "Transform": { "Name": "AmsStackTransform", "Parameters": { "StackId": {"Ref" : "AWS::StackId"} } },   "Parameters": {     "TopicName": {       "Type": "String",       "Default": "HelloWorldTopic"     }   },   "Resources": {     "SnsTopic": {       "Type": "AWS::SNS::Topic",       "Properties": {         "TopicName": {"Ref": "TopicName"}       }     }   } }

YAML 範例

AWSTemplateFormatVersion: '2010-09-09' Description: Create an SNS Topic Transform: Name: AmsStackTransform Parameters: StackId: !Ref 'AWS::StackId' Parameters: TopicName: Type: String Default: HelloWorldTopic Resources: SnsTopic: Type: AWS::SNS::Topic Properties: TopicName: !Ref TopicName

堆疊名稱

堆疊名稱必須以字首開頭,stack-後面接著 17 個字元的英數字串。這是為了維持與在 AMS 堆疊 IDs 上操作之其他 AMS 系統的相容性。 

以下是產生相容堆疊 IDs的方法範例:

Bash:

echo "stack-$(env LC_CTYPE=C tr -dc 'a-z0-9' < /dev/urandom | head -c 17)"

Python:

import string import random 'stack-' + ''.join(random.choices(string.ascii_lowercase + string.digits, k=17))

Powershell:

"stack-" + ( -join ((0x30..0x39) + ( 0x61..0x7A) | Get-Random -Count 17 | % {[char]$_}) )