繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM