python fabric3 在远程 ec2 实例上执行 boto3 功能

python fabric3 executing boto3 functionality on remote ec2 instance

我正在尝试通过 python fabric3 脚本从本地计算机执行 boto3 功能。

本地机器配置:

  1. 已安装 python3.5 fabric3
  2. 使用 fabric3 创建 aws rds 快照的脚本。
  3. ssh 授权存储在 ssh-add ~/.ssh/ec2.pem

aws EC2 实例上的配置:

  1. 创建了 ~/.aws/config 和 ~/.aws/credentials ans 存储所需的配置,如:

      a. region=, output in ~/.aws/config aws_access_key_id=,    
      b. aws_secret_access_key in ~/.aws/credentials
    
  2. rds 仅对 ec2 实例开放。

观察:

  1. 从本地机器执行 fabric 脚本时它要求 botocore.exceptions.NoRegionError: You must specify a region.

  2. 如果我在 boto3.client(region_name='') 中提供区域名称 它会要求 botocore.exceptions.NoCredentialsError: Unable to locate credentials

表示python fabric 不接收 ~/.aws/config 和 ~/.aws/credentials 文件。

1. python fabric 是否从 ~/.aws 获取凭证和配置?因为我不想通过结构脚本提供凭证

2。在 aws-ec2

上实现基于结构的部署的标准方法是什么

暂时在创建 boto3.client() 时我通过了所需的 aws_access_key_id aws_secret_access_key,但问题仍然是为什么 boto3 客户端没有选择 .aws/config 和 .aws/cred 文件,同时通过 Python Fabric 脚本触发。