Python скрипт boto3 теряет AWS учетные данные с незначительными изменениями - PullRequest
0 голосов
/ 10 января 2020

Я перечисляю экземпляры EC2 в нескольких различных AWS учетных записях. Количество регионов, которые мне нужны для l oop, зависит от типа учетной записи AWS.

Сценарий работает, если я использую эту функцию:

def set_regions(aws_account):
    ec2_client = boto3.client('ec2', region_name='us-east-1')
    regions = []
    gov_regions = ['us-gov-east-1', 'us-gov-west-1']
    alz_regions = ['us-east-1', 'us-west-2']
    managed_aws_accounts = ['company-lab', 'company-bill', 'company-stage', 'company-dlab', 'company-nonprod', 'company-prod', 'company-security-csm', 'company-logging-csm', 'company-lighthouse', 'company-ab-nonprod', 'company-ab-prod', 'company-govcloud-ab-admin-nonprod', 'company-govcloud-ab-nonprod', 'company-govcloud-ab-admin-prod', 'company-govcloud-ab-prod', 'company-govcloud-ab-mc-admin-nonprod', 'company-govcloud-ab-mc-nonprod', 'company-govcloud-ab-mc-admin-prod', 'company-govcloud-ab-mc-prod', 'company-govcloud-ab-core-qa-admin', 'company-govcloud-ab-core-qa', 'company-govcloud-ab-core-stage-admin', 'company-govcloud-ab-core-stage', 'company-govcloud-ab-mc-qa-admin', 'company-govcloud-ab-mc-qa', 'company-govcloud-ab-mc-stage-admin', 'company-govcloud-ab-mc-stage', 'company-govcloud-admin-ab-dsg-logmon-nonprod', 'company-govcloud-ab-dsg-logmon-nonprod', 'company-govcloud-admin-ab-dsg-logmon-prod', 'company-govcloud-ab-dsg-logmon-prod', 'company-govcloud-admin-ab-dsg-logmon-nonprod2', 'company-govcloud-ab-dsg-logmon-nonprod2', 'company-govcloud-admin-ab-dsg-logmon-prod2', 'company-govcloud-ab-dsg-logmon-prod2', 'company-ab-sandbox', 'company-govcloud-ab-hipaa-admin-np',  'company-govcloud-ab-hipaa-np', 'company-govcloud-ab-hipaa-admin-pd', 'company-govcloud-ab-hipaa-pd', 'company-ksr-a', 'company-ksr-b', 'company-dsg-logging-admin', 'company-dsg-logging-gov', 'company-dsg-security-admin', 'company-dsg-security-gov', 'company-dsg-security-lab', 'company-adv-gov-test-admin', 'company-adv-gov-test' ]
    if aws_account in managed_aws_accounts:
        if 'gov' in aws_account and not 'admin' in aws_account:
            regions = gov_regions
        else:
            regions = [reg['RegionName'] for reg in ec2_client.describe_regions()['Regions']]
    else:
        regions = alz_regions

    return regions

Но если я удаляю только функции alz_regions и managed_aws_accounts из этой функции:

def set_regions(aws_account):
    ec2_client = boto3.client('ec2', region_name='us-east-1')
    regions = []
    gov_regions = ['us-gov-east-1', 'us-gov-west-1']

    if 'gov' in aws_account and not 'admin' in aws_account:
        regions = gov_regions
    else:
        regions = [reg['RegionName'] for reg in ec2_client.describe_regions()['Regions']]
    return regions

Сценарий больше не может найти свои AWS учетные данные:

Exception has occurred: NoCredentialsError
Unable to locate credentials
  File "C:\Users\tdun0002\OneDrive - Company Technologies\Desktop\important_folders\Company\git\cloud_scripts\aws_scripts\python\aws_reporting_tools\aws_ec2_list_instances.py", line 137, in set_regions
    regions = [reg['RegionName'] for reg in ec2_client.describe_regions()['Regions']]
  File "C:\Users\tdun0002\OneDrive - Company Technologies\Desktop\important_folders\Company\git\cloud_scripts\aws_scripts\python\aws_reporting_tools\aws_ec2_list_instances.py", line 701, in main
    regions = set_regions(aws_account)
  File "C:\Users\tdun0002\OneDrive - Company Technologies\Desktop\important_folders\Company\git\cloud_scripts\aws_scripts\python\aws_reporting_tools\aws_ec2_list_instances.py", line 843, in <module>
    main()

Почему незначительное изменение, подобное этому, вызывает эту ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...