22
33To use aws-api in your application, you depend on
44` com.cognitect.aws/api ` , ` com.cognitect.aws/endpoints ` and
5- ` com.cognitect.aws/<service> ` , e.g. ` com.cognitect.aws/s3 ` . ` api ` , ` endpoints ` ,
6- and ` <service> `
7- all have different release schedules and version semantics.
5+ ` com.cognitect.aws/<service> ` , e.g. ` com.cognitect.aws/s3 ` .
86
97## Version semantics
108
9+ The artifacts fall into one of three categories:
10+
11+ * ` com.cognitect.aws/api `
12+ * ` com.cognitect.aws/endpoints `
13+ * each ` <service> ` artifact (of which there are hundreds)
14+
15+ Each of these three categories of artifacts are capable of being released and versioned independently.
16+
1117## com.cognitect.aws/api
1218
1319 0.8.[rev]
1420
1521` rev ` is the revision in the git repository.
1622
17- ## com.cognitect.aws/endpoints
23+ ## endpoints and services
24+
25+ [major-rev].[source.repo.tag]
26+
27+ Starting with release ` 871.2.29.35 ` , ` endpoints ` and service artifact versions are being prefixed
28+ with the same major version prefix, currently ` 871 ` . The ` 2.29.35 ` is a tag in the AWS SDK source
29+ repository, currently [ AWS SDK Java v2] ( https://github.com/aws/aws-sdk-java-v2 ) , from which both
30+ ` endpoints ` and service artifacts are generated.
31+
32+ These artifacts are released independently and sporadically, only as needed - a given artifact will
33+ only see a new release if the current tag of the AWS SDK source repository contains changes for that
34+ artifact, or if a new service descriptor is discovered which has not yet been released.
35+
36+ Prior to release ` 871.2.29.35 ` , ` endpoints ` and services had different major version prefixes. This
37+ is because they were generated from different, older AWS SDK repositories: [ aws-sdk-java
38+ v1] ( https://github.com/aws/aws-sdk-java ) and [ aws-sdk-js] ( https://github.com/aws/aws-sdk-js ) ,
39+ respectively. With the deprecation of both of those repositories, it was necessary to migrate to the
40+ current Java v2 repository and to release new versions of all artifacts, which was release
41+ ` 871.2.29.35 ` .
42+
43+ The following two sections provides more detail and historical context about ` endpoints ` and service
44+ artifacts, respectively.
45+
46+ ### com.cognitect.aws/endpoints
1847
1948 [source-rev].[source.repo.tag]
2049
@@ -37,20 +66,23 @@ we'll add a row to this table.
3766
3867 [generator-rev].[source.repo.tag]
3968
40- ` generator -rev` indicates the revision of the code we use to
41- generate all the services and ` source.repo.tag ` is the tag in the aws
69+ ` source -rev` indicates which aws-sdk (or other resource) we are
70+ generating from and ` source.repo.tag ` is the tag in the aws
4271repository from which we are generating service libraries. For example,
4372` s3-631.2.347.0 ` is sourced from [ aws-sdk-js] ( https://github.com/aws/aws-sdk-js ) ,
4473per the table below, at the ` 2.347.0 ` tag.
4574
46- | generator -rev | source repository | example source tag | example service version |
47- | --------------- | -------------------| --------------------| -------------------------|
48- | >= 871 | aws-sdk-java-v2 | 2.29.35 | 871.2.29.35 |
49- | >= 631 | aws-sdk-js | v2.347.0 | 631.2.347.0 |
75+ | source -rev | source repository | example source tag | example service version |
76+ | ------------| -------------------| --------------------| -------------------------|
77+ | >= 871 | aws-sdk-java-v2 | 2.29.35 | 871.2.29.35 |
78+ | >= 631 | aws-sdk-js | v2.347.0 | 631.2.347.0 |
5079
5180If we start to source services from a different repository,
5281we'll add a row to this table.
5382
83+ Prior to source revision ` 871 ` , the source revision was linked to the version of the code used to
84+ generate the service artifacts. Beginning with revision ` 871 ` that is no longer true.
85+
5486## Release schedules
5587
5688### com.cognitect.aws/api
@@ -64,24 +96,42 @@ their release schedules.
6496### com.cognitect.aws/endpoints
6597
6698This is generated from source data in an aws github repository, so we
67- periodically check to see if there are any new release tags in the
68- source repo. When there are, we diff the endpoint resource at the
69- first new tag with the last released tag. If there is a diff, we
70- cut a release at that new tag, and then do the same thing, comparing
71- the next new tag to the last released tag, until we run out of new
72- tags.
73-
74- For example, if the last version we released is ` 1.1.11.444 ` , we look
75- to see if there are any tags newer than ` 1.11.444 ` in the source
76- repo. If we find e.g. ` 1.11.445 ` , ` 1.11.446 ` , and ` 1.11.447 ` , we'll
77- diff ` 1.11.445 ` against ` 1.11.444 ` . If the endpoints resource changed,
78- we'll cut a ` 1.1.11.445 ` release and then continue, comparing
79- ` 1.1.446 ` to ` 1.1.445 ` , and so on.
80-
81- If there is no difference, we move to the next tag (` 1.1.446 ` ) and
82- compare it to our last-released basis (` 1.1.444 ` ), and so on.
99+ periodically check to see if there are any changes to the endpoints resource at
100+ the repository's latest tag, since the last released tag. If there is a diff, we
101+ cut a release at that new tag.
102+
103+ For example, if the last version we released is ` 871.1.11.444 ` , and the
104+ repository's most recent tag is ` 1.11.678 ` , we'll diff ` 1.11.445 ` against
105+ ` 1.11.678 ` . If the endpoints resource changed, we'll cut a ` 871.1.11.678 `
106+ release.
83107
84108### com.cognitect.aws/< ; service>
85109
86110This works just like ` endpoints ` , above, except that we do the same
87111thing for every aws service available in the source repository.
112+
113+
114+ ## Service API Versions
115+
116+ The api descriptors include the AWS ` api-version ` in their ` :metadata ` . If, for
117+ any given service, the AWS SDK repository contains descriptors for more than one
118+ api version, only the most recent api version will have an artifact generated
119+ and released.
120+
121+ As of this writing, the [ AWS SDK Java
122+ v2] ( https://github.com/aws/aws-sdk-java-v2 ) repository has no such examples of
123+ this. But if and when it does, this policy will continue to hold true.
124+
125+ For example: historically, services were generated from the
126+ [ aws-sdk-js] ( https://github.com/aws/aws-sdk-js ) repository, which contains at
127+ least one instance of this situation. In that repository you'll find both of
128+ the following files:
129+
130+ dynamodb-2011-12-05.normal.json
131+ dynamodb-2012-08-10.normal.json
132+
133+ In that case, whenever we released ` com.cognitect.aws/dynamodb ` , we look for the
134+ descriptor with the most recent API version. If ` aws-sdk-js-v2.351.0 ` contains
135+ an update to ` dynamodb-2012-08-10.normal.json ` , or a new dynamodb descriptor
136+ with a more recent api-version, we'd make a release whose version number
137+ includes the ` 2.351.0 ` from the version of aws-sdk-js.
0 commit comments