Amazon web services 使用S3上传触发Lambda函数创建EBS卷,该函数将根据S3上传大小创建EBS卷(使用boto3)
目前,我正在使用S3触发器在文件放入S3后启动lambda函数 我的目的是从S3上传中获取大小,并将该值传递到创建EBS卷的自动函数中的Amazon web services 使用S3上传触发Lambda函数创建EBS卷,该函数将根据S3上传大小创建EBS卷(使用boto3),amazon-web-services,amazon-s3,aws-lambda,boto3,amazon-ebs,Amazon Web Services,Amazon S3,Aws Lambda,Boto3,Amazon Ebs,目前,我正在使用S3触发器在文件放入S3后启动lambda函数 我的目的是从S3上传中获取大小,并将该值传递到创建EBS卷的自动函数中的size字段中 然后,我尝试根据文件大小创建一个EBS卷。然后将文件复制到EBS卷,该卷将连接到EC2实例,然后EC2实例将处理该文件。我使用EBS卷是因为上传到主S3存储桶的文件是需要解压缩和处理的压缩文件 是否有方法根据上载的原始文件创建EBS卷大小 response = client.create_volume( AvailabilityZone=
size
字段中
然后,我尝试根据文件大小创建一个EBS卷。然后将文件复制到EBS卷,该卷将连接到EC2实例,然后EC2实例将处理该文件。我使用EBS卷是因为上传到主S3存储桶的文件是需要解压缩和处理的压缩文件
是否有方法根据上载的原始文件创建EBS卷大小
response = client.create_volume(
AvailabilityZone='string',
Encrypted=True|False,
Iops=123,
KmsKeyId='string',
OutpostArn='string',
Size=123,
SnapshotId='string',
VolumeType='standard'|'io1'|'gp2'|'sc1'|'st1',
DryRun=True|False,
TagSpecifications=[
{
'ResourceType': 'client-vpn-endpoint'|'customer-gateway'|'dedicated-host'|'dhcp-options'|'elastic-ip'|'fleet'|'fpga-image'|'host-reservation'|'image'|'instance'|'internet-gateway'|'key-pair'|'launch-template'|'natgateway'|'network-acl'|'network-interface'|'placement-group'|'reserved-instances'|'route-table'|'security-group'|'snapshot'|'spot-fleet-request'|'spot-instances-request'|'subnet'|'traffic-mirror-filter'|'traffic-mirror-session'|'traffic-mirror-target'|'transit-gateway'|'transit-gateway-attachment'|'transit-gateway-multicast-domain'|'transit-gateway-route-table'|'volume'|'vpc'|'vpc-peering-connection'|'vpn-connection'|'vpn-gateway'|'vpc-flow-log',
'Tags': [
{
'Key': 'string',
'Value': 'string'
},
]
},
],
MultiAttachEnabled=True|False
)
您的目标似乎是让AmazonEC2实例处理已上载到AmazonS3的文件 首先,不需要通过Amazon EBS卷发送文件。相反,运行在EC2实例上的软件可以简单地从S3检索is 主要的架构决策是如何在上传文件时触发EC2实例上的进程 我推荐这种架构:
- 创建一个亚马逊SQS队列
- 配置一个Amazon S3事件,以便在上传文件时将消息推送到SQS队列中(这将包括bucket名称和文件名)
- 在Amazon EC2实例上运行一个进程,定期检查SQS队列(例如每分钟检查一次,或根据您的要求增加/减少检查次数)
- 如果发现消息,应用程序应:
- 从Amazon S3下载文件
- 处理文件
- 删除本地文件
- 可选:从S3中删除文件
或者,如果可能,您可以在AWS Lambda中处理该文件,而不使用Amazon EC2实例。但是,您在问题中没有提供足够的信息来确定这是否可行。最奇怪的是,您希望根据一个文件的大小创建一个Amazon EBS卷。你能解释一下你想要做这件事的更广泛的用例吗?我还感到困惑的是,您的问题是从引用到AmazonS3的上传开始的,并且(我猜)希望获得上传的大小,但随后转向询问AmazonEBS(AWS Lambda函数不使用)。您是否可以编辑您的问题,以澄清您实际想要实现的目标?这听起来像是一个XY问题(),Lambda函数无法将文件复制到EBS卷,因此我认为您需要重新考虑整个问题。我建议使用一个EC2实例,该实例具有相当大的EBS空间,可以从SQS队列中读取需要处理的文件。S3可以在新文件到达时向队列发送消息。如果您在EC2上进行处理,Lambda似乎根本不适合这里。