Je voulais utiliser Boto (Python SDK of AWS) pour analyser le journal de CloudTrail sur S3, mais il y avait des points addictifs et un échantillon du début qui me seraient très utiles. Je n'ai pas bien trouvé le code, alors je vais le mettre au dos du dépliant pour votre référence.
bucket.list (prefix = 'aa / bb / cc')
En outre, le journal de CloudTrail est comme Utiliser Loggly facilite l'analyse.
ʻAws_access_key_id, ʻaws_secret_access_key
, target_path
, proxy
, proxy_port
doivent être définis individuellement.
, ʻaws_secret_access_key
, définissez la clé de l'utilisateur IAM créé pour l'accès externe AWS (n'oubliez pas de donner le droit ReadAccess de l'utilisateur IAM créé à S3 (ʻAmazonS3ReadOnlyAccess`)!)proxy
, proxy_port
sont les paramètres du serveur proxy HTTPtarget_bucket
est le nom du compartiment cible, target_path
est le chemin de S3 que vous souhaitez analyser, ici nous avons uniquement ciblé le journal de 2015/07 de us-west-2Le flux de traitement est le suivant.
target_path
de target_bucket
Bucket et téléchargez-les['eventSource'] == 'rds.amazonaws.com'
), affichez le contenu en sortie standard.
import boto.s3.connection, gzip, StringIO, json
aws_access_key_id='AKKBUGOIU4434DDTT'
aws_secret_access_key='78oiupoiuh7++REugoiusGSEE'
target_bucket = 'your-backet-name'
target_path = 'CroudTrail/AWSLogs/1234567899999888/CloudTrail/us-west-2/2015/07'
def main():
s3Instance = boto.s3.connection.S3Connection \
(aws_access_key_id, aws_secret_access_key, proxy='your.proxy.server.com', proxy_port=8080)
s3Bucket = s3Instance.get_bucket(target_bucket)
bucketList = s3Bucket.list(prefix=target_path)
for count, itemOne in enumerate(bucketList):
s3BucketKey = s3Bucket.get_key(itemOne.name)
buffer_gz = s3BucketKey.get_contents_as_string()
stringBuffer = StringIO.StringIO(buffer_gz)
buffer_text = gzip.GzipFile(fileobj=stringBuffer)
try:
responseJSON = json.loads(buffer_text.read())
except Exception, e:
print e
else:
for count, itemTwo in enumerate(responseJSON['Records']):
if itemTwo['eventSource'] == 'rds.amazonaws.com':
print json.dumps(itemTwo, separators=(',', ':'), indent=2)
print 'Event name = %s' % (itemTwo['eventName'])
print '================================='
stringBuffer.close()
buffer_text.close()
if __name__ == '__main__':
main()