【发布时间】:2020-07-04 10:01:39
【问题描述】:
目前,我正在使用 S3 触发器在文件放入 S3 后启动 lambda 函数。
我的意图是从 S3 上传中获取大小,并将该值传递到创建 EBS 卷的自动化函数中的 Size 字段中。
我正在尝试根据文件大小创建一个 EBS 卷。然后将该文件复制到 EBS 卷,该卷将附加到一个 EC2 实例,该实例随后将处理该文件。我正在使用 EBS 卷,因为上传到主 S3 存储桶的文件是需要解压缩和处理的压缩文件。
有没有办法根据上传的原始文件创建 EBS 卷 Size?
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
)
【问题讨论】:
-
您希望根据一个文件的大小创建一个 Amazon EBS 卷似乎很奇怪。你能解释一下你想要这样做的更广泛的用例吗?我也很困惑,您的问题首先是引用到 Amazon S3 的上传并且(我想)想要获取该上传的大小,但随后转向询问 Amazon EBS(AWS Lambda 函数不使用它)。您能否编辑您的问题以澄清您实际想要完成的任务?然后,我们将能够更好地为您提供帮助。
-
Lambda 函数无法将文件复制到 EBS 卷中,因此我认为您需要重新考虑整个事情。我建议拥有一个具有相当数量 EBS 空间的 EC2 实例,该实例从 SQS 队列中读取它需要处理的文件。当新文件到达时,S3 可以向队列发送消息。如果您在 EC2 上进行处理,Lambda 似乎根本不适合这里。
标签: amazon-web-services amazon-s3 aws-lambda boto3 amazon-ebs