-
Notifications
You must be signed in to change notification settings - Fork 3k
Amazon service extensions #4968
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
d9895e8 to
adda9a3
Compare
adda9a3 to
9b177c6
Compare
|
I cancelled the build, we are scarce on CI resources right now. |
9b177c6 to
b4476f2
Compare
|
Oh man, this is a large one :). It looks very interesting, I need to take more time to think about it and review it. |
|
Yes I know it's quite large :) No worries, we are not in the rush. |
b4476f2 to
ade329a
Compare
ade329a to
904fa24
Compare
|
@gsmet - Any thoughts on this PR ? |
|
I reviewed the Flyway PR yesterday, this one is next in line once I'm done with releasing 1.0.1.Final so you should have some feedback soon. Sorry, the 1.0 work got me very late on reviewing large PRs. |
|
@marcinczeczko sorry about the delay. I'm starting to have a look just now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, in general, that's a big +1. I really like what you have here. Thanks for your work (and for your patience...).
It needs a rebase and some changes to the extension descriptor. The rest is mostly some small comments.
Also I'm not entirely sure about how your architected the configuration. I think we need to discuss it and it would probably be better to do it live if you can.
bom/runtime/pom.xml
Outdated
| <version>${project.version}</version> | ||
| </dependency> | ||
|
|
||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Micro comment: I don't think we need these artificial new lines.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed
ci-templates/stages.yml
Outdated
| - amazon-lambda-http | ||
| name: amazon | ||
| dynamodb: true | ||
| amazonStack: true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe let's call it amazonServices (or even better amazon-services but I'm not sure dashes are allowed).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only underscores are supported but doesn't looks good, so I kept camelCase with amazonServices as value
| * Blocking access using URL Connection HTTP client (by default) or the Apache HTTP Client | ||
| * https://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/basics-async.html[Asynchronous programming] based on JDK's `CompletableFuture` objects and the Netty HTTP client. | ||
|
|
||
| In this guide, we see how you can get your REST services to use the DynamoDB locally and on AWS. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't this whole introduction be about S3? :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I forgot to mention, that S3 guide I'm about to work on later :) it's just a stub atm. Will polish it later this week.
| </dependency> | ||
| <dependency> | ||
| <groupId>io.quarkus</groupId> | ||
| <artifactId>quarkus-amazon-common</artifactId> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should come with the above, no?
| quarkus.amazon.aws.dynamodb.region=us-east-1 | ||
| quarkus.amazon.aws.dynamodb.credentials.type=static | ||
| quarkus.amazon.aws.dynamodb.credentials.static-provider.access-key-id=test-key | ||
| quarkus.amazon.aws.dynamodb.credentials.static-provider.secret-access-key=test-secret |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we need to have a discussion about this config stuff. Would you have a moment for a call so that we can discuss it live?
| "dynamo", | ||
| "aws", | ||
| "amazon" | ||
| ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here about the format being YAML now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
| "s3", | ||
| "aws", | ||
| "amazon" | ||
| ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here about the format.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
|
@marcinczeczko happy new year! Any chance we could restart the progress on this? It looked very promising! |
|
@gsmet Happy new year too !! I just came back from long Christmas break :) I'm gonna to restart that work this week. I think we can talk about in live as you suggested - let's catchup on zulip to get up to speed. |
182d5ce to
952edd5
Compare
|
Any progress on this one? It's super fiddly and time consuming trying to get basic AWS Java SDK v2 (or v1) integrations working. I have SNS working using the sync client UrlConnectionHttpClient yet couldn't get it working with Apache (SSL issues). Required reflect-config.json for the UrlConnectionHttpClient: |
660981f to
6c266a2
Compare
|
Is there any plans to move this forward @marcinczeczko ? @gsmet @oscerd @oztimpower I must admit that I worry about the strategy being employed here, which seems to be taken from the initial dynamodb extension. Specifically, all the work being done to actually initiate clients and proxy the AWS SDK configuration model. It is seems unnecessarily complex and hard to maintain, and perhaps why this PR is stalled after months of works and 120 files edited. As a user deploy service to production with S3, Dynamo, SNS and SQS with quarkus / graal native / aws lambda, all I want quarkus to do is to handle the ugly internals of the build system (e.g. proxy generation, reflection config, resources config, maven dependency management) such that when I create AWS SDK clients in my CDI configuration (which is easy to do), they just work. On occasion it might be necessary to do bytecode replacement to ensure effective integration with quarkus, as well. I don't need the beans created for me. You can see this alternative model in https://github.com/quarkusio/quarkus/tree/master/extensions/amazon-lambda-xray we worked on with @patriot1burke . I have the above approach working in the applications I'm deploying now to production, and if there was interest in trying this new strategy, then we can discuss how best to build out these features together (along with a guide). I will probably need support from the maintainers give my existing job responsibilities. That said, if maintainers are set on the existing strategy, then I don't want to waste time implementing an alternative. |
Hello, personally I'm working on supporting the AWS SDK v2 in the https://github.com/apache/camel-quarkus and I'm still trying to find a common way between the multiple components. I will post my findings here whenever I have some. |
|
@oscerd Interesting. I have some thoughts on this from my work and also a lot of experience with camel (I use to work with Red Hat consulting). I'll send you an email - perhaps we can discuss this over a video call quickly to coordinate? |
|
Sure thing! |
|
Hi @oscard, yes I planned to resume that work. I had to stop for a while because of client work. I think we can discuss it in a wider group. |
|
@marcinczeczko sent email to your gmail to coordinate a discussion. Looking forward to discussing with you soon. |
3b51dee to
e242ce3
Compare
|
@machi1990 - thanks, checked it and works perfect. |
b999868 to
65cb687
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@marcinczeczko I added some minor comments that needs fixing, could you take care of them and squash everything into a single commit?
There are a few things we need to discuss as I have a few questions but I suggest that we merge this one first and then we can have further discussions/improvements later on.
| <artifactId>quarkus-amazon-dynamodb</artifactId> | ||
| <name>Quarkus - Amazon DynamoDB - Runtime</name> | ||
| <description>A client for the Amazon DynamoDB datastore</description> | ||
| <name>Quarkus - Amazon Services - DynamoDB - Runtime</name> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The description of the runtime modules is used by code.quarkus.io so we need one.
Better if it starts with a verb e.g. something like "Connect to...". Same for all the user facing extensions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
extensions/amazon-services/dynamodb/runtime/src/main/resources/META-INF/quarkus-extension.yaml
Outdated
Show resolved
Hide resolved
|
Also, I saw we break the existing configuration properties. I suppose you find it better this way? We can do that but we need to document it properly in the migration guide. We can do that later but prior to the release! |
Do you mean configurations that had |
dda8935 to
19ec2ce
Compare
|
I dunno. The SDK ones were purely technical. The AWS ones were more like "let's configure the AWS part" so it kinda makes sense to me. If there's no good reason, I would say we could keep them as is and avoid breaking user configuration? |
- Refactored DynamoDB extension - Added S3 client extension - Bump up AWSSDK
Agree & done |
19ec2ce to
f1bfa9c
Compare
|
OK, let's wait for CI and merge :). Thanks @marcinczeczko for this great work and your patience and tenacity! |
|
Thanks. :)
So, next in a row are SQS and SNS extensions, so your patience will be
required too.
śr., 6 maj 2020, 17:11 użytkownik Guillaume Smet <[email protected]>
napisał:
… OK, let's wait for CI and merge :).
Thanks @marcinczeczko <https://github.com/marcinczeczko> for this great
work and your patience and tenacity!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4968 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABAF4G3MQBHH45KJPIGP2EDRQF4YRANCNFSM4JGFJ2YQ>
.
|
|
@marcinczeczko Thanks for making this happen! |
|
Thanks @marcinczeczko |
|
Cool, looking forward to it. Now that the basics are covered, it should be easier. |
|
@marcinczeczko thanks for the effort! Any chance we can get SES (simple email service) |
|
@hrstoyanov - thanks :) Actually I just opened PR #9413 with SES (and KMS) |
I'd like to introduce a broader integration with AWS SDK v2. It consists of:
More clients (SNS, SQS, etc.) to be added if the concept in this PR will be finalised and merged