Я пытаюсь обновить политику корзины s3 новыми IP-адресами. Я хочу nslookup домен, а затем применить эти IP-адреса к политике s3 в aws: SourceIP. И напоследок, это мой первый родео ....
import subprocess
import boto3
from awspolicy import BucketPolicy
process = subprocess.Popen(["nslookup", "domain"], stdout=subprocess.PIPE, encoding='utf8')
output = process.communicate()[0].split('\n')
ip_arr = []
for data in output:
if 'Address' in data:
ip_arr.append(data.replace('Address: ',''))
ip_arr.pop(0)
s3_client = boto3.client('s3')
bucket_name = 'testwhitelist'
# Load the bucket policy as an object
bucket_policy = BucketPolicy(serviceModule=s3_client, resourceIdentifer=bucket_name)
# Select the statement that will be modified
statement_to_modify = bucket_policy.select_statement('IPAllow')
# Insert new_user_arn into the list of Principal['AWS']
ip_address = ip_arr
statement_to_modify.Condition['IpAddress'].append(ip_address)
# Save change of the statement
statement_to_modify.save()
# Save change of the policy. This will update the bucket policy
statement_to_modify.source_policy.save() # Or bucket_policy.save()
Когда я запускаю эту команду, я получаю эту ошибку:
Statement_to_modify.Condition ['IpAddress']. append (ip_address) AttributeError: у объекта 'dict' нет атрибута 'append'
Я понимаю, что это значит, но я не знаю, как это исправить. Пожалуйста и спасибо за вашу помощь !!! Я открыт для публичной c критики ....