本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ItemReader (地圖)
ItemReader 欄位是 JSON 物件,可指定資料集及其位置。分散式映射狀態會使用此資料集做為其輸入。
下列範例顯示 JSONPath 型工作流程中ItemReader欄位的語法,適用於存放在 Amazon S3 儲存貯體的文字分隔檔案中的資料集。
"ItemReader": {
    "ReaderConfig": {
        "InputType": "CSV",
        "CSVHeaderLocation": "FIRST_ROW"
    },
    "Resource": "arn:aws:states:::s3:getObject",
    "Parameters": {
        "Bucket": "amzn-s3-demo-bucket",
        "Key": "csvDataset/ratings.csv",
        "VersionId": "BcK42coT2jE1234VHLUvBV1yLNod2OEt"
    }
}在下列以 JSONata 為基礎的工作流程中,請注意 Parameters 會取代為引數。
"ItemReader": {
    "ReaderConfig": {
        "InputType": "CSV",
        "CSVHeaderLocation": "FIRST_ROW"
    },
    "Resource": "arn:aws:states:::s3:getObject",
    "Arguments": {
        "Bucket": "amzn-s3-demo-bucket",
        "Key": "csvDataset/ratings.csv"
        "VersionId": "BcK42coT2jE1234VHLUvBV1yLNod2OEt"
    }
}
    ItemReader 欄位的內容
根據您的資料集, ItemReader 欄位的內容會有所不同。例如,如果您的資料集是從工作流程中上一個步驟傳遞的 JSON 陣列,則會省略 ItemReader 欄位。如果您的資料集是 Amazon S3 資料來源,此欄位會包含下列子欄位。
Resource- 
                
Step Functions 將使用的 Amazon S3 API 整合動作,例如
arn:aws:states:::s3:getObject Arguments (JSONata) orParameters(JSONPath)- 
                
JSON 物件,指定存放資料集的 Amazon S3 儲存貯體名稱和物件金鑰。
如果儲存貯體已啟用版本控制,您也可以提供 Amazon S3 物件版本。
 ReaderConfig- 
          
指定下列詳細資訊的 JSON 物件:
- 
                            
InputType接受下列其中一個值:
CSV、JSON、JSONL、PARQUET、MANIFEST。指定 Amazon S3 資料來源的類型,例如以文字分隔的檔案 (
CSV)、物件、JSON 檔案、JSON Lines、Parquet 檔案、Athena 資訊清單或 Amazon S3 清查清單。在 Workflow Studio 中,您可以從 S3 項目來源選取輸入類型。大多數使用
S3GetObject擷取的輸入類型也在其參數中支援ExpectedBucketOwner和VersionId欄位。Parquet 檔案是不支援 的例外狀況VersionId。輸入檔案支援下列外部壓縮類型:GZIP、ZSTD。
範例檔案名稱:
myObject.jsonl.gz和myObject.csv.zstd。注意:Parquet 檔案是內部壓縮的二進位檔案類型。支援 GZIP、ZSTD 和 Snappy 壓縮。
 - 
                            
Transformation「選用」。值為 或
NONE或LOAD_AND_FLATTEN。如果未指定,
NONE則會假設 。設定為 時LOAD_AND_FLATTEN,您還必須設定InputType。預設行為,映射會逐一查看從呼叫 傳回的中繼資料物件
S3:ListObjectsV2。設定為 時LOAD_AND_FLATTEN,映射會讀取並處理結果清單中參考的實際資料物件。 - 
                
ManifestType「選用」。值將為 或
ATHENA_DATA或S3_INVENTORY。注意:如果設定為
S3_INVENTORY,您也不能指定 ,InputType因為類型假設為CSV。 - 
              
CSVDelimiter當
InputType為CSV或 時,您可以指定此欄位MANIFEST。接受下列其中一個值:
COMMA(預設)PIPE、SEMICOLON、、SPACE、TAB。注意
使用
CSVDelimiter欄位,ItemReader可以處理以逗號以外的字元分隔的檔案。參考「CSV 檔案」也包含使用CSVDelimiter欄位指定之替代分隔符號的檔案。 - 
              
CSVHeaderLocation當
InputType為CSV或 時,您可以指定此欄位MANIFEST。接受下列其中一個值來指定資料欄標頭的位置:
- 
                  
FIRST_ROW– 如果檔案的第一行是 標頭,請使用此選項。 - 
                  
GIVEN– 使用此選項在狀態機器定義中指定 標頭。例如,如果您的檔案包含下列資料。
1,307,3.5,1256677221 1,481,3.5,1256677456 1,1091,1.5,1256677471 ...您可以提供下列 JSON 陣列做為 CSV 標頭:
"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": ["userId","movieId","rating","timestamp"] } } 
CSV 標頭大小
Step Functions 針對以文字分隔的檔案支援高達 10 KiB 的標頭。
 - 
                  
 - 
              
MaxItems根據預設,
Map狀態會反覆查看指定資料集中的所有項目。透過設定MaxItems,您可以限制傳遞至Map狀態的資料項目數量。例如,如果您提供包含 1,000 個資料列的文字分隔檔案,並設定 100 個資料列的限制,則解譯器只會將 100 個資料列傳遞至分散式地圖狀態。Map狀態會依序處理項目,從標頭列開始。對於 JSONPath 工作流程,您可以在解析為整數的狀態輸入中使用
MaxItemsPath和索引鍵/值對的參考路徑。請注意,您可以指定MaxItems或MaxItemsPath,但不能同時指定兩者。注意
您最多可以指定 100,000,000 個的限制,之後 會
Distributed Map停止讀取項目。 
 - 
                            
 
帳戶和區域的需求
Amazon S3 儲存貯體必須與狀態機器位於相同 AWS 帳戶 和 AWS 區域 。
請注意,即使您的狀態機器可以跨相同 中的不同 存取儲存貯 AWS 帳戶 體中的檔案 AWS 區域,Step Functions 僅支援在與 AWS 區域 狀態機器相同 AWS 帳戶 和相同的 Amazon S3 儲存貯體中列出物件。
處理巢狀資料集 (2025 年 9 月 11 日更新)
使用新Transformation參數,您可以指定 的值,LOAD_AND_FLATTEN而且映射會從對 的呼叫讀取結果清單中參考的實際資料物件S3:ListObjectsV2。
在此版本之前,您需要建立巢狀分散式映射來擷取中繼資料,然後處理實際資料。第一個映射會逐一查看 傳回的中繼資料S3:ListObjectsV2,並叫用子工作流程。每個子狀態機器中的另一個映射會從個別檔案讀取實際資料。使用轉換選項,您可以一次完成這兩個步驟。
假設您想要對系統每小時產生的過去 24 個日誌檔案執行每日稽核,並存放在 Amazon S3 中。您的分散式映射狀態可以使用 列出日誌檔案S3:ListObjectsV2,然後逐一查看每個物件的中繼資料,或者它現在可以載入和分析存放在 Amazon S3 儲存貯體中的實際資料物件。
使用 LOAD_AND_FLATTEN選項可以提高可擴展性、減少開放的 Map Run 計數,以及同時處理多個物件。Athena 和 Amazon EMR 任務通常會產生可使用新組態處理的輸出。
以下是 ItemReader定義中參數的範例:
{ "QueryLanguage": "JSONata", "States": { ... "Map": { ... "ItemReader": { "Resource": "arn:aws:states:::s3:listObjectsV2", "ReaderConfig": { // InputType is required if Transformation is LOAD_AND_FLATTEN. "InputType": "CSV | JSON | JSONL | PARQUET", // Transformation is OPTIONAL and defaults to NONE if not present "Transformation": "NONE | LOAD_AND_FLATTEN" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket1", "Prefix": "{% $states.input.PrefixKey %}" } }, ... } }
資料集的範例
您可以指定下列其中一個選項做為資料集:
注意
Step Functions 需要適當的許可才能存取您使用的 Amazon S3 資料集。如需資料集的 IAM 政策相關資訊,請參閱 資料集的 IAM 政策建議。
分散式映射狀態可以接受從工作流程中上一個步驟傳遞的 JSON 輸入。
輸入可以是 JSON 陣列、JSON 物件或 JSON 物件節點內的陣列。
Step Functions 會直接反覆運算陣列的元素,或 JSON 物件的鍵值對。
若要從 JSON 物件選取包含陣列的特定節點,您可以使用 ,ItemsPath (地圖,僅限 JSONPath)或在 JSONata 狀態的 Items 欄位中使用 JSONata 表達式。
若要處理個別項目,分散式映射狀態會為每個項目啟動子工作流程執行。下列索引標籤顯示傳遞至 Map 狀態的輸入範例,以及傳遞至子工作流程執行的對應輸入。
注意
當您的資料集是上一個步驟的 JSON 資料時,則不需要 ItemReader 欄位。
分散式地圖狀態可以反覆查看存放在 Amazon S3 儲存貯體中的物件。當工作流程執行達到 Map 狀態時,Step Functions 會叫用 ListObjectsV2 API 動作,這會傳回 Amazon S3 物件中繼資料的陣列。在此陣列中,每個項目都包含儲存貯體中實際資料的資料,例如 ETag 和 Key。
若要處理陣列中的個別項目,分散式映射狀態會啟動子工作流程執行。例如,假設您的 Amazon S3 儲存貯體包含 100 個映像。然後,調用 ListObjectsV2 API 動作後傳回的陣列包含 100 個中繼資料項目。然後,分散式映射狀態會啟動 100 個子工作流程執行來處理每個項目。
若要在沒有巢狀工作流程的情況下直接處理資料物件,您可以選擇 LOAD_AND_FLATTEN 轉換選項,以直接處理項目。
注意
- 
              
Step Functions 也會包含每個使用 Amazon S3 主控台在 Amazon S3 儲存貯體中建立之資料夾的項目。資料夾項目會導致啟動額外的子工作流程執行。
為了避免為每個資料夾建立額外的子工作流程執行,建議您使用 AWS CLI 來建立資料夾。如需詳細資訊,請參閱AWS Command Line Interface 《 使用者指南》中的高階 Amazon S3 命令。
 Step Functions 需要適當的許可才能存取您使用的 Amazon S3 資料集。如需資料集的 IAM 政策相關資訊,請參閱 資料集的 IAM 政策建議。
下列索引標籤顯示 ItemReader 欄位語法的範例,以及傳遞給此資料集子工作流程執行的輸入。
透過增強對 S3 ListObjectsV2 的支援作為分散式地圖中的輸入來源,您的狀態機器可以直接從 Amazon S3 儲存貯體讀取和處理多個資料物件,無需巢狀地圖來處理中繼資料!
使用 LOAD_AND_FLATTEN選項,您的狀態機器會執行下列動作:
讀取 Amazon S3
ListObjectsV2呼叫列出的每個物件的實際內容。根據 InputType (CSV、JSON、JSONL、Parquet) 剖析內容。
從檔案內容 (資料列/記錄) 而非中繼資料建立項目。
使用轉換選項,您不再需要巢狀分散式地圖來處理中繼資料。使用 LOAD_AND_FLATTEN 選項可提高可擴展性、減少作用中的映射執行計數,並同時處理多個物件。
下列組態顯示 的設定ItemReader:
"ItemReader": {
   "Resource": "arn:aws:states:::s3:listObjectsV2",
   "ReaderConfig": {
      "InputType": "JSON",
      "Transformation": "LOAD_AND_FLATTEN"
   },
   "Arguments": {
      "Bucket": "S3_BUCKET_NAME",
      "Prefix": "S3_BUCKET_PREFIX"
   }
}儲存貯體字首建議
我們建議在字首上包含結尾斜線。例如,如果您選取字首為 的資料folder1,您的狀態機器將同時處理 folder1/myData.csv和 folder10/myData.csv。使用 folder1/ 只會嚴格處理一個資料夾。
分散式映射狀態可以接受存放在 Amazon S3 儲存貯體中的 JSON 檔案做為資料集。JSON 檔案必須包含陣列或 JSON 物件。
當工作流程執行達到 Map 狀態時,Step Functions 會叫用 GetObject API 動作來擷取指定的 JSON 檔案。
如果 JSON 檔案包含巢狀物件結構,您可以使用 來選取具有資料集的特定節點ItemsPointer。例如,下列組態會擷取庫存中特色產品的巢狀清單。
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "JSON", "ItemsPointer": "/inventory/products/featured" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket", "Key": "nested-data-file.json" } }
接著Map狀態會反覆查看陣列中的每個項目,並為每個項目啟動子工作流程執行。例如,如果您的 JSON 檔案包含 1000 個陣列項目,Map狀態會啟動 1000 個子工作流程執行。
注意
- 
              
用來啟動子工作流程執行的執行輸入不能超過 256 KiB。不過,如果您接著套用選用
ItemSelector欄位來減少項目的大小,則 Step Functions 支援從文字分隔檔案、JSON 或 JSON Lines 檔案讀取最多 8 MB 的項目。 - 
              
Step Functions 支援 10 GB 作為 Amazon S3 中個別檔案的大小上限。
 Step Functions 需要適當的許可才能存取您使用的 Amazon S3 資料集。如需資料集的 IAM 政策相關資訊,請參閱 資料集的 IAM 政策建議。
下列索引標籤顯示 ItemReader 欄位語法的範例,以及傳遞給此資料集子工作流程執行的輸入。
在此範例中,假設您有一個名為 的 JSON 檔案。您已將此檔案存放在 Amazon S3 儲存貯factcheck.json體中名為 的字首中。以下是 JSON 資料集的範例。jsonDataset
[
  {
    "verdict": "true",
    "statement_date": "6/11/2008",
    "statement_source": "speech"
  },
  {
    "verdict": "false",
    "statement_date": "6/7/2022",
    "statement_source": "television"
  },
  {
    "verdict": "mostly-true",
    "statement_date": "5/18/2016",
    "statement_source": "news"
  },
  ...
]分散式映射狀態可以接受存放在 Amazon S3 儲存貯體中的 JSON Lines 檔案做為資料集。
注意
- 
              
用來啟動子工作流程執行的執行輸入不能超過 256 KiB。不過,如果您接著套用選用
ItemSelector欄位來減少項目的大小,則 Step Functions 支援從文字分隔檔案、JSON 或 JSON Lines 檔案讀取最多 8 MB 的項目。 - 
              
Step Functions 支援 10 GB 作為 Amazon S3 中個別檔案的大小上限。
 Step Functions 需要適當的許可才能存取您使用的 Amazon S3 資料集。如需資料集的 IAM 政策相關資訊,請參閱 資料集的 IAM 政策建議。
下列索引標籤顯示 ItemReader 欄位語法的範例,以及傳遞給此資料集子工作流程執行的輸入。
在此範例中,假設您有一個名為 的 JSON Lines 檔案。您已將此檔案存放在 Amazon S3 儲存貯factcheck.jsonl體中名為 的字首中。以下是檔案內容的範例。jsonlDataset
{"verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech"} 
{"verdict": "false", "statement_date": "6/7/2022", "statement_source": "television"}
{"verdict": "mostly-true", "statement_date": "5/18/2016", "statement_source": "news"}注意
使用 CSVDelimiter 欄位, ItemReader可以處理以逗號以外的字元分隔的檔案。參考「CSV 檔案」也包含使用 CSVDelimiter 欄位指定之替代分隔符號的檔案。
分散式映射狀態可以接受以文字分隔的檔案,該檔案存放在 Amazon S3 儲存貯體中做為資料集。如果您使用以文字分隔的檔案做為資料集,則需要指定資料欄標頭。如需如何指定標頭的資訊,請參閱 ItemReader 欄位的內容。
Step Functions 會根據下列規則剖析以文字分隔的檔案:
- 
          
分隔欄位的分隔符號由 ReaderConfig
CSVDelimiter中的 指定。分隔符號預設為COMMA。 - 
            
Newlines 是分隔記錄的分隔符號。
 - 
            
欄位視為字串。對於資料類型轉換,請使用 中的
States.StringToJson內部 函數ItemSelector (地圖)。 - 
            
不需要雙引號 (" ") 來括住字串。不過,以雙引號括住的字串可包含逗號和換行,而不做為記錄分隔符號。
 - 
            
您可以重複雙引號來保留雙引號。
 - 
            
反斜線 (\) 是逸出特殊字元的另一種方式。反斜線僅適用於其他反斜線、雙引號和設定的欄位分隔符號,例如逗號或縱線。反斜線後面接著任何其他字元會以無提示方式移除。
 - 
            
您可以重複斜線來保留斜線。例如:
path,size C:\\Program Files\\MyApp.exe,6534512 - 
            
逸出雙引號的反斜線 (
\") 只有在包含在組內時才有效,因此我們建議重複逸出雙引號:""。 - 
            
如果資料列中的欄位數目小於 標頭中的欄位數目,Step Functions 會提供缺少值的空字串。
 - 
            
如果資料列中的欄位數目超過 標頭中的欄位數目,Step Functions 會略過其他欄位。
 
如需 Step Functions 如何剖析以文字分隔檔案的詳細資訊,請參閱 Example of parsing an input CSV file。
當工作流程執行達到 Map 狀態時,Step Functions 會叫用 GetObject API 動作來擷取指定的檔案。接著Map狀態會逐一查看 檔案中的每一列,並啟動子工作流程執行,以處理每一列中的項目。例如,假設您提供以文字分隔的檔案,其中包含 100 列做為輸入。然後,解譯器會將每一列傳遞至 Map 狀態。Map 狀態會以序列順序處理項目,從標頭列開始。
注意
- 
              
用來啟動子工作流程執行的執行輸入不能超過 256 KiB。不過,如果您接著套用選用
ItemSelector欄位來減少項目的大小,則 Step Functions 支援從文字分隔檔案、JSON 或 JSON Lines 檔案讀取最多 8 MB 的項目。 - 
              
Step Functions 支援 10 GB 作為 Amazon S3 中個別檔案的大小上限。
 Step Functions 需要適當的許可才能存取您使用的 Amazon S3 資料集。如需資料集的 IAM 政策相關資訊,請參閱 資料集的 IAM 政策建議。
下列索引標籤顯示 ItemReader 欄位語法的範例,以及傳遞給此資料集子工作流程執行的輸入。
Parquet 檔案可以用作輸入來源。存放在 Amazon S3 中的 Apache Parquet 檔案可大規模提供高效率的單欄式資料處理。
使用 Parquet 檔案時,適用下列條件:
256MB 是資料列群組大小上限,而 5MB 是頁尾大小上限。如果您提供的輸入檔案超過任一限制,狀態機器將傳回執行時間錯誤。
不支援
VersionId欄位InputType=Parquet。原生支援內部 GZIP、ZSTD 和 Snappy 資料壓縮。不需要副檔名。
以下顯示將 InputType設定為 Parquet 的範例 ASL 組態:
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "PARQUET" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket", "Key": "my-parquet-data-file-1.parquet" } }
大規模任務處理
對於非常大規模的任務,Step Functions 將使用許多輸入讀取器。讀取器會交錯處理,這可能會導致某些讀取器暫停,而其他讀取器則會繼續。間歇性進度是大規模的預期行為。
您可以使用從UNLOAD查詢結果產生的 Athena 資訊清單檔案,來指定映射狀態的資料檔案來源。您可以將 ManifestType設定為 ATHENA_DATA,並將 InputType設定為 CSV、 JSONL或 Parquet。
執行UNLOAD查詢時,除了實際的資料物件之外,Athena 還會產生資料資訊清單檔案。資訊清單檔案提供資料檔案的結構化 CSV 清單。資訊清單和資料檔案都會儲存至 Amazon S3 中的 Athena 查詢結果位置。
UNLOAD (<YOUR_SELECT_QUERY>) TO 'S3_URI_FOR_STORING_DATA_OBJECT' WITH (format = 'JSON')
程序的概念概觀,簡要來說:
- 
                            
使用 Athena 中的
UNLOAD查詢從資料表中選取您的資料。 - 
                            
Athena 會在 Amazon S3 中產生資訊清單檔案 (CSV) 和資料物件。
 - 
                            
設定 Step Functions 以讀取資訊清單檔案並處理輸入。
 
此功能可以處理來自 Athena 的 CSV、JSONL 和 Parquet 輸出格式。單一資訊清單檔案中參考的所有物件都必須是相同的 InputType 格式。請注意,UNLOAD查詢匯出的 CSV 物件不包含第一行中的標頭。了解CSVHeaderLocation您是否需要提供資料欄標頭。
地圖內容也會包含 $states.context.Map.Item.Source,讓您可以根據資料來源自訂處理。
以下是ItemReader設定為使用 Athena 資訊清單之 的範例組態:
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "ManifestType": "ATHENA_DATA", "InputType": "CSV | JSONL | PARQUET" }, "Arguments": { "Bucket": "<S3_BUCKET_NAME>", "Key": "<S3_KEY_PREFIX><QUERY_ID>-manifest.csv" } }
在 Workflow Studio 中使用 Athena 資訊清單模式
資料處理的常見案例會將映射套用至來自 Athena UNLOAD 查詢的資料來源。映射會叫用 Lambda 函數來處理 Athena 資訊清單中描述的每個項目。Step Functions Workflow Studio 提供現成的模式,將所有這些元件結合成封鎖您拖曳到狀態機器畫布上。
分散式映射狀態可以接受存放在 Amazon S3 儲存貯體中的 Amazon S3 清查資訊清單檔案,做為資料集。
當工作流程執行達到 Map 狀態時,Step Functions 會叫用 GetObject API 動作來擷取指定的 Amazon S3 清查清單檔案。
根據預設,Map狀態接著會反覆查看清查中的物件,以傳回 Amazon S3 清查物件中繼資料的陣列。
如果您指定 ManifestType 為 S3_INVENTORY,則無法指定 InputType。
注意
- 
              
Step Functions 支援 10 GB 做為解壓縮後 Amazon S3 清查報告中個別檔案的大小上限。不過,如果每個個別檔案小於 10 GB,Step Functions 可以處理超過 10 GB。
 Step Functions 需要適當的許可,才能存取您使用的 Amazon S3 資料集。如需資料集的 IAM 政策相關資訊,請參閱 資料集的 IAM 政策建議。
以下是 CSV 格式的庫存檔案範例。此檔案包含名為 csvDataset和 的物件imageDataset,這些物件會存放在名為 的 Amazon S3 儲存貯體中amzn-s3-demo-source-bucket。
"amzn-s3-demo-source-bucket","csvDataset/","0","2022-11-16T00:27:19.000Z"
"amzn-s3-demo-source-bucket","csvDataset/titles.csv","3399671","2022-11-16T00:29:32.000Z"
"amzn-s3-demo-source-bucket","imageDataset/","0","2022-11-15T20:00:44.000Z"
"amzn-s3-demo-source-bucket","imageDataset/n02085620_10074.jpg","27034","2022-11-15T20:02:16.000Z"
...重要
Step Functions 不支援使用者定義的 Amazon S3 清查報告做為資料集。
Amazon S3 清查報告的輸出格式必須為 CSV。
如需 Amazon S3 清查以及如何設定它們的詳細資訊,請參閱 Amazon S3 清查。
下列 Amazon S3 清查資訊清單檔案範例顯示清查物件中繼資料的 CSV 標頭。
{
  "sourceBucket" : "amzn-s3-demo-source-bucket",
  "destinationBucket" : "arn:aws:s3:::amzn-s3-demo-inventory",
  "version" : "2016-11-30",
  "creationTimestamp" : "1668560400000",
  "fileFormat" : "CSV",
  "fileSchema" : "Bucket, Key, Size, LastModifiedDate",
  "files" : [ {
    "key" : "amzn-s3-demo-bucket/destination-prefix/data/20e55de8-9c21-45d4-99b9-46c732000228.csv.gz",
    "size" : 7300,
    "MD5checksum" : "a7ff4a1d4164c3cd55851055ec8f6b20"
  } ]
}
下列索引標籤顯示 ItemReader 欄位語法的範例,以及傳遞給此資料集子工作流程執行的輸入。
資料集的 IAM 政策建議
當您使用 Step Functions 主控台建立工作流程時,Step Functions 可以根據您工作流程定義中的資源自動產生 IAM 政策。產生的政策包含允許狀態機器角色叫用分散式映射狀態的 StartExecution API 動作和存取 AWS 資源所需的最低權限,例如 Amazon S3 儲存貯體和物件,以及 Lambda 函數。
我們建議您在 IAM 政策中只包含必要的許可。例如,如果您的工作流程包含分散式模式中Map的狀態,請將您的政策範圍縮小到包含您的資料的特定 Amazon S3 儲存貯體和資料夾。
重要
如果您指定 Amazon S3 儲存貯體和物件或字首,並在分散式映射狀態輸入中具有現有鍵值對的參考路徑,請務必更新工作流程的 IAM 政策。將政策範圍縮小到 儲存貯體,以及路徑在執行時間解析為 的物件名稱。
下列範例顯示使用 ListObjectsV2 和 GetObject API 動作授予存取 Amazon S3 資料集所需最低權限的技術。
範例 使用 Amazon S3 物件做為資料集的條件
下列條件授予存取 Amazon S3 儲存貯體資料夾中物件的最低權限。processImages
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } }
範例 使用 CSV 檔案做為資料集
下列範例顯示存取名為 的 CSV 檔案所需的動作。ratings.csv
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ]
範例 使用 Amazon S3 清查做為資料集
以下顯示 Amazon S3 清查清單檔案和資料檔案的範例資源。
"Resource": [ "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/data/*" ]
範例 使用 ListObjectsV2 限制為資料夾字首
使用 ListObjectsV2 時,會產生兩個政策。需要一個允許列出儲存貯體 (ListBucket) 的內容,另一個政策將允許擷取儲存貯體 () 中的物件GetObject。
以下顯示動作、資源和條件的範例:
"Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "/path/to/your/json/" ] } }
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path/to/your/json/*" ]
請注意, GetObject不會設定範圍,而您將針對物件使用萬用字元 (*)。