Multiple regions with single account

110 views
Skip to first unread message

doug.g...@gmail.com

unread,
Jun 24, 2013, 4:15:51 PM6/24/13
to edda-...@googlegroups.com
All,

I just started playing with edda a few minutes ago. Seems fantastic and exactly what we need.

However... we use a single Amazon account for management of all our instances across several regions. It seems like edda can manage multiple regions, but _only_ if separate accounts are used.

How can we get edda to poll all regions with a single account?

Thanks,
Doug

Cory Bennett

unread,
Jun 25, 2013, 12:24:48 PM6/25/13
to doug.g...@gmail.com, edda-...@googlegroups.com
Hi Doug,

Edda allows for a lot of flexibility when configuring how it runs. I
think you are getting thrown off by the "edda.accounts" property name,
think of it more as a list of labels rather than AWS accounts. The
labels can share an AWS account, and typically do when you want to
have edda poll multiple region endpoints.

I like to group multiple regions under a common name, it could be
"prod" or "test" or something more generic like "acct". This would
allow for you to configure edda like this:

edda.accounts=acct.us-west-1,acct.us-east-1, acct.eu-west-1

# these are the credentials for all 3 "edda.accounts" which is a
single AWS account
edda.acct.aws.accessKey=<accessKey>
edda.acct.aws.secretKey=<secretKey>

# map the AWS region endpoints to the appropriate "edda.accounts" label
aws.us-west-1.region=us-west-1
aws.us-east-1.region=us-east-1
aws.eu-west-1.region=eu-west-1

The last 3 seem obviously redundant, but edda treats the labels
blindly. I like to use the region as part of the account label since
it makes the most sense, but you could have labeled them anything.
Edda does some processing on the property names where it will split
apart the names on the '.' and recursively look for properties that
match starting with the most specific first. So for the accessKey, we
would look for edda.acct.us-west-1.accessKey then edda.acct.accessKey
then edda.us-west-1.accessKey, then edda.accessKey, in that order.

Hope this helps,
-Cory
> --
> You received this message because you are subscribed to the Google Groups
> "Edda Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to edda-users+...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

Kaushal

unread,
Sep 13, 2019, 3:09:38 PM9/13/19
to Edda Users
Hey Cory, 

I am trying to get Edda to work with one region first then add more regions if it works but single is not working for so far

here is my config my, as soon i specify edda.accounts=inf.<region> 
i see an exception in the logs [DynamoDB.scala:89] [initState]  Error getting item from dynamodb: name 

please can you take a look and let me know what should be done to get this working . 

i am using the 2.1 container mentoined in the zerotodocker wiki 

docker run -d   --name eddatest   -p 8080:8080   -v `pwd`/edda.properties.mine:/tomcat/webapps/ROOT/WEB-INF/classes/edda.properties   netflixoss/edda:2.1


#-- change these properties ---------------------------------------------
edda.accounts=inf.eu-central-1
aws.eu-central-1.region=eu-central-1
edda.inf.aws.accessKey=
edda.inf.aws.secretKey=
edda.s3current.bucket=edda-state-inf
#------------------------------------------------------------------------

edda.collection.aws.stacks.refresh=3600000
edda.collection.inf.cache.refresh=30000
edda.collection.jitter.enabled=false
edda.collection.inf.refresh=120000

edda.bean.argPattern=[^a-zA-Z0-9_]

edda.datastore.class=
edda.elector.class=com.netflix.edda.aws.DynamoDBElector
edda.elector.dynamodb.account=inf
edda.elector.dynamodb.leaderTimeout=60000
edda.elector.dynamodb.tableName=edda-leader
edda.elector.dynamodb.readCapacity=5
edda.elector.dynamodb.writeCapacity=1

edda.datastore.current.class=com.netflix.edda.aws.S3CurrentDatastore
edda.s3current.account=inf
edda.s3current.table=edda-s3current-collection-index-inf
edda.s3current.readCapacity=10
edda.s3current.writeCapacity=1
edda.s3current.locationPrefix=edda/s3current/inf
~


2019-09-13 18:22:48.236 - ERROR - [DynamoDB.scala:89] [initState]  Error getting item from dynamodb: name
java.lang.NullPointerException
at com.amazonaws.util.AwsHostNameUtils.parseRegionName(AwsHostNameUtils.java:24)
at com.amazonaws.auth.AWS4Signer.extractRegionName(AWS4Signer.java:147)
at com.amazonaws.auth.AWS4Signer.getScope(AWS4Signer.java:267)
at com.amazonaws.auth.AWS4Signer.sign(AWS4Signer.java:80)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:274)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:199)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:1245)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.getItem(AmazonDynamoDBClient.java:652)
at com.netflix.edda.aws.DynamoDB$.get(DynamoDB.scala:77)
at com.netflix.edda.aws.S3CurrentDatastore.loadImpl(S3CurrentDatastore.scala:110)
at com.netflix.edda.aws.S3CurrentDatastore.load(S3CurrentDatastore.scala:94)
at com.netflix.edda.Collection.load(Collection.scala:287)
at com.netflix.edda.Collection.doLoad(Collection.scala:488)
at com.netflix.edda.Collection.initState(Collection.scala:405)
at com.netflix.edda.CollectionProcessor.initState(CollectionProcessor.scala:56)
at com.netflix.edda.StateMachine$$anonfun$act$1$$anonfun$2.apply(StateMachine.scala:180)
at com.netflix.edda.StateMachine$$anonfun$act$1$$anonfun$2.apply(StateMachine.scala:180)
at com.netflix.edda.Utils$RETRY$.apply(Utils.scala:112)
at com.netflix.edda.StateMachine$$anonfun$act$1.applyOrElse(StateMachine.scala:179)
at scala.runtime.AbstractPartialFunction$mcVL$sp.apply$mcVL$sp(AbstractPartialFunction.scala:33)
at scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:33)
at scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:25)
at scala.actors.ReactorTask.run(ReactorTask.scala:31)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

THanks,
Kaushal. 
Reply all
Reply to author
Forward
0 new messages