Amazon web services 在安装AMI的同时创建S3 Bucket

Amazon web services 在安装AMI的同时创建S3 Bucket,amazon-web-services,amazon-s3,amazon-ec2,amazon-ami,amazon-ebs,Amazon Web Services,Amazon S3,Amazon Ec2,Amazon Ami,Amazon Ebs,我正计划创建一个小型的公共AMI,用于将文本文件转换为PDF(我在商店里找不到令人满意的内容),但我遇到了一个问题 我知道AMI只是我在另一台机器上成功运行的软件的冻结副本 然而,我有一个问题:如何通过安装AMI创建一个S3 Bucket 用例: 一个用户来到商店,发现我的服务很酷,于是启动了一个实例 实例需要创建一个S3 bucket来保存转换后的文件(也可能是源文件),每个用户需要一个bucket,而不是一个大bucket来保存通过软件转换的所有文件 我有很多问题要问: 这有可能实现吗

我正计划创建一个小型的公共AMI,用于将文本文件转换为PDF(我在商店里找不到令人满意的内容),但我遇到了一个问题

我知道AMI只是我在另一台机器上成功运行的软件的冻结副本

然而,我有一个问题:如何通过安装AMI创建一个S3 Bucket

用例:

  • 一个用户来到商店,发现我的服务很酷,于是启动了一个实例
  • 实例需要创建一个S3 bucket来保存转换后的文件(也可能是源文件),每个用户需要一个bucket,而不是一个大bucket来保存通过软件转换的所有文件
我有很多问题要问:

  • 这有可能实现吗(它是这样设计的)
  • 我应该如何创建bucket,在AMI设置中是否有点击界面,或者我需要通过AWS SDK来完成
  • 如果我需要通过SDK访问它,是否有方法访问用户凭据(或一些随机令牌),以便我可以成功创建一个bucket
  • 我错了吗,所有的文件都应该保存在EBS上,并通过AMI上的nginx提供(而不是使用S3)
哦,如果这个问题看起来很傻的话,我很抱歉,但我对这个AWS酷酷的技术非常熟悉


谢谢

您可以使用AWS cloudformation实现这一点。 步骤是首先创建一个AMI,然后编写一个cloudformation脚本

  • 从该AMI创建一个实例
  • 将新创建的EC2映射到S3。(由于S3存储桶名称在全局范围内是唯一的,因此可能无法获得所需的名称)
  • 但是请注意,云中的服务并不像传统的内部部署系统那样为每个客户安装


    这里有一个租户的概念。因此,每个新客户都是租户,应该从相同的基础设施获得服务。基本上,当一个新客户作为租户加入到您的团队中时,您可能会在已经为这个租户创建的S3中创建一个文件夹,并在其中存储其工件。或者,如果出于某种合理的业务原因,您只想为每个租户创建一个单独的S3存储桶,那么即使在租户入职期间也应该创建新的S3存储桶。将租户和S3文件夹/存储桶的映射存储在某个位置,这样您就可以知道将哪个租户的工件存储在哪里了

    所以您基本上创建了一个将文本转换为pdf的服务?想把它提供给其他人吗?美好的假设我想使用它,为什么我需要启动一个ec2实例,创建一个s3 bucket等等,如果我想将文本转换成pdf?自己运行服务(api网关或ec2实例,或以任何方式运行服务),然后让它可用,这样我就可以上传文本文件,然后您可以转换它。您需要1个全局s3存储桶,每个客户都有一个文件夹及其文件夹中的文件。如果一些客户有隐私问题,并希望在其端运行您的服务(使用他们自己的实例)我会让他们自己创建一个s3 bucket,并拥有一些配置文件,这些文件将引用ec2实例中使用的s3 bucket;只需为那些愿意从他们的终端主持服务的客户准备一些配置指南。谢谢@FrédéricHenri!是的,这可能就是我要做的(你可以把它作为“运行时配置文件”解决方案的答案发布)。你必须想象一下,在我的例子中,我们谈论的是数百个需要转换的docx、doc和odt,在某些情况下,用户有数千个,所以这需要一点空间。我将创建一个接受配置文件的端点并上传到相应的s3 bucket!嘿,我真的很喜欢你的解决方案!这可能是解决问题的方法。然而,我有一个实际问题:如果我在商店上发布它,有人能用cloudformation进行一键式安装吗?我想创造一些简单易用的东西!:)不,您将仅通过cloudformation进行一次安装。之后,在你的网站上的某个地方,你应该可以选择让用户订阅你的服务。当他们这样做的时候,你会获取用户的详细信息,并从你的端点触发该租户的入职。因此,如果我正确地跟踪你,就不可能从AWS市场进行这种一键式部署,对吗?真遗憾……是的,这是正确的。AWS市场不应该用于此用例。这只是非盟特派团的一个地方。作为一个糟糕的解决方法,如果你执意要这样做,可能是在你的AMI用户数据中,你在bucket名称后面放了一个带有一些随机数的“aws s3 mb s3://mybucket”命令。但我强烈劝阻你不要那样做。这并不是SAAS的全部。当然,我更喜欢一个Web界面,人们可以在其中设置他们的存储空间,这似乎更好:)