本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ItemReader (地圖)
該ItemReader
字段是一個JSON對象,它指定了一個數據集和它的位置。「分散式地圖」狀態會使用此資料集做為其輸入。下列範例顯示如果您的資料集是存放在 Amazon S3 儲存貯體中的CSV檔案,則該ItemReader
欄位的語法。
"ItemReader": {
"ReaderConfig": {
"InputType": "CSV",
"CSVHeaderLocation": "FIRST_ROW"
},
"Resource": "arn:aws:states:::s3:getObject",
"Parameters": {
"Bucket": "amzn-s3-demo-bucket
",
"Key": "csvDataset/ratings.csv
"
}
}
提示
在工作流程 Studio 中,您可以在 [項目來源] 欄位中指定資料集及其位置。
該 ItemReader 領域的內容
視您的資料集而定,ItemReader
欄位的內容會有所不同。例如,如果您的資料集是從工作流程的上一個步驟傳遞的JSON陣列,則會省略該ItemReader
欄位。如果您的資料集是 Amazon S3 資料來源,則此欄位包含下列子欄位。
ReaderConfig
指定下列詳細資訊的JSON物件:
InputType
指定 Amazon S3 資料來源的類型,例如CSV檔案、物件、JSON檔案或 Amazon S3 庫存清單。在工作流程 Studio 中,您可以從「項目來源」欄位下的 Amazon S3 項目來源下拉式清單中選取輸入類型。
CSVHeaderLocation
注意
只有在使用CSV檔案作為資料集時,才必須指定此欄位。
接受下列其中一個值來指定欄標題的位置:
重要
目前,Step Functions 支援高達 10 KB 的CSV標頭。
FIRST_ROW
— 如果檔案的第一行是標頭,請使用此選項。GIVEN
— 使用此選項可指定狀態機器定義內的標頭。例如,如果您的CSV檔案包含下列資料。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"
] } }
提示
在工作流 Studio 中,您可以在 [項目來源] 欄位中的 [其他組態] 下找到此選項。
MaxItems
限制傳遞至
Map
狀態的資料項目數。例如,假設您提供的CSV檔案包含 1000 個資料列,並指定限制為 100。然後,解釋器只傳遞 100 行的Map
狀態。狀Map
態會以連續順序處理項目,從標題列之後開始。根據預設,
Map
state 會重複執行指定資料集中的所有項目。注意
目前,您可以指定最多 100 萬的限制。「分散式地圖」狀態會停止讀取超過此限制的項目。
提示
在工作流 Studio 中,您可以在 [項目來源] 欄位中的 [其他組態] 下找到此選項。
或者,您可以指定分散式映射狀態輸入中現有鍵值對的參考路徑。此路徑必須解析為正整數。您可以在
MaxItemsPath
子欄位中指定參照路徑。重要
您可以指定
MaxItems
或MaxItemsPath
子欄位,但不能同時指定兩者。
Resource
Step Functions 必須根據指定的資料集叫用的 Amazon S3 API 動作。
Parameters
JSON物件,指定資料集所在的 Amazon S3 儲存貯體名稱和物件金鑰。
重要
確保您的 Amazon S3 存儲桶處於相同的位置 AWS 帳戶 以及 AWS 區域 作為你的狀態機。
資料集範例
您可以指定下列其中一個選項作為資料集:
重要
Step Functions 需要適當的許可才能存取您使用的 Amazon S3 資料集。如需資料集IAM原則的相關資訊,請參閱IAM資料集的政策。
「分散式貼圖」狀態可以接受從工作流程中先前步驟傳遞的JSON輸入。此輸入必須是陣列,或者必須包含特定節點內的陣列。若要選取包含陣列的節點,您可以使用ItemsPath (地圖)
欄位。
若要處理陣列中的個別項目,分散式對應狀態會啟動每個陣列項目的子工作流程執行。下列標籤顯示傳遞至Map
狀態的輸入範例,以及對應輸入至子工作流程執行的範例。
注意
當您的資料集是上一個步驟的JSON陣列時,Step Functions 會省略ItemReader
欄位。
分散式地圖狀態可以重複存放在 Amazon S3 儲存貯體中的物件。當工作流程執行到達Map
狀態時,Step Functions 數會叫用 ListObjectsV2 API 動作,該動作會傳回 Amazon S3 物件中繼資料的陣列。在此陣列中,每個項目都包含儲存在值區中之資料的資料,例如ETag和 Key。
若要處理陣列中的個別項目,「分散式對應」狀態會啟動子工作流程執行。例如,假設您的 Amazon S3 儲存貯體包含 100 個映像檔。然後,調用ListObjectsV2
API動作後返回的數組包含 100 個項目。然後,「分散式對應」狀態會啟動 100 個子工作流程執行,以處理每個陣列項目。
注意
目前,Step Functions 還包括您使用 Amazon S3 主控台在特定 Amazon S3 儲存貯體中建立的每個資料夾的項目。這會導致由「分散式地圖」狀態啟動的額外子工作流程執行。若要避免為資料夾建立額外的子工作流程執行,建議您使用 AWS CLI 以建立資料夾。如需詳細資訊,請參閱中的高階 Amazon S3 命令 AWS Command Line Interface 使用者指南。
Step Functions 需要適當的許可才能存取您使用的 Amazon S3 資料集。如需資料集IAM原則的相關資訊,請參閱IAM資料集的政策。
下列索引標籤顯示ItemReader
欄位語法範例,以及為此資料集傳遞至子工作流程執行的輸入。
分散式地圖狀態可以接受存放在 Amazon S3 儲存貯體中的JSON檔案做為資料集。該JSON文件必須包含一個數組。
當工作流程執行到達狀Map
態時,「Step Functions」會叫用GetObjectAPI動作來擷取指定的JSON檔案。然後,Map
狀態會重複執行陣列中的每個項目,並針對每個項目啟動子工作流程執行。例如,如果您的JSON檔案包含 1000 個陣列項目,則Map
狀態會啟動 1000 個子工作流程執行。
注意
用於啟動子工作流程執行的執行輸入不能超過 256 KB。但是,如果您接著套用選擇性
ItemSelector
欄位以減少項目大小,則 Step Functions 支援從CSV或JSON檔案讀取最多 8 MB 的項目。目前,Step Functions 支援 10 GB 作為 Amazon S3 庫存報告中個別檔案的大小上限。不過,如果每個個別檔案小於 10 GB,則 Step Functions 可以處理超過 10 GB。
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 儲存貯體中的CSV檔案做為資料集。如果您使用CSV檔案做為資料集,則必須指定資料CSV欄標題。若要取得有關如何指定CSV標頭的資訊,請參閱〈〉該 ItemReader 領域的內容。
Step Functions 根據以下規則解析CSV文件:
-
逗號 (,) 是用來分隔欄位的分隔符號。
-
換行符是分隔記錄的分隔符。
-
欄位會被視為字串。對於資料類型轉換,請使用中的
States.StringToJson
內建函數。ItemSelector (地圖) -
括住字串時不需要雙引號 (」「)。不過,以雙引號括住的字串可以包含逗號和換行符,而不會做為記錄分隔符號。
-
您可以通過重複它們來保留雙引號。
-
如果資料列中的欄位數目小於標頭中的欄位數目,Step Functions 會為遺漏值提供空字串。
-
如果列中的欄位數目大於標題中的欄位數目,則「Step Functions 數」會略過其他欄位。
如需「Step Functions」如何剖析CSV檔案的詳細資訊,請參閱Example of parsing an input CSV file。
當工作流程執行到達狀Map
態時,「Step Functions」會叫用GetObjectAPI動作來擷取指定的CSV檔案。然後,Map
狀態會重複執行CSV檔案中的每一列,並啟動子工作流程執行,以處理每一列中的項目。例如,假設您提供的CSV檔案包含 100 列作為輸入。然後,解釋器將每一行傳遞給Map
狀態。狀Map
態會以序列順序處理項目,從標題列之後開始。
注意
用於啟動子工作流程執行的執行輸入不能超過 256 KB。但是,如果您接著套用選擇性
ItemSelector
欄位以減少項目大小,則 Step Functions 支援從CSV或JSON檔案讀取最多 8 MB 的項目。目前,Step Functions 支援 10 GB 作為 Amazon S3 庫存報告中個別檔案的大小上限。不過,如果每個個別檔案小於 10 GB,則 Step Functions 可以處理超過 10 GB。
Step Functions 需要適當的許可才能存取您使用的 Amazon S3 資料集。如需資料集IAM原則的相關資訊,請參閱IAM資料集的政策。
下列索引標籤顯示ItemReader
欄位語法範例,以及為此資料集傳遞至子工作流程執行的輸入。
分散式地圖狀態可以接受以資料集形式存放在 Amazon S3 儲存貯體中的 Amazon S3 庫存資訊清單檔案。
當工作流程執行到達狀Map
態時,Step Functions 會叫用GetObjectAPI動作以擷取指定的 Amazon S3 庫存資訊清單檔案。然後,Map
狀態會重複執行詳細目錄中的物件,以傳回 Amazon S3 庫存物件中繼資料的陣列。
注意
目前,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動作所需的最低權限。這些原則也包含存取所需的最低權限 Step Functions AWS 資源,例如 Amazon S3 儲存貯體和物件,以及 Lambda 函數。我們強烈建議您僅在IAM原則中加入必要的權限。例如,如果您的工作流程包含分散式模式的Map
狀態,請將您的政策範圍縮減到包含資料集的特定 Amazon S3 儲存貯體和資料夾。
重要
如果您指定 Amazon S3 儲存貯體和物件或前綴,其中包含指向分散式地圖狀態輸入中現有鍵值組的參考路徑,請確定您已更新工作流程的IAM政策。將政策範圍縮小到值區和路徑在執行時期解析為的物件名稱。
下列IAM政策範例授與使用 ListObjectsV2 和GetObjectAPI動作存取 Amazon S3 資料集所需的最低權限。
範例 IAM將 Amazon S3 物件做為資料集的政策
下列範例顯示一項IAM政策,該政策授與存取名為的 Amazon S3 儲存貯體
中組織的物件的最低權限processImages
。amzn-s3-demo-bucket
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages
" ] } } } ] }
範例 IAM將CSV檔案作為資料集的政策
下列範例顯示的IAM原則會授與存取名為之CSV檔案的最少權限
。ratings.csv
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
/csvDataset
/ratings.csv
" ] } ] }
範例 IAM將 Amazon S3 庫存作為資料集的政策
下列範例顯示授與存取 Amazon S3 庫存報告之最少權限的IAM政策。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::
destination-prefix
/amzn-s3-demo-bucket
/config-ID
/YYYY-MM-DDTHH-MMZ
/manifest.json", "arn:aws:s3:::destination-prefix
/amzn-s3-demo-bucket
/config-ID
/data/*" ] } ] }