Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Matt Benson
    @mbenson
    but it's the assertion in Ec2MetadataRegionProvider#getRegion()
    Agim Emruli
    @aemruli
    that is strange, we have an @ConditionalOnAwsCloudEnvironment on the respective auto configuration
    Matt Benson
    @mbenson
    but the condition is only applied in one or two places
    Agim Emruli
    @aemruli
    yeah, we do this only for services which really need to run on the AWS EC2 instance (instance data and caching)
    Matt Benson
    @mbenson
    I'm finding that the ContextResourceLoaderAutoConfiguration and ContextRegionProviderAutoConfiguration both seem to be triggering AmazonWebserviceClientFactoryBean#createInstance() which in turn calls #getRegion() from the available RegionProvider.
    If that RegionProvider is Ec2MetadataRegionProvider, boom
    Agim Emruli
    @aemruli
    okay I see
    we have to re-think if it is a good idea to have the EC2 region provider as a default
    I think in your case you have to configure the region if you run locally
    and let that auto-detect in case of an EC2 deployment
    org.springframework.cloud.aws.autoconfigure.context.ContextRegionProviderAutoConfiguration.Registrar#registerBeanDefinitions have to be re-visisted
    cloud.aws.region.static
    Matt Benson
    @mbenson
    I was hoping to avoid, but I agree that from what I have learned so far that should work for now.
    I do think it is nice to use the EC2 region provider when running on AWS
    Agim Emruli
    @aemruli
    I think we can replace this.environment.getProperty("cloud.aws.region.auto", Boolean.class, true) with this.environment.getProperty("cloud.aws.region.auto", Boolean.class, AwsCloudEnvironmentCheckUtils.isRunningOnCloudEnvironment())
    I think that is the only point which needs adjustment
    Matt Benson
    @mbenson
    that's pretty surgical, but it looks like that will result in an exception requiring the statically configured region outside AWS.
    Does a region even make sense outside AWS/EC2?
    Agim Emruli
    @aemruli
    yeah you will need a static region outside aws
    we can not guess it, and we don't rely on the default region
    but I think you can have a separate application.properties or any other way to pass the region only on your local deployment
    Matt Benson
    @mbenson
    but how is the region used outside AWS? Please forgive my newness to the platform.
    Agim Emruli
    @aemruli
    well except for a few exception every service is reachable outside AWS through an service endpoint
    for example rds.ap-southeast-1.amazonaws.com
    Matt Benson
    @mbenson
    sure...
    Agim Emruli
    @aemruli
    so you can run your application on your laptop and use the AWS services
    you can even have stack in cloud formation and use those services
    the only thing here is that we need to know the region
    so that the client can make the right call
    the exception is onyl elasticache
    that service is only reachable inside the same security group or vpc
    therefore its quite common to run your app also outside AWS but still consume AWS services
    Matt Benson
    @mbenson
    okay; I won't pretend to fully understand it, but if there is some code that specifically uses the region knowledge to contact other services then that is good enough
    Agim Emruli
    @aemruli
    yes
    Matt Benson
    @mbenson
    I suppose that's why it's pulled from what appear to be various instances of the AmazonWebserviceClientFactoryBean then
    Agim Emruli
    @aemruli
    yeah every service client have a region, and the factory bean manages that
    Matt Benson
    @mbenson
    thanks for making it clear. In this case I have an app that I'm running on AWS but this particular one isn't actually consuming AWS services... I just want the AmazonEc2InstanceDataPropertySource autoconfigured. But I guess I'll just have to deal with it. :P
    Matt Benson
    @mbenson
    argh; I really wanted to use that with YAML subdocument profile negation but that won't be released until Spring Boot 1.4.0 :(
    Ryan Gardner
    @ryangardner
    FYI I just submitted a pull request to let people use the DefaultAWSCredentialsProvider when running with the spring boot starter - spring-cloud/spring-cloud-aws#170
    Ryan Gardner
    @ryangardner
    The docs currently state that the DefaultAWSCredentialsProvider is used for services - which seems only be true if you aren’t using the spring boot starters. The ContextCredentialsAutoConfiguration always creates a custom credentials provider chain that gets used for the amazon service calls - over time things have been added (like profile support) to that chain, but it’s still doesn’t support all the options of the default one
    Ryan Gardner
    @ryangardner
    has anyone here had a chance to look at spring-cloud/spring-cloud-aws#170 yet?
    Ryan Gardner
    @ryangardner
    This message was deleted
    Felipe Adorno
    @FelipeAdorno
    Hi guys I need use spring-cloud-stream-sink-s3 but I have a lot of problems, I have need sink local file to s3 bucket any help?
    Danilo Gomes
    @danilocgomes_twitter
    Hey, guys, how are you? Can I ask you something about spring cloud aws messaging on this room?
    Am I in the right place? :D
    Danilo Gomes
    @danilocgomes_twitter

    I want know if I can control the number of consumers when using Spring Cloud AWS Messaging and @MessageMapping annotation.
    If I understood, I should create my own AsyncTaskExecutor. I really don't know if this is the right way.

    Let me know if you could help me, guys. Thanks in advance.

    Kyle Anderson
    @andersonkyle
    @danilocgomes_twitter I've got a similar question. The default polling settings for SQS by way of the @SqsListener annotation appear to be extremely aggressive in their frequency. SQS charges per request and the Spring Cloud AWS defaults seem to be around 16 requests per second. I would like to use long pollling and adjust the interval. If anyone can point me to where I can set that I'd appreciate it. Obviously this can easily be done by using the Amazon SDK directly but I'm hoping there's a way to do this within Spring.
    Danilo Gomes
    @danilocgomes_twitter

    @kanderson450 Thanks for your attention. Actually I have the same need but in order to increase or decrease rps according to queue (it'll be decided by profile, each one with its configurations). I would like to hardly increase the number of consumers to deal with 150 rps.

    If I'm right, I should pass other instance of AsyncTaskExecutor to SimpleMessageListenerContainer
    https://github.com/spring-cloud/spring-cloud-aws/blob/master/spring-cloud-aws-messaging/src/main/java/org/springframework/cloud/aws/messaging/listener/SimpleMessageListenerContainer.java

    But, is this the right way?

    Spring Cloud AWS Buildmaster
    @spring-cloud-aws-buildmaster
    You should use the wait-time-out property on the listener container <aws-messaging:annotation-driven-queue-listener wait-time-out="60" />
    This defines the time the poller has to wait when no messages are in the queue (long polling), this is actually a feature provided by the AmazonSQS client.