如何自动配置AWS命令行界面并在python中设置配置文件过程?

时间:2016-03-31 17:31:24

标签: python amazon-web-services aws-cli

我想在python中自动化this页面上显示的配置AWS命令行界面。我想这样做,以便我不必手动输入每一步(如aws访问密钥ID,秘密访问密钥,区域和输出格式),因为我有大量需要此步骤的服务器。

有没有办法在python脚本中对此进行编码,当我在各个服务器上运行该python时,它会进行此配置文件设置?有了这个,我只需要在每个服务器上运行一个脚本,而不是每个步骤都运行。

5 个答案:

答案 0 :(得分:6)

我建议使用Ansible并将配置文件复制到服务器。最简单,没有错误。如果排除Ansible,请致电aws configure set

如果要创建配置文件,请在subprocess

中执行以下操作
aws configure set aws_access_key_id xxxxxxxxx
aws configure set aws_secret_access_key xxxxxxxxx
....

如果只想在Python脚本中设置它,请在脚本中设置环境变量:

import os
os.environ['aws_access_key_id'] = 'xxxxxxxxx'

答案 1 :(得分:2)

helloV很有帮助,应该被赞成。

这是我对它的重新处理(你可能需要或不需要在最后一个命令中使用sudo)

(请注意这是bash,而不是python - 许多方法可以将一般的想法贬低:-))

aws configure set default.region us-east-1
aws configure set aws_access_key_id 'YOUR_ACCESS_KEY'
aws configure set aws_secret_access_key 'YOUR_SECRET_KEY'
aws ecr get-login | sudo sh

这里是一个班轮。

aws configure set default.region us-east-1; aws configure set aws_access_key_id 'YOURSACCESSKEY' ; aws configure set aws_secret_access_key 'YOUR_SECRET_KEY'; aws ecr get-login | sudo sh

答案 2 :(得分:2)

不要依赖服务器的操作系统或服务器的任何其他方面,这可能会导致 python 脚本的兼容性问题。

我建议在 python 脚本中使用 boto3 库。

取决于您要在 aws 服务中连接的资源。假设 S3。

s3 = boto3.resource('s3', region_name='xxxxxxxx',
    aws_access_key_id='xxxxxxxxx',
    aws_secret_access_key='xxxxxxxxx')

答案 3 :(得分:0)

下面的bash有什么问题

curl http://169.254.169.254/latest/meta-data/instance-id > test.txt
ID=cat test.txt | cut -d [ -f 1]

IP="13.127.33.125"

Allow_IP=`/usr/bin/aws ec2 describe-instances --output json |grep -i PublicIp|grep $IP|head -1|awk -F":" '{print $2}'|tr -d ","|tr " \" " " "|tr -d " "`


if [ "$Allow_IP" == "" ]
then
    /usr/bin/aws ec2 associate-address --instance-id $ID --public-ip $IP
else
    echo "IP not availble " >>/var/tmp/script.out
fi

答案 4 :(得分:0)

我确信您在 4 年后设法解决了这个问题,但请注意,这是一种完全错误的方法,在这种情况下,您需要使用 EC2 实例配置文件,您可以授予对任何 AWS 资源的访问权限示例 s3。