【发布时间】:2021-10-15 06:58:45
【问题描述】:
我有一个 Lambda 函数,每当 OVA 文件上传到 S3 存储桶时就会触发,然后它应该会触发基于它创建的 AMI。
我可以使用 boto.client('ec2').import_image() 创建 import_image 任务,该任务将在完成后创建 AMI。 我面临的问题是将标签应用于将要创建的 AMI。特别是带有“名称”键的标签。
执行以下操作,我可以使用 TagSpecification 参数将标签应用于导入图像任务。我可以使用 'aws ec2 describe-import-tasks' 验证这些标签是否在任务上,但是当任务完成时,这些标签不会应用于注册表中创建的 AMI。
我假设我没有正确应用标签。或者我需要等待任务完成,然后将标签应用到创建的 AMI ID。但是这个过程会导致我不得不等待很多分钟才能根据 OVA 大小完成。
import boto3
ec2 = boto3.client('ec2')
...
import_vmdk = ec2.import_image(
Description='test',
DiskContainers=[
{
'Description': '',
'Format': 'ova',
'UserBucket': {
'S3Bucket': bucket,
'S3Key': key
}
}
],
LicenseType='BYOL',
TagSpecifications=[
{
'ResourceType':"snapshot",
'Tags': [
{
'Key': 'name',
'Value': ami_name
},
]
},
]
)
【问题讨论】:
-
尝试使用
'ResourceType':"image",因为这是由命令创建的。 -
@JohnRotenstein 我之前尝试过,它会生成以下错误:“调用 ImportImage 操作时发生错误(InvalidParameter):'image' 不是此操作的有效可标记资源类型。”我已经查看了该文档以查找可应用于“ResourceType”的所有选项的相应 AWS CLI 命令,但老实说,我没有足够的经验来知道正确的命令,除非我用完之前不尝试似乎最接近的术语的选项。 docs.aws.amazon.com/cli/latest/reference/ec2/import-image.html
-
import-image-task? -
@JohnRotenstein 'import-image-task' 将在导入任务上创建标签,我可以通过描述导入任务来看到。但标签不会应用于它生成的 AMI。
标签: python-3.x amazon-web-services aws-lambda amazon-ami