

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

# 將您的工作流程匯出至 IaC 範本
<a name="exporting-iac-templates"></a>

 AWS Step Functions 主控台可讓您將儲存的工作流程匯出並下載為 AWS CloudFormation 或 AWS SAM (SAM) 範本。對於 AWS 區域 該支援 AWS Infrastructure Composer，它還提供將工作流程匯出至 Infrastructure Composer 的功能，並導覽至 Infrastructure Composer 主控台，您可以在其中繼續使用新產生的範本。

## 範本組態選項
<a name="exporting-iac-templates-config-options"></a>

此功能提供下列選項。如果您選擇匯出和下載 IaC 範本檔案，主控台會顯示適用於已儲存狀態機器的選項以供選取。如果您要匯出至 Infrastructure Composer，Step Functions 主控台會自動實作適用於您狀態機器的組態。
+  **包含主控台代表您建立的 IAM 角色** – 此選項會匯出執行角色政策。它會在範本中建構 IAM 角色，並將其連接到狀態機器資源。此選項僅適用於狀態機器具有由主控台建立的執行角色時。
+  **包含 CloudWatch Log Group** – 在範本中建構 CloudWatch 日誌群組，並將其連接到狀態機器資源。只有在狀態機器已連接 CloudWatch 日誌群組，且[日誌層級](cw-logs.md#cloudwatch-log-level)*未*設定為 時，此選項才適用`OFF`。
+  **以 DefinitionSubstitutions 取代資源參考** – 此選項會為下列元件產生 [DefinitionSubstitutions](concepts-sam-sfn.md#sam-definition-substitution-eg)：
  + [分散式映射](state-map-distributed.md) S3 欄位。
  + `Activity` 資源。匯出包含任何`Run Activity`任務之 CloudFormation 範本中的`Activity`資源。匯出也提供`DefinitionSubstitutions`參考已建立`Activity`的資源。
  + 所有服務整合`S3URI`的承載欄位中的任何 `ARN`或 。
  + 除了 `ARN`和 `S3URI` 欄位之外，匯出還會`DefinitionSubstitutions`為其他常用的服務整合承載欄位產生 。特定服務整合如下：
    + `athena:startQueryExecution`
    + `batch:submitJob`
    +  `dynamodb:getItem`, `dynamodb:updateItem`, `dynamodb:updateItem`, `dynamodb:deleteItem` 
    + `ecs:runTask`
    + `glue:startJobRun`
    + `http:invoke`
    + `lambda:invoke`
    + `sns:publish`
    + `sqs:sendMessage`
    + `states:startExecution`

## 匯出和下載工作流程的 IaC 範本
<a name="exporting-iac-templates-files-procedure"></a>

**將工作流程匯出至 IaC 範本檔案**

1. 開啟 [Step Functions 主控台](https://console.aws.amazon.com/states/home?region=us-east-1#/)，然後選取您要使用的狀態機器。在繼續下一個步驟之前，請確定已儲存狀態機器的任何變更。

1. 從**動作**功能表中選取**匯出至 CloudFormation 或 SAM 範本**。

1. 從出現的對話方塊中選取**類型**做為 **SAM** 或 **CloudFormation**。
   + 如果您選取 **CloudFormation** 範本，接下來選擇 **JSON** 或 **YAML** 檔案格式。
   + 如果您選取 **SAM** 範本，則不會顯示任何格式選項。SAM 範本預設為 YAML 檔案格式。

1. 展開**其他組態**。預設會選取所有選項。檢閱並更新 IaC 範本的選項選擇。這些選項會在上一節中詳細說明，標題為 [範本組態選項](#exporting-iac-templates-config-options)。

   如果選項不適用於您的特定工作流程，則不會顯示在對話方塊中。

1. 選擇**下載**以匯出和下載產生的 IaC 範本檔案。

## 將您的工作流程直接匯出至 AWS Infrastructure Composer
<a name="exporting-iac-templates-infra-composer-procedure"></a>

**將您的工作流程匯出至 Infrastructure Composer**

1. 開啟 [Step Functions 主控台](https://console.aws.amazon.com/states/home?region=us-east-1#/)，然後選取您要使用的狀態機器。在繼續下一個步驟之前，請確定已儲存狀態機器的任何變更。

1. 從**動作**功能表中選取**匯出至基礎設施編寫器**。

1. 匯出**至基礎設施編寫器**對話方塊隨即顯示。您可以使用 **Transfer 儲存貯體名稱**欄位中顯示的預設名稱，或輸入新名稱。Amazon S3 儲存貯體的名稱必須是全域唯一的，並遵循[儲存貯體命名規則](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)。

1. 選擇**確認並建立專案**，將您的工作流程匯出至 Infrastructure Composer。

1. 若要在 Infrastructure Composer 中儲存專案和工作流程定義，請啟用[本機同步模式](https://docs.aws.amazon.com/application-composer/latest/dg/reference-features-local-sync.html)。

**注意**  
如果您之前已使用 **Export to Infrastructure Composer** 功能，並使用預設名稱建立 Amazon S3 儲存貯體，則 Step Functions 可以在儲存貯體仍然存在時重新使用此儲存貯體。接受對話方塊中的預設儲存貯體名稱，以重新使用現有儲存貯體。

### Amazon S3 傳輸儲存貯體組態
<a name="export-appcomposer-bucket-info"></a>

Step Functions 為傳輸工作流程所建立的 Amazon S3 儲存貯體會使用 AES 256 加密標準自動加密物件。Step Functions 也會將儲存貯體設定為使用[儲存貯體擁有者條件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html)，以確保只有您的 AWS 帳戶 能夠將物件新增至儲存貯體。

預設儲存貯體名稱使用字首 `states-templates`、10 位數英數字串，以及 AWS 區域 您在 中建立工作流程的 ：`states-templates-{{amzn-s3-demo-bucket}}-{{us-east-1}}`。為避免將額外費用新增至您的 AWS 帳戶，我們建議您在完成將工作流程匯出至 Infrastructure Composer 後，立即刪除 Amazon S3 儲存貯體。

適用標準 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)。

### 所需的許可
<a name="export-appcomposer-permissions"></a>

若要搭配 Infrastructure Composer 使用這個 Step Functions 匯出功能，您需要特定許可才能下載 AWS SAM 範本並將範本組態寫入 Amazon S3。

若要下載 AWS SAM 範本，您必須具有使用下列 API 動作的許可：
+ [iam：GetPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicy.html)
+ [iam:GetPolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicyVersion.html)
+ [iam:GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)
+ [iam:GetRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRolePolicy.html)
+ [iam:ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)
+ [iam:ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html)
+ [iam:ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)

若要讓 Step Functions 將函數的組態寫入 Amazon S3，您必須具有使用下列 API 動作的許可：
+ [S3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [S3:CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [S3:PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)

如果您無法將函數組態匯出至 Infrastructure Composer，請檢查您的帳戶是否具有執行這些操作所需要的許可。