【发布时间】:2023-03-17 02:45:01
【问题描述】:
我正在尝试在 Amazon EBS 卷上创建标签,但前提是该标签不存在。其他一切都在我的代码上工作,但这部分不知何故不起作用。如果值与我的给定值不匹配,我希望这个 Lambda 函数创建一个标签。另一个条件是如果标签不存在,则创建一个标签。所以我的第一个条件是有效的,但不是第二个。如果标签不存在,我会收到一条错误消息(请参阅附件)此方法无效。我正在使用!=,另外,我使用了if not in tag['Key'] == 'Tech.BackUp.Retention.Days'。这条线也给了我一个错误。
已编辑:
- 如果我没有
Tech.Backup.Retention.Days标签,那么我想创建一个标签:Tech.Backup.Retention.Days。价值无关紧要,我可以解决这个问题。 - 这只是我的状况不正常。例如,我列出了 3 卷,每卷都包含某种类型的标签。其中一些带有
Tech.Backup.Retention.Days,而另一些则没有。哪一个没有它,我想创造它。
还有一点:Lambda function to check if specific tag do NOT exists-python
这是我发现的类似问题,但这种方法甚至不起作用。相信我,我已经研究了一个星期,但无法解决它。我是 lambda 新手,可能是我错过了一些技巧。
已编辑 2ndV
我将在这里做的是:如果我找到一个备份标记然后检查值 (30),如果值为 30,则删除卷,如果值不是 30,则将值更新为 30。注意:我找不到如何更新值,所以每次值不匹配时,我都会创建一个具有给定值的新标签。最后,如果标签甚至不存在,则创建一个新标签。
问题:在我添加您的代码后,如果标签不存在,那么它正在创建一个新标签,但如果标签存在并且值匹配,那么它不会被删除。
这是我的全部代码:
TAG1 = 'Tech.BackUp.Retention.Days'
TAG2 = 'Tech.Backup.Time.HourOfDay'
ec2 = boto3.resource('ec2',region_name='us-east-2')
volume_list = ['1111']
for volume in volume_list:
try:
tag1_value = ([tag['Value'] for tag in volume.tags if tag['Key'] == TAG1] or [None])[0]
tag2_value = ([tag['Value'] for tag in volume.tags if tag['Key'] == TAG2] or [None])[0]
#first tag
if tag1_value == '30':
print("Exist")
else:
delV.create_tags(Tags=[{'Key':TAG1, 'Value': '30'}])
delV.create_tags(Tags=[{'Key':TAG2, 'Value': '01'}])
break
#second tag
if tag2_value == '01':
print("delete")
except ClientError as e:
continue
【问题讨论】:
-
能否请您编辑您的问题并提供您想要应用的确切逻辑(以文字形式)?例如“如果 xyz 标签不存在,则使用值 20 创建它。”
-
@JohnRotenstein 我已经编辑了这个问题。如果您需要任何其他内容或有更多问题,请告诉我。在此先感谢...
标签: python amazon-web-services aws-lambda boto3