我知道Amazon S3是一种存储静态文件的服务。但我不明白的是,如果我将一些PHP文件存储在S3存储桶中,为什么不能从EC2实例中执行这些文件呢?
答案 0 :(得分:2)
Amazon S3是一种数据存储服务。当从S3请求文件时,它将被发送给请求者,而不管文件格式。 S3不会以任何方式处理文件,也不会将内容传递给Amazon EC2以供执行。
如果您想要PHP引擎执行PHP文件,则需要在Amazon EC2实例上运行Web服务器。
答案 1 :(得分:1)
直接从S3运行,这将永远不会起作用,因为s3中的对象在存储在本地系统真正可以使用的s3中时不会以某种方式呈现。
然而,好消息是你可以将php从S3下载到本地系统并执行它!
我自己使用此方法与lambda创建的实例进行一些文件处理。 Lambda创建实例,实例中的bash脚本UserData将执行s3副本(见下文)以复制php文件并将PHP处理的数据文件向下复制,然后根据我的文件调用php。
要从cli中的s3下载文件:
//save as file.php in the current directory
aws s3 cp s3://my-s3-bucket-name/my/s3/file.php .
//or
//save as a different filename
aws s3 cp s3://my-s3-bucket-name/my/s3/file.php my-file.php
//or
//save it in a different folder
aws s3 cp s3://my-s3-bucket-name/my/s3/file.php some/directory/path/file.php
然后,您可以将此文件传递给PHP,以便像执行任何其他文件一样执行。