简体   繁体   English

Python AWS Boto3 SAML身份验证错误

[英]Python AWS Boto3 SAML Auth Error

Hi I am trying to find all AWS EC2 instances with port 22 0.0.0.0/0 open. 嗨,我正在尝试查找端口22 0.0.0.0/0打开的所有AWS EC2实例。 I have the below code but keep running into an auth handling error below. 我有下面的代码,但继续遇到下面的身份验证处理错误。 It seems like boto cant recognize i authenticated. 看来Boto无法识别我已通过身份验证。 I have been searching around but cannot find how to handle this error. 我一直在搜索,但是找不到如何处理此错误。 Any ideas on how to handle the error below? 关于如何处理以下错误的任何想法?

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')

The error message: 错误信息:

 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

您从堆栈跟踪中获取的错误消息看起来像您的脚本找不到STS令牌,我假设这是apikeyretriever_windows_386.exe应该为您创建和存储的内容,以在配置文件下登录API在您的AWS Credentials / Config文件中称为“ saml”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM