问题描述
我有一些代码可以为所有挂起和正在运行的实例添加标签,然后搜索它们关联的卷,并为这些卷添加标签。但是,如果我启动一个完全没有标签的新实例,我会收到 KeyError 并且它不起作用。我要做的是:
- 搜索所有正在运行和待处理的 EC2
- 如果实例上不存在 'Name' 标签,则添加一个键:'Name' 标签以及键:'test_key',值:'test_value'。
- 如果 key: 'Name' 标签确实存在,只需将 key: 'test_key' , value: 'test_value' 添加到 EC2 的
- 向与正在运行/待处理的实例关联的所有卷添加标签
代码如下:
ChartDataset
如果新实例上有“名称”标签,它可以正常工作,但如果“名称”标签不存在,则不起作用。它抛出以下错误:
{ "errorMessage": "'标签'","errorType": "KeyError",“堆栈跟踪”: [ " 文件 "/var/task/lambda_function.py",line 38,in lambda_handler\n for tag in instance['Tags']:\n" ] }
我认为这是因为它正在搜索一个标签,但新实例没有标签,所以它出错了。
解决方法
如果实例没有标签,则不会有任何 #include <stdlib.h>
#include <stdio.h>
#include <time.h>
int in_range(int value,int lower,int upper) {
return value >= lower && value <= upper;
}
char get_cell_color(int x,int y,int max_x,int max_y,int m[max_x][max_y]) {
int v = m[x][y];
int n = -1,s = -1,e = -1,w = -1;
/* change from logical "size",to maximum "index" */
max_x -= 1;
max_y -= 1;
if (in_range(x,1,max_x))
n = m[x - 1][y];
if (in_range(x,max_x - 1))
s = m[x + 1][y];
if (in_range(y,max_y - 1))
e = m[x][y + 1];
if (in_range(y,max_y))
w = m[x][y - 1];
return (v > n && v > s && v > e && v > w) ? 'R' : 'G';
}
int main(void) {
int x = 0,y = 0;
srand(time(NULL));
while (!in_range(x,10) || !in_range(y,10)) {
printf("Enter X: ");
scanf("%d",&x);
printf("Enter Y: ");
scanf("%d",&y);
}
int matrix[x][y];
for (int i = 0; i < x; i++)
for (int j = 0; j < y; j++)
matrix[i][j] = rand() % 10 + 1;
char rg_matrix[x][y];
for (int i = 0; i < x; i++)
for (int j = 0; j < y; j++)
rg_matrix[i][j] = get_cell_color(i,j,x,y,matrix);
for (int i = 0; i < x; i++) {
printf("[ ");
for (int j = 0; j < y; j++)
printf("\033[%dm%02d ",(rg_matrix[i][j] == 'R' ? 31 : 32),matrix[i][j]);
printf("\033[0m]\n");
}
}
字段。所以你必须检查这个:
Tags
,
我编辑并添加了以下内容,现在可以使用了。对于标签,我添加了第二个名为 mytags2 的列表,它也有“名称”标签:
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
if 'Tags' in instance:
ec2.create_tags(
Resources = [instance["InstanceId"] ],Tags = mytags)
elif 'Tags' not in instance:
ec2.create_tags(
Resources = [instance["InstanceId"] ],Tags = mytags2)
然后,我重新运行 describe_instances 并向卷添加标签。