

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Direct Change モードを使用したスタックの作成
<a name="dcm-creating-stacks"></a>

を使用して CloudFormation でスタックを起動する場合`AWSManagedServicesCloudFormationAdminRole`、スタックを AMS で管理するには、次の 2 つの要件があります。
+ テンプレートには が含まれている必要があります`AmsStackTransform`。
+ スタック名はプレフィックスで始まり、その後に 17 文字の英数字文字列が`stack-`続く必要があります。

**注記**  
を正常に使用するには`AmsStackTransform`、 CloudFormation (CFN) がスタックを作成または更新するために、スタックテンプレートに `CAPABILITY_AUTO_EXPAND`機能が含まれていることを確認する必要があります。これを行うには、 を 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 Ingest および Stack Update CTs[CloudFormation 「Ingest Guidelines」、「Best Practices」、および「Limitations](https://docs.aws.amazon.com/managedservices/latest/appguide/cfn-author-templates.html)」を参照してください。ただし、AMS のデフォルトのセキュリティグループ (SGs) は、Auto Scaling グループ (ASGs) のスタンドアロン EC2 インスタンスまたは EC2 インスタンスにはアタッチされません。スタンドアロン EC2 インスタンスまたは ASGs を使用して CloudFormation テンプレートを作成する場合、デフォルトの SGs をアタッチできます。

**注記**  
IAM ロールを で作成および管理できるようになりました`AWSManagedServicesCloudFormationAdminRole`。

AMS デフォルト SGs には、インスタンスが正常に起動し、後で AMS オペレーションとユーザーによって SSH または RDP を介してアクセスできるようにする進入および退出ルールがあります。で AMS のデフォルトのセキュリティグループが許容されすぎることがわかった場合は、より制限の厳しいルールを使用して独自の SGs を作成し、インスタンスにアタッチできます。ただし、インシデント発生時にユーザーと AMS オペレーションがインスタンスにアクセスできる場合に限ります。

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]$_}) )
```