[英]How to automate the Configuring the AWS Command Line Interface and setting up profile process in python?
我想在 python 中自动执行此页面上显示的配置 AWS 命令行界面。 我想这样做,这样我就不必手动输入每个步骤(如 aws 访问密钥 ID、秘密访问密钥、区域和输出格式),因为我有大量服务器需要这一步。
有什么方法可以在 python 脚本中进行编码,当我在单个服务器上运行该 python 时,它会执行此配置文件设置吗? 有了这个,我只需要在每个服务器中运行一个脚本,而不是运行每个单独的步骤。
helloV 很有帮助,应该点赞。
这是我对它的重新处理(您可能需要也可能不需要最后一个命令中的 sudo )
(请注意,这是 bash,而不是 python - 有很多方法可以将总体思路 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
我建议使用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'
与其依赖服务器的操作系统或服务器的任何其他方面,这可能会导致 python 脚本的兼容性问题。
我建议在 python 脚本中使用 boto3 库。
取决于您要在 aws 服务中连接的资源。 假设S3。
s3 = boto3.resource('s3', region_name='xxxxxxxx',
aws_access_key_id='xxxxxxxxx',
aws_secret_access_key='xxxxxxxxx')
下面的 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 年后设法解决了这个问题,但对于访客来说,这是一种完全错误的方法,在这种情况下,您需要使用 EC2 实例配置文件,您可以授予对任何 AWS 资源(例如 s3)的访问权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.