

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

# CloudFormation 擷取準則、最佳實務和限制
<a name="cfn-author-templates"></a>

若要讓 AMS 處理您的 CloudFormation 範本，有一些指導方針和限制。

## 指導方針
<a name="cfn-ingest-tips"></a>

若要在執行 CloudFormation 擷取時減少 CloudFormation 錯誤，請遵循下列準則：
+ **請勿在範本中嵌入登入資料或其他敏感資訊** – CloudFormation 範本會顯示在 CloudFormation 主控台中，因此您不想在範本中嵌入登入資料或敏感資料。範本不能包含敏感資訊。只有當您使用 AWS Secrets Manager 做為 值時，才允許下列資源：
  + `AWS::RDS::DBInstance` - 【MasterUserPassword，TdeCredentialPassword】
  + `AWS::RDS::DBCluster` - 【MasterUserPassword】
  + `AWS::ElastiCache::ReplicationGroup` - 【AuthToken】
**注意**  
如需有關在資源屬性中使用 AWS Secrets Manager 秘密的資訊，請參閱[如何使用 AWS CloudFormation 範本和使用動態參考指定範本值來建立和擷取 Secrets Manager 中管理的 AWS 秘密](https://aws.amazon.com/blogs/security/how-to-create-and-retrieve-secrets-managed-in-aws-secrets-manager-using-aws-cloudformation-template/)。 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html)
+ **使用 Amazon RDS 快照來建立 RDS 資料庫執行個體** – 透過這樣做，您不必提供 MasterUserPassword。
+ 如果您提交的範本包含 IAM 執行個體描述檔，其字首必須是 'customer'。例如，使用名稱為 'example-instance-profile' 的執行個體描述檔會導致失敗。反之，請使用名稱為 'customer-example-instance-profile' 的執行個體描述檔。
+ **請勿在 - 【UserData】 中包含任何敏感資料`AWS::EC2::Instance`**。 UserData UserData 不應包含密碼、API 金鑰或任何其他敏感資料。這種類型的資料可以加密並存放在 S3 儲存貯體中，並使用 UserData 下載到執行個體。
+ **使用 CloudFormation 範本建立 IAM 政策受到限制的支援** – IAM 政策必須由 AMS SecOps 審核和核准。目前我們僅支援使用包含預先核准許可的內嵌政策來部署 IAM 角色。在其他情況下，無法使用 CloudFormation 範本建立 IAM 政策，因為這會覆寫 AMS SecOps 程序。
+ **不支援 SSH KeyPairs ** – Amazon EC2 執行個體必須透過 AMS 存取管理系統存取。AMS RFC 程序會驗證您的身分。您無法在 CloudFormation 範本中包含 SSH 金鑰對，因為您沒有建立 SSH 金鑰對和覆寫 AMS 存取管理模型的許可。
+ **安全群組傳入規則受到限制** – 您無法擁有 0.0.0.0/0 的來源 CIDR 範圍，或具有 TCP 連接埠的可公開路由地址空間，而 TCP 連接埠不是 80 或 443。
+ **撰寫 CloudFormation 資源範本時，請遵循 CloudFormation 準則** – 請參閱該資源的 *AWS CloudFormation 使用者指南*，以確保您使用正確的資源資料類型/屬性名稱。例如，AWS::EC2::Instance 資源中 SecurityGroupIds 屬性的資料類型是「字串值清單」，因此 【「sg-aaaaaaaaaaa」】是正常的 （使用括號），但「sg-aaaaaaa 不是 （不使用括號）。

  如需詳細資訊，請參閱 [AWS 資源和屬性類型參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)。
+ **將自訂 CloudFormation 範本設定為使用 AMS CloudFormation 擷取 CT 中定義的參數** – 當您將 CloudFormation 範本設定為使用 AMS CloudFormation 擷取 CT 中定義的參數時，您可以使用 管理 \| 自訂堆疊 \| CloudFormation 範本的堆疊 \| 更新 CT (ct-361tlo1k7339x)，在 CT 輸入中提交具有變更參數值的 CloudFormation 範本，以 CloudFormation 建立類似的堆疊。如需範例，請參閱「[CloudFormation 擷取範例：定義資源](cfn-ingest-ex-define-resource.md)」。
+ **具有預先簽章 URL 的 Amazon S3 儲存貯體端點無法過期** – 如果您使用具有預先簽章 URL 的 Amazon S3 儲存貯體端點，請確認預先簽章的 Amazon S3 URL 尚未過期。使用過期的預先簽章 Amazon S3 儲存貯體 URL 提交的 CloudFormation 擷取 RFC 會遭到拒絕。
+ **Wait Condition 需要訊號邏輯** – Wait Condition 用於協調堆疊資源建立與堆疊建立外部的組態動作。如果您在範本中使用等待條件資源， 會 CloudFormation 等待成功訊號，如果未發出成功訊號數量，則會將堆疊建立標記為失敗。如果您使用等待條件資源，則需要有訊號的邏輯。如需詳細資訊，請參閱[在範本中建立等待條件](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html)。