AWS Translate代码报错PartialCredentialsError:缺失aws_access_key_id
问题原因及解决步骤
核心错误有两个:
- .env文件重复定义了同一个键
AWS_ACCESS_KEY,没有区分访问密钥ID和秘密访问密钥 - 代码读取的变量名与AWS SDK识别的凭证规则不匹配,导致SDK无法获取完整凭证
步骤1:修正.env文件配置
把.env里的重复项改成正确的区分命名,两种可选方式:
方式一:匹配代码里的变量名
如果代码里用AWS_ACCESS_KEY和AWS_SECRET_KEY,则.env内容应为:
AWS_ACCESS_KEY=你的AWS访问密钥ID AWS_SECRET_KEY=你的AWS秘密访问密钥
方式二:使用AWS SDK默认识别的标准变量名(更推荐)
boto3会自动读取这两个标准变量,无需在代码里手动传递:
AWS_ACCESS_KEY_ID=你的AWS访问密钥ID AWS_SECRET_ACCESS_KEY=你的AWS秘密访问密钥
步骤2:调整代码的凭证加载逻辑
对应方式一的代码写法
确保正确读取自定义变量并传给Translate客户端:
from dotenv import load_dotenv import os import boto3 # 加载.env文件 load_dotenv() # 读取自定义凭证变量 access_key = os.getenv('AWS_ACCESS_KEY') secret_key = os.getenv('AWS_SECRET_KEY') # 初始化Translate客户端 translate = boto3.client( 'translate', aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name='你的AWS区域' # 例如us-east-1 )
对应方式二的代码写法(更简洁)
boto3自动读取标准环境变量,无需手动传入:
from dotenv import load_dotenv import boto3 load_dotenv() # 直接初始化客户端,凭证自动加载 translate = boto3.client('translate', region_name='你的AWS区域')
额外注意点
- 确认.env文件放在代码根目录,若路径不同需在
load_dotenv()中指定完整路径(如load_dotenv('/Users/xxx/project/.env')) - 检查.env里的凭证值没有多余空格或引号
- 绝对不要把.env文件提交到Git等版本控制系统,避免凭证泄露
内容的提问来源于stack exchange,提问作者David Espinosa
相关产品推荐
相关产品推荐

