我想在python中自动化this页面上显示的配置AWS命令行界面。我想这样做,以便我不必手动输入每一步(如aws访问密钥ID,秘密访问密钥,区域和输出格式),因为我有大量需要此步骤的服务器。
有没有办法在python脚本中对此进行编码,当我在各个服务器上运行该python时,它会进行此配置文件设置?有了这个,我只需要在每个服务器上运行一个脚本,而不是每个步骤都运行。
答案 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。