Ошибка аутентификации SAML в Python AWS Boto3

1

Привет, я пытаюсь найти все экземпляры AWS EC2 с открытым портом 22 0.0.0.0/0. У меня есть код ниже, но я продолжаю работать с ошибкой обработки авторизации ниже. Похоже, что я не могу признать, что я аутентифицирован. Я искал, но не могу найти, как справиться с этой ошибкой. Любые идеи о том, как обращаться с ошибкой ниже?

import sys
import boto
from boto import ec2
from boto import sns
import os
import boto3


# Call the saml API Key Retreiver - Must be stored in C:\Temp
os.system('"C:/Temp/apikeyretriever_windows_386.exe"')

# Set Profile to SAML
session = boto3.session.Session(profile_name='saml')



connection = ec2.connect_to_region("us-east-1")
connSNS = boto.sns.connect_to_region("us-east-1")
sg = connection.get_all_security_groups('us-east-1')

listOfInstances = ""
messages = "Following Instances have port 22 open"


def getTag(instanceId):
    reservations = connection.get_all_instances(filters={'instance_id': instanceId})
    for r in reservations:
        for i in r.instances:
            return i.tags['Name']


try:

    for securityGroup in sg:
        for rule in securityGroup.rules:

            global instanceId;

            if (rule.from_port == '22' and rule.to_port == '22') and '0.0.0.0/0' in str(rule.grants):
                for instanceid in securityGroup.instances():
                    listOfInstances += "Instance Name : " + getTag(instanceId.split(':')[
                                                                       1]) + "\t State:" + instanceid.state + "\t SecurityGroup:" + securityGroup.name + "\n"

                    connSNS.publish(topic='sns-arn-endpoint', message=messages + "\n" + listOfInstances,
                                    subject='ProjectName : Server List with Port 22 Open')

except:
    print('Some Error occurred : ')
    print
    sys.exc_info()
    connSNS.publish(topic='sns-arn-endpoint', message=sys.exc_info(), subject='script ended with error')

Сообщение об ошибке:

 Traceback (most recent call last):
      File "port.py", line 17, in <module>
        connection = ec2.connect_to_region("us-east-1")
      File "C:\ProgramData\Anaconda3\lib\site-packages\boto\ec2\__init__.py", line 6
    6, in connect_to_region
        connection_cls=EC2Connection, **kw_params)
      File "C:\ProgramData\Anaconda3\lib\site-packages\boto\regioninfo.py", line 218
    , in connect
        return region.connect(**kw_params)
      File "C:\ProgramData\Anaconda3\lib\site-packages\boto\regioninfo.py", line 288
    , in connect
        return self.connection_cls(region=self, **kw_params)
      File "C:\ProgramData\Anaconda3\lib\site-packages\boto\ec2\connection.py", line
     103, in __init__
        profile_name=profile_name)
      File "C:\ProgramData\Anaconda3\lib\site-packages\boto\connection.py", line 110
    0, in __init__
        provider=provider)
      File "C:\ProgramData\Anaconda3\lib\site-packages\boto\connection.py", line 569
    , in __init__
        host, config, self.provider, self._required_auth_capability())
      File "C:\ProgramData\Anaconda3\lib\site-packages\boto\auth.py", line 1021, in
    get_auth_handler
        'Check your credentials' % (len(names), str(names)))
    boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handl
    ers were checked. ['HmacAuthV4Handler'] Check your credentials
Теги:
amazon-web-services
amazon-ec2
boto3
boto

1 ответ

2
Лучший ответ

Сообщение об ошибке, которое вы получаете из трассировки стека, похоже на то, что ваш скрипт не может найти токен STS, который я предполагаю, это то, что apikeyretriever_windows_386.exe должно создавать и хранить для вас, для входа в API под профилем называемый "saml" в вашем файле AWS Credentials/Config.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню