我现在就要解决lambda异常问题了。在获得一些帮助调试最近的异常并解决它们之后,有一个我无法解决,因此希望传递它
import boto3
sts_client = boto3.client('sts')
assumed_role_object=sts_client.assume_role(
RoleArn="arn:aws:iam::11111111:role/role",
RoleSessionName="AssumedRoleSession2"
)
credentials=assumed_role_object['Credentials']
def lambda_handler(context,event):
client = boto3.client(
'iam',
aws_access_key_id=credentials['AccessKeyId'],
aws_secret_access_key=credentials['SecretAccessKey'],
aws_session_token=credentials['SessionToken'],
)
sns = boto3.client('sns')
response = client.list_users()
userVirtualMfa = client.list_virtual_mfa_devices()
mfaNotEnabled = []
virtualEnabled = []
physicalString = ''
# loop through virtual mfa to find users that actually have it
for virtual in userVirtualMfa['VirtualMFADevices']:
if 'User' not in virtual or 'UserName' not in virtual['User']:
# Catch the exception
raise Exception("Invalid virtual %s" % virtual)
virtualEnabled.append(virtual['User']['UserName'])
# loop through users to find physical MFA
for user in response['Users']:
userMfa = client.list_mfa_devices(UserName=user['UserName'])
if len(userMfa['MFADevices']) == 0:
if user['UserName'] not in virtualEnabled:
mfaNotEnabled.append(user['UserName'])
if len(mfaNotEnabled) > 0:
physicalString = 'Physical & Virtual MFA is not enabled for the following users: \n\n' + '\n'.join(mfaNotEnabled)
else:
physicalString = 'All Users have Physical and Virtual MFA enabled'
response = sns.publish(
TopicArn='arn:aws:sns:eu-west-2:222222222:sns',
Message= physicalString,
Subject='Enable MFA',
)
return mfaNotEnabled
异常报告正确,但我希望该功能继续
Response:
{
"stackTrace": [
[
"/var/task/lambda_mfa_function.py",
27,
"lambda_handler",
"raise Exception(\"Invalid virtual %s\" % virtual)"
]
],
"errorType": "Exception",
"errorMessage": "Invalid virtual {u'SerialNumber': 'arn:aws:iam::11111111:mfa/blah-mfa-device', u'EnableDate': datetime.datetime(2016, 05, 16, 01, 6, 35, tzinfo=tzlocal()), u'User': {u'PasswordLastUsed': datetime.datetime(2018, 5, 1, 02, 35, 27, tzinfo=tzlocal()), u'CreateDate': datetime.datetime(2014, 7, 17, 13, 43, 27, tzinfo=tzlocal()), u'UserId': '11111111', u'Arn': 'arn:aws:iam::11111111:blah'}}"
}
Request ID:
"c11a70c9-3a59-486a-9aa9-7286a0cb0b94"
Function Logs:
START RequestId: c11a70c9-3a59-486a-9aa9-7286a0cb0b94 Version: $LATEST
Invalid virtual {u'SerialNumber': 'arn:aws:iam::11111111:mfa/blah-mfa-device', u'EnableDate': datetime.datetime(2016, 11, 16, 22, 6, 35, tzinfo=tzlocal()), u'User': {u'PasswordLastUsed': datetime.datetime(2020, 5, 1, 14, 35, 27, tzinfo=tzlocal()), u'CreateDate': datetime.datetime(2015, 7, 17, 13, 43, 27, tzinfo=tzlocal()), u'UserId': '265742304136', u'Arn': 'arn:aws:iam::11111111:blah'}}: Exception
Traceback (most recent call last):
File "/var/task/lambda_mfa_function.py", line 27, in lambda_handler
raise Exception("Invalid virtual %s" % virtual)
Exception: Invalid virtual {u'SerialNumber': 'arn:aws:iam::11111111:mfa/blah-mfa-device', u'EnableDate': datetime.datetime(2014, 12, 12, 02, 6, 35, tzinfo=tzlocal()), u'User': {u'PasswordLastUsed': datetime.datetime(2016, 7, 2, 1, 15, 27, tzinfo=tzlocal()), u'CreateDate': datetime.datetime(2014, 2, 7, 3, 33, 17, tzinfo=tzlocal()), u'UserId': '11111111', u'Arn': 'arn:aws:iam::11111111:blah'}}
它在根MFA上抛出了一个键错误,我认为这是由于根名称的性质
File "/var/task/lambda_mfa_function.py", line 26, in lambda_handler
virtualEnabled.append(virtual['User']['UserName'])
KeyError: 'UserName'
阿丁安
except:
pass
导致lambda失败。 有人能帮我指出正确的方向吗
谢谢 尼克
这为我修正了它,并发布在前面的一个问题上
相关问题 更多 >
编程相关推荐