本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ItemReader (地图)
ItemReader
字段是一个 JSON 对象,用于指定数据集及其位置。分布式 Map 状态使用此数据集作为其输入。
以下示例显示了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) or
Parameters
(JSONPath)-
一个 JSON 对象,用于指定存储数据集的 Amazon S3 存储桶名称和对象密钥。
如果存储桶启用了版本控制,您还可以提供 Amazon S3 对象版本。
ReaderConfig
-
一个 JSON 对象,用于指定以下详细信息:
-
InputType
接受以下值之一:
CSV
、JSON
、JSONL
、PARQUET
、MANIFEST
。指定 Amazon S3 数据源的类型,例如文本分隔文件 (
CSV
)、对象、JSON 文件、JSON 行、Parquet 文件、Athena 清单或亚马逊 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
。默认行为是,map 将遍历调用返回
S3:ListObjectsV2
的元数据对象。设置为时LOAD_AND_FLATTEN
,map 将读取和处理结果列表中引用的实际数据对象。 -
ManifestType
可选。值将为或
ATHENA_DATA
或S3_INVENTORY
。注意:如果设置为
S3_INVENTORY
,则不得同时指定,InputType
因为假定类型为CSV
。 -
CSVDelimiter
当为
CSV
或时InputType
,您可以指定此字段MANIFEST
。接受以下值之一:
COMMA
(默认)、PIPE
、SEMICOLON
、SPACE
、TAB
。注意
使用该
CSVDelimiter
字段,ItemReader
可以处理由逗号以外的字符分隔的文件。对 “CSV 文件” 的引用还包括使用该CSVDelimiter
字段指定的替代分隔符的文件。 -
CSVHeaderLocation
当为
CSV
或时InputType
,您可以指定此字段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 仅支持在 Amazon S3 存储桶中列出与状态机相同 AWS 账户 和 AWS 区域 相同的对象。
处理嵌套数据集(2025 年 9 月 11 日更新)
使用新Transformation
参数,您可以将值指定为LOAD_AND_FLATTEN
,地图将从调用中读取结果列表中引用的实际数据对象S3:ListObjectsV2
。
在此版本之前,您需要创建嵌套的分布式地图来检索元数据,然后处理实际数据。第一张地图将遍历返回的元数据S3:ListObjectsV2
并调用子工作流程。每个子状态机中的另一个映射将从单个文件中读取实际数据。使用转换选项,您可以同时完成这两个步骤。
想象一下,您想对系统每小时生成并存储在 Amazon S3 中的过去 24 个日志文件进行每日审计。您的分布式地图状态可以列出日志文件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 政策建议。
分布式 Map 状态可以接受从工作流的上一个步骤中传递的 JSON 输入。
输入可以是 JSON 数组、JSON 对象或 JSON 对象节点内的数组。
Step Functions 将直接迭代数组的元素或 JSON 对象的键值对。
要从 JSON 对象中选择包含数组的特定节点,可以在 JSONata 状态Items
字段中使用ItemsPath ( JSONPath 仅限地图)
或使用 JSONata 表达式。
要处理单个项目,分布式地图状态会启动每个项目的子工作流程执行。以下选项卡显示了传递给 Map
状态的输入以及子工作流执行的相应输入的示例。
注意
如果您的数据集是上一步中的 JSON 数据,则不需要该ItemReader
字段。
分布式 Map 状态 可以迭代存储在 Amazon S3 存储桶中的对象。当工作流程执行达到Map
状态时,Step Functions 会调用 ListObjectsV2 API 操作,该操作会返回 Amazon S3 对象元数据的数组。在此数组中,每个项目都包含存储在存储桶中的实际数据的数据,例如ETag和密钥。
要处理数组中的各个项目,分布式 Map 状态 会启动一个子工作流执行。例如,假设您的 Amazon S3 存储桶包含 100 张图片。然后,调用 ListObjectsV2
API 操作后返回的数组包含 100 个元数据项。然后,分布式地图状态将启动 100 个子工作流程执行来处理每个项目。
要在没有嵌套工作流的情况下直接处理数据对象,可以选择 LOAD_AND_FLATTEN 转换选项来直接处理项目。
注意
-
Step Functions 还将包括使用亚马逊 S3 控制台在 Amazon S3 存储桶中创建的每个文件夹的项目。文件夹项目会导致启动额外的子工作流程执行。
为避免为每个文件夹创建额外的子工作流程执行,我们建议您使用 AWS CLI 来创建文件夹。有关更多信息,请参阅《AWS Command Line Interface 用户指南》中的高级别 Amazon S3 命令。
Step Functions 需要适当的权限,才能访问您使用的Amazon S3 数据集。有关数据集的 IAM 政策信息,请参阅针对数据集的 IAM 政策建议。
以下选项卡显示了该数据集的 ItemReader
字段语法和传递给子工作流执行的输入的示例。
通过增强对 S3 ListObjects V2 作为分布式地图中的输入源的支持,您的状态机可以直接读取和处理 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/
会严格处理一个文件夹。
分布式 Map 状态 可以接受存储在 Amazon S3 存储桶中的 JSON 文件作为数据集。JSON 文件必须包含数组或 JSON 对象。
当工作流程执行达到Map
状态时,Step Functions 会调用 GetObjectAPI 操作来获取指定的 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 行文件中读取最大 8 MB 的项目。 -
Step Functions 支持 10 GB 作为亚马逊 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 行文件作为数据集。
注意
-
用于启动子工作流程执行的执行输入不能超过 256 KiB。但是,如果您随后应用可选
ItemSelector
字段来减小项目的大小,Step Functions 支持从文本分隔文件、JSON 或 JSON 行文件中读取最大 8 MB 的项目。 -
Step Functions 支持 10 GB 作为亚马逊 S3 中单个文件的最大大小。
Step Functions 需要适当的权限,才能访问您使用的Amazon S3 数据集。有关数据集的 IAM 政策信息,请参阅针对数据集的 IAM 政策建议。
以下选项卡显示了该数据集的 ItemReader
字段语法和传递给子工作流执行的输入的示例。
在本示例中,假设您有一个名为的 JSON 行文件
。您已将此文件存储在 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 根据以下规则解析以文本分隔的文件:
-
分隔字段的分隔符由 in 指定。
CSVDelimiter
ReaderConfig分隔符默认为。COMMA
-
换行符是分隔记录的分隔符。
-
字段被视为字符串。对于数据类型转换,使用 ItemSelector (地图) 中的
States.StringToJson
内置函数。 -
不需要使用双引号(" ")将字符串括起来。但是,用双引号括起来的字符串可以包含逗号和换行符,但不用作记录分隔符。
-
可以通过重复双引号来保留双引号。
-
反斜杠 (\) 是另一种转义特殊字符的方法。反斜杠仅适用于其他反斜杠、双引号和配置的字段分隔符,例如逗号或竖线。后跟任何其他字符的反斜杠会被静默移除。
-
你可以通过重复反斜杠来保留它们。例如:
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 行文件中读取最大 8 MB 的项目。 -
Step Functions 支持 10 GB 作为亚马逊 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
因此您可以根据数据源自定义处理。
以下是配置为使用 Athena 清单的ItemReader
配置示例:
"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 清单模式
数据处理的常见场景是将 Map 应用于源自 Athena UNLOAD 查询的数据。Map 调用 Lambda 函数来处理 Athena 清单中描述的每个项目。Step Functions Workflow Studio 提供了一种现成的模式,该模式将所有这些组件组合在一起,阻止你拖到状态机画布上。
分布式 Map 状态 可以接受存储在 Amazon S3 存储桶中的 Amazon S3 清单文件作为数据集。
当工作流程执行达到Map
状态时,Step Functions 会调用 GetObjectAPI 操作来获取指定的 Amazon S3 清单清单文件。
默认情况下,该Map
状态随后会遍历清单中的对象,以返回一组 Amazon S3 清单对象元数据。
如果您指定 ManifestType 为 S3_INVENTORY,则 InputType 无法指定。
注意
-
Step Functions 支持解压缩后,亚马逊 S3 库存报告中单个文件的最大大小为 10 GB。但是,如果每个文件都小于 10 GB,Step Functions 能够处理大小可以超过 10 GB。
Step Functions 需要适当的权限,才能访问您使用的Amazon S3 数据集。有关数据集的 IAM 政策信息,请参阅针对数据集的 IAM 政策建议。
以下是 CSV 格式的清单文件示例:此文件包含名为 csvDataset
和 imageDataset
的对象,其中存储在名为 amzn-s3-demo-source-bucket
的 Amazon S3 存储桶中。
"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 存储桶和文件夹。
重要
如果您在分布式 Map 状态 输入中指定了 Amazon S3 存储桶和对象或前缀,并将参考路径指向现有键值对,请务必更新工作流程的 IAM 策略。将策略范围缩小到运行时该路径解析到的存储桶和对象名称。
以下示例展示了使用 ListObjectsV2 和 GetObjectAPI 操作授予访问您的 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/*" ]
例 使用 ListObjects V2 限制使用文件夹前缀
使用 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
不会被限定范围,您将为对象使用通配符 (*
)。