If you only need access to the CloudWatch events/logs you can enable cross account access allowing you to run everything from a monitoring account (recommended for better security) or your master account.
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html
If you need access to each account you will need to do the following:
- Create IAM role in each account that can be assumed by Lambda in the master account
- In your lambda your main loop would look something like this.
for accountId in <list of accounts>
for region in <region list>
awsConfig = getAssumeRoleCredtionals(accountId, region) // This is an AWS.Config
ec2 = new AWS.EC2(awsConfig)
results = ec2.describeInstances()
end for
end for