use*_*355 6 amazon-sqs amazon-web-services boto3
我们使用以下版本的 Boto 写入 SQS -
代码在生产环境中运行成功,但偶尔我们会看到以下间歇性错误 -
NoCredentialsError无法找到凭据。
以下是堆栈跟踪 -
File "botocore/client.py", line 317, in _api_call
return self._make_api_call(operation_name, kwargs)
File "botocore/client.py", line 602, in _make_api_call
operation_model, request_dict)
File "botocore/endpoint.py", line 143, in make_request
return self._send_request(request_dict, operation_model)
File "botocore/endpoint.py", line 168, in _send_request
request = self.create_request(request_dict, operation_model)
File "botocore/endpoint.py", line 152, in create_request
operation_name=operation_model.name)
File "botocore/hooks.py", line 227, in emit
return self._emit(event_name, kwargs)
File "botocore/hooks.py", line 210, in _emit
response = handler(**kwargs)
File "botocore/signers.py", line 90, in handler
return self.sign(operation_name, request)
File "botocore/signers.py", line 154, in sign
auth.add_auth(request)
File "botocore/auth.py", line 352, in add_auth
raise NoCredentialsError
Run Code Online (Sandbox Code Playgroud)
我们有以下 api,可以从多个线程调用 -
def client(self):
if not self._client:
self._client = boto3.client('sqs', self.region)
return self._client
Run Code Online (Sandbox Code Playgroud)
Kee*_*asa -2
此问题主要是由于 Boto3 无法识别 AWS 的正确凭证而引起的。有不同的方法可以解决这个问题。在一切之前,请尝试执行以下步骤。
步骤 1:手动指定 ACCESS_ID 和 ACCESS_KEY。出于安全原因,请勿将这些值直接插入代码中。如果这有效,那么您可以肯定 Boto 发现很难找到访问凭据。
import boto3
client = boto3.client(
'sqs',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
)
Run Code Online (Sandbox Code Playgroud)
其他选项:打开 AWS 凭证文件。~/.aws/credentials。添加配置文件名称作为默认值并运行程序。
[default]
aws_access_key_id=XXXXXXXXXXXXXX
aws_secret_access_key=YYYYYYYYYYY
Run Code Online (Sandbox Code Playgroud)
如果您希望使用不同的配置文件名称,可以在 Boto 会话中指定。
session = boto3.Session(profile_name=your_profile_name)
Run Code Online (Sandbox Code Playgroud)
或者您也可以将AWS_DEFAULT_PROFILE环境变量名称更改为“your_profile_name”
其他选项:您可以通过AWS CLI设置凭证。通过 PIP 安装 AWS CLI。
pip install awscli
Run Code Online (Sandbox Code Playgroud)
接下来,通过以下命令配置凭据和其他信息。
aws configure
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1364 次 |
| 最近记录: |