

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Direct Change 모드를 사용하여 스택 생성
<a name="dcm-creating-stacks"></a>

AMS에서 스택을 관리하려면를 사용하여 CloudFormation에서 스택을 시작할 때 다음 두 가지 요구 사항이 있습니다`AWSManagedServicesCloudFormationAdminRole`.
+ 템플릿에는가 포함되어야 합니다`AmsStackTransform`.
+ 스택 이름은 접두사 뒤에 17자의 영숫자 문자열`stack-`로 시작해야 합니다.

**참고**  
를 성공적으로 사용하려면 스택 템플릿에 CloudFormation (CFN)가 스택을 생성하거나 업데이트하기 위한 `CAPABILITY_AUTO_EXPAND` 기능이 포함되어 있음을 확인해야 `AmsStackTransform`합니다. 이렇게 하려면를 create-stack 요청의 `CAPABILITY_AUTO_EXPAND` 일부로 전달합니다. 가 템플릿에 포함될 때이 기능이 확인되지 않으면 CFN`AmsStackTransform`은 요청을 거부합니다. CFN 콘솔은 템플릿에 변환이 있는 경우이 기능을 전달하도록 보장하지만 APIs를 통해 CFN과 상호 작용할 때이 기능을 놓칠 수 있습니다.  
다음 CFN API 호출을 사용할 때마다이 기능을 전달해야 합니다.  
[CreateChangeSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateChangeSet.html)
[ CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html#API_CreateStack_RequestParameters)
[UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html)

DCM을 사용하여 스택을 생성하거나 업데이트할 때 스택에서 CFN 수집 및 스택 업데이트 CTs의 동일한 검증 및 증강이 수행됩니다. 자세한 내용은 [CloudFormation 수집 지침, 모범 사례 및 제한을 참조하세요](https://docs.aws.amazon.com/managedservices/latest/appguide/cfn-author-templates.html). 단, AMS 기본 보안 그룹(SGs)은 독립형 EC2 인스턴스 또는 Auto Scaling 그룹(ASGs)의 EC2 인스턴스에 연결되지 않습니다. 독립형 EC2 인스턴스 또는 ASGs를 사용하여 CloudFormation 템플릿을 생성할 때 기본 SGs.

**참고**  
이제를 사용하여 IAM 역할을 생성하고 관리할 수 있습니다`AWSManagedServicesCloudFormationAdminRole`.

AMS 기본 SGs에는 인스턴스를 성공적으로 시작하고 나중에 AMS 작업 및 사용자에 의해 SSH 또는 RDP를 통해 액세스할 수 있는 수신 및 송신 규칙이 있습니다. AMS 기본 보안 그룹이 너무 허용적이라고 판단되면 사용자와 AMS 작업이 인시던트 발생 시 인스턴스에 액세스할 수 있도록 허용하는 한 보다 제한적인 규칙을 사용하여 자체 SGs를 생성하고 인스턴스에 연결할 수 있습니다.

AMS 기본 보안 그룹은 다음과 같습니다.
+ SentinelDefaultSecurityGroupPrivateOnly:이 SSM 파라미터를 통해 CFN 템플릿에서 액세스할 수 있습니다. `/ams/${VpcId}/SentinelDefaultSecurityGroupPrivateOnly` 
+ SentinelDefaultSecurityGroupPrivateOnlyEgressAll:이 SSM 파라미터를 통해 CFN 템플릿에서 액세스할 수 있습니다. `/ams/${VpcId}/SentinelDefaultSecurityGroupPrivateOnlyEgressAll` 

## AMS 변환
<a name="dcm-cs-ams-transform"></a>

 CloudFormation 템플릿에 `Transform` 문을 추가합니다. 그러면 시작 시 스택을 검증하고 AMS에 등록하는 CloudFormation 매크로가 추가됩니다.

**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
```

## 스택 이름
<a name="dcm-cs-stack-name"></a>

스택 이름은 접두사 뒤에 17자의 영숫자 문자열`stack-`로 시작해야 합니다. 이는 AMS 스택 IDs. 

 다음은 호환되는 스택 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]$_}) )
```