如何访问Python SDK boto3的安全令牌

如何访问Python SDK boto3的安全令牌,python,amazon-web-services,aws-sdk,boto3,Python,Amazon Web Services,Aws Sdk,Boto3,我想从python脚本访问AWS理解api。没有获得如何删除此错误的任何线索。有一件事我知道,我必须获得会话安全令牌 try: client = boto3.client(service_name='comprehend', region_name='us-east-1', aws_access_key_id='KEY ID', aws_secret_access_key= 'ACCESS KEY') text = "It is raining today in Seattle" p

我想从python脚本访问AWS理解api。没有获得如何删除此错误的任何线索。有一件事我知道,我必须获得会话安全令牌

try:
  client = boto3.client(service_name='comprehend', region_name='us-east-1', aws_access_key_id='KEY ID', aws_secret_access_key= 'ACCESS KEY')
  text = "It is raining today in Seattle"
  print('Calling DetectEntities')
  print(json.dumps(client.detect_entities(Text=text, LanguageCode='en'), sort_keys=True, indent=4))
  print('End of DetectEntities\n')

except ClientError as e:
  print (e)
错误:调用Detectenties操作时发生错误(UnrecognizedClientException):请求中包含的安全令牌无效


此错误表明您提供的凭据无效

永远不要在源代码中放入凭据也毫无价值。如果其他人获得对源代码的访问权,这可能会导致潜在的安全问题

有几种方法可以向使用AWS SDK的应用程序提供有效凭据(例如
boto3

如果应用程序在Amazon EC2实例上运行,请为该实例分配一个IAM角色。这将自动提供可由boto3检索的凭据

如果您在自己的计算机上运行应用程序,请将凭据存储在
.aws/credentials
文件中。创建此文件的最简单方法是使用
aws configure
命令


请参阅:

我每天使用的一个有用工具是:

这使得担任这个角色变得容易多了

在.aws/credentials和.aws/config中设置访问密钥后

您可以执行以下操作:

AWS\u PROFILE=**您的概要文件**AWS概要文件[python x.py]

[]
中的部分可以替换为您想要使用AWS凭据的任何内容。e、 g.地形图


本质上,此实用程序只是将AWS凭据放入os环境变量中。然后,在boto脚本中,您无需担心设置aws\u访问\密钥\u id等问题。

使用
aws configure
或更新
~/.aws/config
创建配置文件。如果只有一个配置文件要使用=
default
,则可以从
Session()
调用中省略
profile\u name
参数(请参见下面的示例)。然后使用会话对象创建AWS特定于服务的客户端。榜样

import boto3
session = boto3.session.Session(profile_name="test")
ec2_client = session.client('ec2')
ec2_client.describe_instances()
ec2_resource = session.resource(‘ec2’)

提供的凭据是否来自具有访问权限的有效IAM用户?或者它们是临时凭证(在这种情况下,您需要提供aws_会话_令牌)?您是在Amazon EC2实例上还是在自己的计算机上运行此代码?