AWS CLI文件流管道处理:本地执行还是云端执行?
AWS CLI流处理:处理操作的执行位置
问题描述
当使用AWS CLI处理文件流时,对数据流执行的处理操作是在AWS服务器端,还是在执行命令的本地机器上?
举例说明:假设some_process是处理流数据的Perl脚本,执行以下命令时:
aws s3 cp s3://mybucket/unprocessed_stream.txt - | \ some_process | \ aws s3 cp - s3://mybucket/processed_stream.txt
请问some_process是在AWS服务器端执行(无需本地下载数据),还是在本地执行?
答案
核心结论
some_process是在本地机器执行的。
详细解释
命令中的-在aws s3 cp语法里代表本地的标准输入/输出:
- 第一个
aws s3 cp s3://mybucket/unprocessed_stream.txt -会将S3上的对象内容下载到本地,输出到本地的标准输出(stdout) - 管道符
|会把本地stdout的内容传给some_process,这个脚本完全在本地机器上运行,处理流经的数据 - 处理后的结果再通过管道传给第二个
aws s3 cp - s3://mybucket/processed_stream.txt,从本地标准输入(stdin)读取数据,上传回S3
整个流程中,AWS服务器端仅负责S3对象的下载和上传操作,不会执行你的处理脚本,所有数据处理逻辑都在本地完成,数据会短暂流经本地机器。
内容的提问来源于stack exchange,提问作者rxFt20
相关产品推荐
相关产品推荐

