簡體   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