From 3a13be7e944069a6cee4d3ee4a30ae79d9a2e16c Mon Sep 17 00:00:00 2001 From: Andrew Shore Date: Mon, 29 Aug 2016 07:47:40 -0700 Subject: [PATCH 001/225] Minor text fixes --- doc_source/creating-clients.rst | 12 ++++++------ doc_source/credentials.rst | 2 +- doc_source/java-dg-region-selection.rst | 5 +++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/doc_source/creating-clients.rst b/doc_source/creating-clients.rst index 77c5a6e..66ce5c5 100644 --- a/doc_source/creating-clients.rst +++ b/doc_source/creating-clients.rst @@ -62,7 +62,7 @@ code uses the builder as a factory for client instances. } The builder also exposes fluent setters for :java-api:`ClientConfiguration `', -:java-api:`RequestMetricCollector `, and custom +:java-api:`RequestMetricCollector `, and a custom list of :java-api:`RequestHandler2 `. Here's a complete example that overrides all configurable properties: @@ -107,10 +107,10 @@ Creating an async client with a custom executor: Default Client ============== Both the sync and async client builders have another factory method called `defaultClient`. This -will create a service client with the default configuration and with credentials and region -obtained from the environment. If either credentials or region cannot be determined from the environment +will create a service client with the default configuration and the default provider chains for loading +credentials and region. If either credentials or region cannot be determined from the environment the application is running in, the call to `defaultClient` will fail. See :doc:`credentials` and -:doc:`java-dg-region-selection` for more information on how credentials are region are +:doc:`java-dg-region-selection` for more information on how credentials and region are determined. Creating a default service client: @@ -122,8 +122,8 @@ Creating a default service client: Client Lifecycle ================ Service clients in the SDK are thread safe and it's recommended to treat them as long lived objects -for the best performance. -Each client has it's own connection pool resource that's shutdown when the client is garbage collected. +for performance reasons. +Each client has it's own connection pool resource that is shutdown when the client is garbage collected. To explicitly shutdown a client you can call the `shutdown` method. After calling shutdown, all client resources will be released and the client will be unusable. diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 3bf5e3b..b9f08de 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -155,7 +155,7 @@ Command Line Interface ` in the |cli-ug|. Loading Credentials ------------------- -Once credentials have been set, you can load them using the |sdk-java| default credential provider +Once credentials have been set, you can load them using the default credential provider chain. :emphasis:`To load credentials using the default credential provider chain` diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index 861533e..e2a5982 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -100,13 +100,14 @@ If you don't explicitly set a region via the withRegion methods, then the SDK wi region provider chain to try and determine the region to use. The region lookup process is as follows + #. Any explicit region set via the withRegion or setRegion on the builder itself takes precedence over anything else. #. First, the AWS_REGION environment variable is checked. If it's set that region will be used to configure the client. If not we move on. * Note that this environment variable is set by the AWS Lambda container - #. Next the SDK will look at the AWS shared config file (usually located at ~/.aws/config). If the `region` property the SDK will use it. + #. Next the SDK will look at the AWS shared config file (usually located at ~/.aws/config). If the `region` property is present the SDK will use it. * The AWS_CONFIG_FILE environment variable can be used to customize the location of the shared config file. * The AWS_PROFILE environment variable or the aws.profile system property can be used to customize which profile is loaded by the SDK. #. Finally, if the SDK still hasn't found a region to use it will attempt to call the EC2 instance metadata service to determine the region of the current running EC2 instance. - * If the application is not running on EC2 then the region lookup will fail and an exception will be thrown. + #. If the SDK still hasn't found a region at this point then client creation will fail with an exception. A common approach to developing AWS applications is to use the shared config file to set the region for local development and rely on the default region provider chain to determine the region when running on AWS From 645d2872be89af5e371b9e088aa03988cede4303 Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Wed, 28 Sep 2016 14:02:45 -0700 Subject: [PATCH 002/225] fixes for a couple of files --- doc_source/index.rst | 7 +++++++ doc_source/swf-hello.rst | 9 ++++----- doc_source/welcome.rst | 6 +++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/doc_source/index.rst b/doc_source/index.rst index 4bcfc3c..7269d43 100644 --- a/doc_source/index.rst +++ b/doc_source/index.rst @@ -12,6 +12,10 @@ |sdk-java| ########## +.. meta:: + :description: Developer Guide for the AWS SDK for Java + :keywords: java, sdk, aws + .. toctree:: :maxdepth: 1 :titlesonly: @@ -22,3 +26,6 @@ prog-services advanced document-history + +.. include:: about-aws.txt + diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index 05c0f14..547d591 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -318,8 +318,8 @@ activity and returns a success/failure response back to the workflow. We'll implement a simple activity worker that drives a single activity. -#. Open your text editor and create the file :filename:`ActivityWorker.java`, adding a package declaration - and imports according to the :ref:`common steps `. +#. Open your text editor and create the file :filename:`ActivityWorker.java`, adding a package + declaration and imports according to the :ref:`common steps `. #. Add the :classname:`ActivityWorker` class to the file, and give it a data member to hold a SWF client that we'll use to interact with |SWF|: @@ -519,8 +519,8 @@ Implement the workflow starter Finally, we'll write some code to start the workflow execution. -#. Open your text editor and create the file :filename:`WorkflowStarter.java`, adding a package declaration - and imports according to the :ref:`common steps `. +#. Open your text editor and create the file :filename:`WorkflowStarter.java`, adding a package + declaration and imports according to the :ref:`common steps `. #. Add the :classname:`WorkflowStarter` class: @@ -664,7 +664,6 @@ You can browse the :github:`complete source ` for this example on Github in the *aws-java-developer-guide* repository. - For more information ==================== diff --git a/doc_source/welcome.rst b/doc_source/welcome.rst index 1dcd21b..82265d6 100644 --- a/doc_source/welcome.rst +++ b/doc_source/welcome.rst @@ -17,9 +17,9 @@ AWS Java Developer Guide ######################## The |sdk-java|_ provides a Java API for |AWSlong|. Using the SDK, you can easily build Java -applications that work with |S3|, |EC2|, |SDB|, and more. We regularly add support for new services to the |sdk-java|. For a list of the supported services and their API versions that are -included with each release of the SDK, view the `release notes`_ for the version that you're working -with. +applications that work with |S3|, |EC2|, |SDB|, and more. We regularly add support for new services +to the |sdk-java|. For a list of the supported services and their API versions that are included +with each release of the SDK, view the `release notes`_ for the version that you're working with. .. contents:: :local: From fcc889bafedfff3a9c778e1262d0e2cdb9f06bf7 Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Wed, 28 Sep 2016 16:16:23 -0700 Subject: [PATCH 003/225] improve guide layout --- doc_source/advanced.rst | 27 --------------------------- doc_source/basics.rst | 10 +++++++--- doc_source/document-history.rst | 12 ++++++++---- doc_source/index.rst | 1 - doc_source/prog-services.rst | 8 ++++---- 5 files changed, 19 insertions(+), 39 deletions(-) delete mode 100644 doc_source/advanced.rst diff --git a/doc_source/advanced.rst b/doc_source/advanced.rst deleted file mode 100644 index eb2406a..0000000 --- a/doc_source/advanced.rst +++ /dev/null @@ -1,27 +0,0 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 - International License (the "License"). You may not use this file except in compliance with the - License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. - - This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - either express or implied. See the License for the specific language governing permissions and - limitations under the License. - -############### -Advanced Topics -############### - -The topics in this section extend the content in :doc:`basics`, presenting information about -advanced programming techniques and comprehensive examples of using the |sdk-java|. - -.. tip:: See :ref:`additional-resources` for more examples and additional resources available for - |sdk-java| developers! - -.. toctree:: - :maxdepth: 1 - - section-client-configuration - java-dg-access-control - java-dg-jvm-ttl - diff --git a/doc_source/basics.rst b/doc_source/basics.rst index 4431659..3887cde 100644 --- a/doc_source/basics.rst +++ b/doc_source/basics.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -################# -|sdk-java| Basics -################# +############# +Using the SDK +############# This section provides important general information about programming with the |sdk-java|. Information in this section applies to all services that you might be using with the |sdk-java|. @@ -27,3 +27,7 @@ For information that is specific to a particular service (EC2, SWF, etc.), see t java-dg-exceptions basics-async java-dg-logging + section-client-configuration + java-dg-access-control + java-dg-jvm-ttl + diff --git a/doc_source/document-history.rst b/doc_source/document-history.rst index d21d1a8..677495c 100644 --- a/doc_source/document-history.rst +++ b/doc_source/document-history.rst @@ -16,9 +16,13 @@ This topic describes important changes to the |sdk-java-dg| over the course of i **Last documentation update:** |today| +Sep 26, 2016 + The topics in the **Advanced** section have been moved into :doc:`basics`, since they really are + central to using the SDK. + Aug 25, 2016 - A new topic, :doc:`creating-clients`, has been added to the :doc:`basics` section, which - demonstrates how to use *client builders* to simplify the creation of AWS service clients. + A new topic, :doc:`creating-clients`, has been added to :doc:`basics`, which demonstrates how to + use *client builders* to simplify the creation of AWS service clients. The :doc:`prog-services` section has been updated with :doc:`new examples for S3 ` which are backed by a `repository on GitHub `_ that contains the complete @@ -56,8 +60,8 @@ Feb 23, 2016 `. Dec 28, 2015 - :doc:`java-dg-jvm-ttl` has been moved from :doc:`advanced` into the :doc:`basics` section, and - has been rewritten for clarity. + :doc:`java-dg-jvm-ttl` has been moved from **Advanced** into :doc:`basics`, and has been + rewritten for clarity. :doc:`setup-project-maven` has been updated with information about how to include the SDK's bill of materials (BOM) in your project. diff --git a/doc_source/index.rst b/doc_source/index.rst index 7269d43..f7f470c 100644 --- a/doc_source/index.rst +++ b/doc_source/index.rst @@ -24,7 +24,6 @@ getting-started basics prog-services - advanced document-history .. include:: about-aws.txt diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index ade0620..3554f4a 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -8,11 +8,11 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -###################### -Tutorials and Examples -###################### +#################### +Programming Examples +#################### -This section provides tutorials and examples of using the |sdk-java| with AWS service clients. +This section provides tutorials and examples of using the |sdk-java| to program AWS services. .. tip:: See :ref:`additional-resources` for more examples and additional resources available for |sdk-java| developers! From b95f4ae7801f70f8a325cef3032c2c6c7fcc4a8b Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Thu, 6 Oct 2016 15:10:43 -0700 Subject: [PATCH 004/225] updates to S3 buckets topic --- doc_source/examples/s3/buckets.rst | 50 ++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/doc_source/examples/s3/buckets.rst b/doc_source/examples/s3/buckets.rst index 3c7097b..6082d0d 100644 --- a/doc_source/examples/s3/buckets.rst +++ b/doc_source/examples/s3/buckets.rst @@ -60,8 +60,52 @@ See the :sdk-examples-java:`complete example `. Delete a bucket =============== -Use the |s3client| client's :methodname:`deleteBucket` method. *The bucket must be empty, or an -error will result*. +Before you can delete an |S3| bucket, you must ensure that the bucket is empty first, or an error +will result. If you have a :S3-dg:`versioned bucket `, then you must also delete any +object versions associated with the bucket, also. + +Removing objects from a bucket prior to deletion +------------------------------------------------ + +To remove objects from a bucket prior to deletion, you can use the |s3client| client's +:methodname:`listObjects` method to retrieve the list of objects and :methodname:`deleteObject` to +delete each one. + +**Imports:** + +.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java + :lines: 15-17, 19-20, 23 + +**Code:** + +.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java + :lines: 52-70, 93 + :dedent: 8 + + +Removing versioned objects from a bucket prior to deletion +---------------------------------------------------------- + +Using a pattern similar to the one used when removing objects within a bucket, remove versioned +objects by using the |s3client| client's :methodname:`listVersions` method to list any versioned +objects and then :methodname:`deleteVersion` to delete each one. + +**Imports:** + +.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java + :lines: 15-18, 21-23 + +**Code:** + +.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java + :lines: 52-54, 72-89, 93 + :dedent: 8 + +Deleting an empty bucket +------------------------ + +Once you've removed the objects from a bucket (including any versioned objects), you can delete the +bucket itself, use the |s3client| client's :methodname:`deleteBucket` method. **Imports:** @@ -71,7 +115,7 @@ error will result*. **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 45-52 + :lines: 52-54, 92-93 :dedent: 8 See the :sdk-examples-java:`complete example `. From 7438bd9fe9f54e356207b61653821170c08eb9e9 Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Thu, 6 Oct 2016 15:18:01 -0700 Subject: [PATCH 005/225] update some line #s --- doc_source/examples/s3/buckets.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc_source/examples/s3/buckets.rst b/doc_source/examples/s3/buckets.rst index 6082d0d..75cd76b 100644 --- a/doc_source/examples/s3/buckets.rst +++ b/doc_source/examples/s3/buckets.rst @@ -79,7 +79,7 @@ delete each one. **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 52-70, 93 + :lines: 52-70, 93-97 :dedent: 8 @@ -98,7 +98,7 @@ objects and then :methodname:`deleteVersion` to delete each one. **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 52-54, 72-89, 93 + :lines: 52-54, 72-89, 93-97 :dedent: 8 Deleting an empty bucket @@ -115,7 +115,7 @@ bucket itself, use the |s3client| client's :methodname:`deleteBucket` method. **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 52-54, 92-93 + :lines: 52-54, 92-97 :dedent: 8 See the :sdk-examples-java:`complete example `. From 842ad928d013748b2787c757e173534c84dbb0db Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Thu, 6 Oct 2016 15:31:11 -0700 Subject: [PATCH 006/225] added description and keywords metadata to s3/buckets topic --- doc_source/examples/s3/buckets.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc_source/examples/s3/buckets.rst b/doc_source/examples/s3/buckets.rst index 75cd76b..0969fa0 100644 --- a/doc_source/examples/s3/buckets.rst +++ b/doc_source/examples/s3/buckets.rst @@ -2,6 +2,11 @@ Creating, Listing and Deleting Buckets ###################################### +.. meta:: + :description: How to create, list, or delete a bucket using the AWS SDK for Java. + :keywords: Amazon S3, AWS SDK for Java, bucket, create bucket, list bucket, delete bucket, + versioned bucket + Every object (file) in |S3| must reside within a *bucket*, which represents a collection (container) of objects. Each bucket is known by a *key* (name), which must be unique. For detailed information about buckets and their configuration, see :s3-dg:`Working with Amazon S3 Buckets ` in From 15ff4bfb337bf7c296bcb1bd006caf4b3224a735 Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Fri, 7 Oct 2016 00:04:52 -0700 Subject: [PATCH 007/225] update buckets text --- doc_source/examples/s3/buckets.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc_source/examples/s3/buckets.rst b/doc_source/examples/s3/buckets.rst index 0969fa0..0b81437 100644 --- a/doc_source/examples/s3/buckets.rst +++ b/doc_source/examples/s3/buckets.rst @@ -67,7 +67,10 @@ Delete a bucket Before you can delete an |S3| bucket, you must ensure that the bucket is empty first, or an error will result. If you have a :S3-dg:`versioned bucket `, then you must also delete any -object versions associated with the bucket, also. +versioned objects associated with the bucket. + +.. note:: The :sdk-examples-java:`complete example ` includes each of these + steps in order, providing a complete solution for deleting an |S3| bucket and its contents. Removing objects from a bucket prior to deletion ------------------------------------------------ From 71c759aab4001b4f4f289d7314c50d28d75e0c63 Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Mon, 10 Oct 2016 15:14:52 -0700 Subject: [PATCH 008/225] replace deprecated role --- doc_source/credentials.rst | 2 +- doc_source/setup-project-maven.rst | 2 +- doc_source/swf-hello.rst | 26 +++++++++++++------------- doc_source/welcome.rst | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index b9f08de..1ae3236 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -52,7 +52,7 @@ class. The default credential provider chain looks for credentials in this orde ` to load these credentials. 3. **The default credential profiles file** |ndash| typically located at - :filename:`~/.aws/credentials` (this location may vary per platform), this credentials file is + :file:`~/.aws/credentials` (this location may vary per platform), this credentials file is shared by many of the AWS SDKs and by the AWS CLI. The |sdk-java| uses the :java-api:`ProfileCredentialsProvider ` to load these credentials. diff --git a/doc_source/setup-project-maven.rst b/doc_source/setup-project-maven.rst index 8a8523e..7edd065 100644 --- a/doc_source/setup-project-maven.rst +++ b/doc_source/setup-project-maven.rst @@ -62,7 +62,7 @@ Configure the SDK as a Maven dependency ======================================= To use the |sdk-java| in your project, you'll need to declare it as a dependency in your project's -:filename:`pom.xml` file. Beginning with version 1.9.0, you can import :ref:`individual components +:file:`pom.xml` file. Beginning with version 1.9.0, you can import :ref:`individual components ` or the :ref:`entire SDK `. .. _configuring-maven-individual-components: diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index 547d591..0b57b52 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -134,11 +134,11 @@ Create a SWF project └── test └── ... - You can ignore or delete the :filename:`test` directory and all it contains, we won't be using it - for this tutorial. You can also delete :filename:`App.java`, since we'll be replacing it with + You can ignore or delete the :file:`test` directory and all it contains, we won't be using it + for this tutorial. You can also delete :file:`App.java`, since we'll be replacing it with new classes. -#. Edit the project's :filename:`pom.xml` file and add the **aws-java-sdk-simpleworkflow** module to +#. Edit the project's :file:`pom.xml` file and add the **aws-java-sdk-simpleworkflow** module to it by adding the following section within the :code-xml:`` block. .. literalinclude:: snippets/helloswf/pom.xml @@ -147,7 +147,7 @@ Create a SWF project :dedent: 4 #. *Make sure that Maven builds your project with JDK 1.7+ support*. Add the following to your - project (either before or after the :code-xml:`` block) in :filename:`pom.xml`: + project (either before or after the :code-xml:`` block) in :file:`pom.xml`: .. literalinclude:: snippets/helloswf/pom.xml :language: xml @@ -181,7 +181,7 @@ Common steps for all source files All of the files that you create to house your Java classes will have a few things in common. In the interest of time, these steps *will be implied every time you add a new file to the project*: -#. Create the file in the in the project's :filename:`src/main/java/example/swf/hello/` directory. +#. Create the file in the in the project's :file:`src/main/java/example/swf/hello/` directory. #. Add a ``package`` declaration to the beginning of each file to declare its namespace. The example project uses: @@ -203,11 +203,11 @@ interest of time, these steps *will be implied every time you add a new file to Register a domain, workflow and activity types ---------------------------------------------- -We'll begin by creating a new executeable class, :filename:`HelloTypes.java`. This file will contain shared +We'll begin by creating a new executeable class, :file:`HelloTypes.java`. This file will contain shared data that different parts of your workflow will need to know about, such as the name and version of your activity and workflow types, the domain name and the task list name. -#. Open your text editor and create the file :filename:`HelloTypes.java`, adding a package declaration and +#. Open your text editor and create the file :file:`HelloTypes.java`, adding a package declaration and imports according to the :ref:`common steps `. #. Declare the :classname:`HelloTypes` class and provide it with values to use for your registered @@ -318,7 +318,7 @@ activity and returns a success/failure response back to the workflow. We'll implement a simple activity worker that drives a single activity. -#. Open your text editor and create the file :filename:`ActivityWorker.java`, adding a package +#. Open your text editor and create the file :file:`ActivityWorker.java`, adding a package declaration and imports according to the :ref:`common steps `. #. Add the :classname:`ActivityWorker` class to the file, and give it a data member to hold a SWF @@ -393,7 +393,7 @@ workflow type was registered with. When the workflow worker receives a task, it makes some sort of decision (usually whether to schedule a new activity or not) and takes an appropriate action (such as scheduling the activity). -#. Open your text editor and create the file :filename:`WorkflowWorker.java`, adding a package +#. Open your text editor and create the file :file:`WorkflowWorker.java`, adding a package declaration and imports according to the :ref:`common steps `. #. Add a few additional imports to the file: @@ -519,7 +519,7 @@ Implement the workflow starter Finally, we'll write some code to start the workflow execution. -#. Open your text editor and create the file :filename:`WorkflowStarter.java`, adding a package +#. Open your text editor and create the file :file:`WorkflowStarter.java`, adding a package declaration and imports according to the :ref:`common steps `. #. Add the :classname:`WorkflowStarter` class: @@ -555,13 +555,13 @@ Finally, we'll write some code to start the workflow execution. Build the example ================= -To build the example project with Maven, go to the :filename:`helloswf` directory and type: +To build the example project with Maven, go to the :file:`helloswf` directory and type: .. code-block:: sh mvn package -The resulting :filename:`helloswf-1.0.jar` will be generated in the :filename:`target` directory. +The resulting :file:`helloswf-1.0.jar` will be generated in the :file:`target` directory. Run the example @@ -582,7 +582,7 @@ Setting the Java classpath Although Maven has handled the dependencies for you, to run the example, you'll need to provide the AWS SDK library and its dependencies on your Java classpath. You can either set the :envvar:`CLASSPATH` environment variable to the location of your AWS SDK libraries and the -:filename:`third-party/lib` directory in the SDK, which includes necessary dependencies: +:file:`third-party/lib` directory in the SDK, which includes necessary dependencies: .. code-block:: sh diff --git a/doc_source/welcome.rst b/doc_source/welcome.rst index 82265d6..150126a 100644 --- a/doc_source/welcome.rst +++ b/doc_source/welcome.rst @@ -118,5 +118,5 @@ instructions to build the reference documentation. mvn javadoc:javadoc #. After building is complete, you'll find the generated HTML documentation in the - :filename:`aws-java-sdk/target/site/apidocs/` directory. + :file:`aws-java-sdk/target/site/apidocs/` directory. From 9e2d8686637fe70daf33670088e61e8bb7c2d462 Mon Sep 17 00:00:00 2001 From: Andrew Shore Date: Thu, 13 Oct 2016 07:56:49 -0700 Subject: [PATCH 009/225] Making 'Determining Region from Environment' section more clear --- doc_source/java-dg-region-selection.rst | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index e2a5982..015d7bf 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -91,11 +91,13 @@ all AWS services. Determining Region from Environment =================================== + .. important:: This section only applies to the client builders. Any clients created with the client constructor will not automatically determine region from the environment and instead will use a default endpoint (usually us-east-1). + When running on Amazon EC2 or AWS Lambda, it's often desirable to configure clients with the same region that your code is running on. This decouples your code from the environment it's running in and makes it easier to deploy your application to multiple regions for lower latency or redundancy. -To have the SDK automatically detect the region your code is running in, you can use the client builders. +To have the SDK automatically detect the region your code is running in, you must use the client builders. If you don't explicitly set a region via the withRegion methods, then the SDK will consult a default region provider chain to try and determine the region to use. @@ -112,3 +114,22 @@ The region lookup process is as follows A common approach to developing AWS applications is to use the shared config file to set the region for local development and rely on the default region provider chain to determine the region when running on AWS infrastructure. This greatly simplifies client creation and keeps your application portable. + +Examples: + +.. code-block:: java + + // Uses default credential provider and determines region + // from environment + AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() + .build(); + + // Shorthand for the above + AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); + + // This client will not determine region from environment and + // will always use us-west-2 + AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() + .withRegion(Regions.US_WEST_2) + .build(); + From 8cbaddeac15f020a3b872fa2dff3be7042f80e3d Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Thu, 13 Oct 2016 11:35:34 -0700 Subject: [PATCH 010/225] fixes to text --- doc_source/java-dg-region-selection.rst | 121 +++++++++++++----------- 1 file changed, 66 insertions(+), 55 deletions(-) diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index 015d7bf..6e0f774 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -25,17 +25,16 @@ and your users will access them. Checking for Service Availability in an AWS Region ================================================== -To see if a particular AWS service is available in a region, use the isServiceSupported method on -the region that you'd like to use. For example: - -.. code-block:: java +To see if a particular AWS service is available in a region, use the +:methodname:`isServiceSupported` method on the region that you'd like to use. For example:: Region.getRegion(Regions.US_WEST_2) - .isServiceSupported(AmazonDynamoDB.ENDPOINT_PREFIX); + .isServiceSupported(AmazonDynamoDB.ENDPOINT_PREFIX); See the :java-api:`Regions ` class documentation to see which regions can be -specified, and use the endpoint prefix of the service to query. Each service's endpoint prefix is defined in the service -interface. For example, Amazon DynamoDB's endpoint prefix is defined in :java-api:`AmazonDynamoDB `. +specified, and use the endpoint prefix of the service to query. Each service's endpoint prefix is +defined in the service interface. For example, |DDB|'s endpoint prefix is defined in +:java-api:`AmazonDynamoDB `. .. _region-selection-choose-region: @@ -49,37 +48,33 @@ see :ref:`region-selection-choose-endpoint`. To explicitly set a region, it is recommended to use the :java-api:`Regions ` enum which is a enumeration of all publicly available regions. To create a client with a region from -the enum use the following code. - -.. code-block:: java +the enum use the following code:: AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build(); -If the region you are attempting to use is not in the Regions enum, you can also set the region -with just the name of the region. For example: - -.. code-block:: java +If the region you are attempting to use is not in the :classname:`Regions` enum, you can set the +region using a *string* that represents the name of the region. For example:: AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .withRegion("us-west-2") .build(); -Note that once a client has been built with the builder it is immutable and the region cannot be -changed. If you are working with multiple AWS Regions for the same service then you should create -multiple clients. +.. note:: Once a client has been built with the builder it is *immutable* and the region *cannot be + changed*. If you are working with multiple AWS Regions for the same service then you should + create multiple clients |mdash| one per region. + .. _region-selection-choose-endpoint: Choosing a Specific Endpoint ============================ -Each AWS client can be configured to use a specific endpoint by calling the setEndpoint method. - -For example, to configure the |EC2| client to use the |euwest1-name|, use the following code: +Each AWS client can be configured to use a *specific endpoint* within a region by calling the +:methodname:`setEndpoint` method. -.. code-block:: java +For example, to configure the |EC2| client to use the |euwest1-name|, use the following code:: AmazonEC2 ec2 = new AmazonEC2(myCredentials); ec2.setEndpoint("https://ec2.eu-west-1.amazonaws.com/"); @@ -87,49 +82,65 @@ For example, to configure the |EC2| client to use the |euwest1-name|, use the fo Go to |regions-and-endpoints|_ for the current list of regions and their corresponding endpoints for all AWS services. +Automatically Determining the AWS Region from the Environment +============================================================= -Determining Region from Environment -=================================== - - .. important:: This section only applies to the client builders. Any clients created with the client constructor will not automatically determine region from the environment and instead will use a default endpoint (usually us-east-1). +.. important:: This section applies only when using a :doc:`client builder ` to + access AWS services. AWS clients created using the client constructor will not automatically + determine region from the environment and will, instead, use the *default* SDK region + (|region-sdk-default|). -When running on Amazon EC2 or AWS Lambda, it's often desirable to configure clients with the same -region that your code is running on. This decouples your code from the environment it's running in -and makes it easier to deploy your application to multiple regions for lower latency or redundancy. +When running on |EC2| or |LAM|, it's often desirable to configure clients to use the same region +that your code is running on. This decouples your code from the environment it's running in and +makes it easier to deploy your application to multiple regions for lower latency or redundancy. -To have the SDK automatically detect the region your code is running in, you must use the client builders. -If you don't explicitly set a region via the withRegion methods, then the SDK will consult a default -region provider chain to try and determine the region to use. +*You must use client builders to have the SDK automatically detect the region your code is running +in.* -The region lookup process is as follows - #. Any explicit region set via the withRegion or setRegion on the builder itself takes precedence over anything else. - #. First, the AWS_REGION environment variable is checked. If it's set that region will be used to configure the client. If not we move on. - * Note that this environment variable is set by the AWS Lambda container - #. Next the SDK will look at the AWS shared config file (usually located at ~/.aws/config). If the `region` property is present the SDK will use it. - * The AWS_CONFIG_FILE environment variable can be used to customize the location of the shared config file. - * The AWS_PROFILE environment variable or the aws.profile system property can be used to customize which profile is loaded by the SDK. - #. Finally, if the SDK still hasn't found a region to use it will attempt to call the EC2 instance metadata service to determine the region of the current running EC2 instance. - #. If the SDK still hasn't found a region at this point then client creation will fail with an exception. +To use the default credential/region provider chain to determine the region from the environment, +use the client builder's :methodname:`defaultClient` method:: -A common approach to developing AWS applications is to use the shared config file to set the region for local -development and rely on the default region provider chain to determine the region when running on AWS -infrastructure. This greatly simplifies client creation and keeps your application portable. - -Examples: + AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); -.. code-block:: java +This is the same as using :methodname:`standard` followed by :methodname:`build`:: - // Uses default credential provider and determines region - // from environment AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .build(); - // Shorthand for the above - AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); +If you don't explicitly set a region using the :methodname:`withRegion` methods, the SDK will +consult the default region provider chain to try and determine the region to use. - // This client will not determine region from environment and - // will always use us-west-2 - AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() - .withRegion(Regions.US_WEST_2) - .build(); + +Default Region Provider Chain +----------------------------- + +**The region lookup process is as follows:** + +#. Any explicit region set using :methodname:`withRegion` or :methodname:`setRegion` on the builder + itself takes precedence over anything else. + +#. The :envvar:`AWS_REGION` environment variable is checked. If it's set, then that region will be + used to configure the client. + + .. note:: This environment variable is set by the |LAM| container + +#. The SDK will look at the AWS shared config file (usually located at :file:`~/.aws/config`). If + the :paramname:`region` property is present, then the SDK will use it. + + * The :envvar:`AWS_CONFIG_FILE` environment variable can be used to customize the location of the + shared config file. + + * The :envvar:`AWS_PROFILE` environment variable or the :paramname:`aws.profile` system property + can be used to customize which profile is loaded by the SDK. + +#. The SDK will attempt to use the |EC2| instance metadata service to determine the region of the + currently running |EC2| instance. + +#. If the SDK still hasn't found a region by this point, client creation will fail with an + exception. + +A common approach when developing AWS applications is to use the *shared config file* (described in +:ref:`credentials-default`) to set the region for local development and rely on the default region +provider chain to determine the region when running on AWS infrastructure. This greatly simplifies +client creation and keeps your application portable. From 80d9d63774174b93deb6ceb4dcd7f616eb1c30a5 Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Tue, 18 Oct 2016 12:40:39 -0700 Subject: [PATCH 011/225] fixup topics after code reformatting --- doc_source/examples/s3/buckets.rst | 40 +++++++++++++++++++----------- doc_source/examples/s3/objects.rst | 26 ++++++++++++------- 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/doc_source/examples/s3/buckets.rst b/doc_source/examples/s3/buckets.rst index 0b81437..b02471a 100644 --- a/doc_source/examples/s3/buckets.rst +++ b/doc_source/examples/s3/buckets.rst @@ -4,8 +4,8 @@ Creating, Listing and Deleting Buckets .. meta:: :description: How to create, list, or delete a bucket using the AWS SDK for Java. - :keywords: Amazon S3, AWS SDK for Java, bucket, create bucket, list bucket, delete bucket, - versioned bucket + :keywords: Amazon S3, AWS SDK for Java, AWS Java SDK, bucket, create bucket, list bucket, delete + bucket, delete versioned bucket Every object (file) in |S3| must reside within a *bucket*, which represents a collection (container) of objects. Each bucket is known by a *key* (name), which must be unique. For detailed information @@ -18,6 +18,7 @@ the the |s3-dg|. :local: :depth: 1 + .. _create-bucket: Create a bucket @@ -29,16 +30,17 @@ Use the |s3client| client's :methodname:`createBucket` method. The new :java-api **Imports:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/CreateBucket.java - :lines: 15-17 + :lines: 15-18 **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/CreateBucket.java - :lines: 43-50 + :lines: 42-50 :dedent: 8 See the :sdk-examples-java:`complete example `. + .. _list-buckets: List buckets @@ -50,16 +52,17 @@ Use the |s3client| client's :methodname:`listBucket` method. If successful, a Li **Imports:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/ListBuckets.java - :lines: 16-18 + :lines: 15-19 **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/ListBuckets.java - :lines: 31-37 + :lines: 31-36 :dedent: 8 See the :sdk-examples-java:`complete example `. + .. _delete-bucket: Delete a bucket @@ -72,10 +75,11 @@ versioned objects associated with the bucket. .. note:: The :sdk-examples-java:`complete example ` includes each of these steps in order, providing a complete solution for deleting an |S3| bucket and its contents. -Removing objects from a bucket prior to deletion ------------------------------------------------- -To remove objects from a bucket prior to deletion, you can use the |s3client| client's +Removing objects from an unversioned bucket prior to deletion +------------------------------------------------------------- + +To remove objects from an unversioned bucket prior to deletion, you can use the |s3client| client's :methodname:`listObjects` method to retrieve the list of objects and :methodname:`deleteObject` to delete each one. @@ -87,13 +91,18 @@ delete each one. **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 52-70, 93-97 + :lines: 51, 53-70, 94-97 :dedent: 8 +See the :sdk-examples-java:`complete example `. -Removing versioned objects from a bucket prior to deletion + +Removing objects from a versioned bucket prior to deletion ---------------------------------------------------------- +If you are using a :S3-dg:`versioned bucket `, you will also need to remove any stored +versions of the objects in the bucket before the bucket can be deleted. + Using a pattern similar to the one used when removing objects within a bucket, remove versioned objects by using the |s3client| client's :methodname:`listVersions` method to list any versioned objects and then :methodname:`deleteVersion` to delete each one. @@ -101,14 +110,17 @@ objects and then :methodname:`deleteVersion` to delete each one. **Imports:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 15-18, 21-23 + :lines: 15-23 **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 52-54, 72-89, 93-97 + :lines: 51, 53-90, 94-97 :dedent: 8 +See the :sdk-examples-java:`complete example `. + + Deleting an empty bucket ------------------------ @@ -123,7 +135,7 @@ bucket itself, use the |s3client| client's :methodname:`deleteBucket` method. **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 52-54, 92-97 + :lines: 51, 53, 93-97 :dedent: 8 See the :sdk-examples-java:`complete example `. diff --git a/doc_source/examples/s3/objects.rst b/doc_source/examples/s3/objects.rst index fa462bd..cc8215a 100644 --- a/doc_source/examples/s3/objects.rst +++ b/doc_source/examples/s3/objects.rst @@ -2,6 +2,12 @@ Operations on Objects ##################### +.. meta:: + :description: How to list, upload, download, copy, rename, move or delete objects in an Amazon + S3 bucket using the AWS SDK for Java. + :keywords: AWS Java SDK, AWS SDK for Java, Amazon S3, copy, delete, download, get, list, move, + objects, put, rename, upload + An |S3| object represents a *file*, or collection of data. Every object must reside within a :doc:`bucket `. @@ -28,7 +34,7 @@ name, and file to upload. *The bucket must exist, or an error will result*. **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/PutObject.java - :lines: 47-54 + :lines: 46-52 :dedent: 8 See the :sdk-examples-java:`complete example `. @@ -56,7 +62,7 @@ name. **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/ListObjects.java - :lines: 46-52 + :lines: 45-50 :dedent: 8 See the :sdk-examples-java:`complete example `. @@ -87,7 +93,7 @@ name as the object's key): **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/GetObject.java - :lines: 51-75 + :lines: 50-71 :dedent: 8 See the :sdk-examples-java:`complete example `. @@ -109,14 +115,15 @@ and the destination bucket and name. **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/CopyObject.java - :lines: 45-54 + :lines: 46-52 :dedent: 8 See the :sdk-examples-java:`complete example `. -You can use :methodname:`copyObject` with :ref:`deleteObject ` to **move** or -**rename** an object, by first copying the object to a new name (you can use the same bucket as both -the source and destination) and then deleting the object from its old location. +.. note:: You can use :methodname:`copyObject` with :ref:`deleteObject ` to **move** + or **rename** an object, by first copying the object to a new name (you can use the same bucket + as both the source and destination) and then deleting the object from its old location. + .. _delete-object: @@ -134,11 +141,12 @@ object to delete. *The specified bucket and object key must exist, or an error w **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteObject.java - :lines: 48-55 + :lines: 47-53 :dedent: 8 See the :sdk-examples-java:`complete example `. + .. _delete-objects: Deleting multiple objects at once @@ -156,7 +164,7 @@ from the same bucket by passing their names to the :java-api:`DeleteObjectReques **Code:** .. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteObjects.java - :lines: 53-62 + :lines: 52-60 :dedent: 8 See the :sdk-examples-java:`complete example `. From aad852f208984b2a55c324b0a92077d2725ba6a4 Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Fri, 21 Oct 2016 14:36:20 -0700 Subject: [PATCH 012/225] include s3 best practice --- doc_source/examples/s3/buckets.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc_source/examples/s3/buckets.rst b/doc_source/examples/s3/buckets.rst index b02471a..b68b443 100644 --- a/doc_source/examples/s3/buckets.rst +++ b/doc_source/examples/s3/buckets.rst @@ -12,6 +12,8 @@ of objects. Each bucket is known by a *key* (name), which must be unique. For de about buckets and their configuration, see :s3-dg:`Working with Amazon S3 Buckets ` in the the |s3-dg|. +.. include:: common/s3-note-incomplete-upload-policy.txt + .. include:: ../examples-note.txt .. contents:: From 98f5e8a1ad372d0869bc53cf280c414649a509e5 Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Fri, 21 Oct 2016 15:47:55 -0700 Subject: [PATCH 013/225] added s3 bucket policy note --- doc_source/examples/s3/buckets.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples/s3/buckets.rst b/doc_source/examples/s3/buckets.rst index b68b443..f788b6a 100644 --- a/doc_source/examples/s3/buckets.rst +++ b/doc_source/examples/s3/buckets.rst @@ -12,7 +12,7 @@ of objects. Each bucket is known by a *key* (name), which must be unique. For de about buckets and their configuration, see :s3-dg:`Working with Amazon S3 Buckets ` in the the |s3-dg|. -.. include:: common/s3-note-incomplete-upload-policy.txt +.. include:: ../../common/s3-note-incomplete-upload-policy.txt .. include:: ../examples-note.txt From 96adaf2290d32be5e98d1a8feba422ccb5c391fe Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Wed, 26 Oct 2016 14:01:52 -0700 Subject: [PATCH 014/225] remove unnecessary contents blocks --- doc_source/basics-async.rst | 5 ----- doc_source/credentials.rst | 4 ---- doc_source/java-dg-region-selection.rst | 3 --- doc_source/java-dg-roles.rst | 6 ------ doc_source/java-dg-samples.rst | 3 --- doc_source/section-client-configuration.rst | 3 --- doc_source/setup-install.rst | 5 ++--- doc_source/setup-project-maven.rst | 3 --- doc_source/swf-hello.rst | 3 --- doc_source/swf-lambda-task.rst | 4 ---- doc_source/tutorial-spot-adv-java.rst | 4 ---- doc_source/welcome.rst | 4 ---- 12 files changed, 2 insertions(+), 45 deletions(-) diff --git a/doc_source/basics-async.rst b/doc_source/basics-async.rst index f16185d..a64d40f 100644 --- a/doc_source/basics-async.rst +++ b/doc_source/basics-async.rst @@ -20,11 +20,6 @@ waiting for a response. Since an asynchronous method returns before a response is available, you need a way to get the response when it's ready. The |sdk-java| provides two methods: *Futures* and *callback methods*. -.. contents:: - :local: - :depth: 2 - - .. _basics-async-future: Java Futures diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 1ae3236..c0916f5 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -28,10 +28,6 @@ There are a number of ways to do this: This topic provides information about how to load credentials for AWS using the |sdk-java|. -.. contents:: - :depth: 1 - :local: - .. _credentials-default: Using the Default Credential Provider Chain diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index 6e0f774..a3b77c8 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -16,9 +16,6 @@ Regions enable you to access AWS services that reside physically in a specific g can be useful both for redundancy and to keep your data and applications running close to where you and your users will access them. -.. contents:: - :depth: 1 - :local: .. _region-selection-query-service: diff --git a/doc_source/java-dg-roles.rst b/doc_source/java-dg-roles.rst index 0421551..c4e3f6f 100644 --- a/doc_source/java-dg-roles.rst +++ b/doc_source/java-dg-roles.rst @@ -20,9 +20,6 @@ This topic provides information about how to use IAM roles with Java SDK applica EC2. For more information about IAM instances, see :ec2-ug:`IAM Roles for Amazon EC2 ` in the |EC2-ug|. -.. contents:: - :local: - :depth: 1 .. _default-provider-chain: @@ -77,9 +74,6 @@ Walkthrough: Using IAM roles for EC2 instances The following walkthrough shows you how to retrieve an object from |S3| using an |IAM| role to manage access. -.. contents:: - :depth: 1 - :local: .. _java-dg-create-the-role: diff --git a/doc_source/java-dg-samples.rst b/doc_source/java-dg-samples.rst index d24b8d8..78218aa 100644 --- a/doc_source/java-dg-samples.rst +++ b/doc_source/java-dg-samples.rst @@ -16,9 +16,6 @@ The |sdk-java| comes packaged with a number of code samples that demonstrate man the SDK in buildable, runnable programs that you can study or modify to implement your own AWS solutions using the |sdk-java|. -.. contents:: - :depth: 1 - :local: How to get the samples ====================== diff --git a/doc_source/section-client-configuration.rst b/doc_source/section-client-configuration.rst index 90e167b..db5368b 100644 --- a/doc_source/section-client-configuration.rst +++ b/doc_source/section-client-configuration.rst @@ -43,9 +43,6 @@ Each of the configurable values has a default value defined by a constant. For a constant values for :classname:`ClientConfiguration`, see :java-ref:`Constant Field Values ` in the :title:`AWS SDK for Java Reference`. -.. contents:: - :depth: 1 - :local: Local Address ------------- diff --git a/doc_source/setup-install.rst b/doc_source/setup-install.rst index d28d71b..6596dba 100644 --- a/doc_source/setup-install.rst +++ b/doc_source/setup-install.rst @@ -12,9 +12,7 @@ Set up the |sdk-java| ##################### -.. contents:: - :local: - :depth: 1 +Describes how to use the |sdk-java| in your project. Prerequisites ============= @@ -28,6 +26,7 @@ To use the |sdk-java|, you must have: * AWS credentials (access keys) set in your environment or using the shared (by the AWS CLI and other SDKs) credentials file. For more information, see :doc:`setup-credentials`. + .. _include-sdk: Including the SDK in your project diff --git a/doc_source/setup-project-maven.rst b/doc_source/setup-project-maven.rst index 7edd065..87fb54e 100644 --- a/doc_source/setup-project-maven.rst +++ b/doc_source/setup-project-maven.rst @@ -17,9 +17,6 @@ You can use |mvnlong|_ to configure and build |sdk-java| projects, or to build t .. note:: You must have Maven installed to use the guidance in this topic. If it isn't already installed, visit http://maven.apache.org/ to download and install it. -.. contents:: - :local: - :depth: 1 Create a new Maven package ========================== diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index 0b57b52..67b6fe5 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -15,9 +15,6 @@ Building a Simple |SWF| Application This topic will introduce you to programming |SWF|_ applications with the |sdk-java|, while presenting a few important concepts along the way. -.. contents:: - :local: - :depth: 2 About the example ================= diff --git a/doc_source/swf-lambda-task.rst b/doc_source/swf-lambda-task.rst index 35ba9b4..795a2de 100644 --- a/doc_source/swf-lambda-task.rst +++ b/doc_source/swf-lambda-task.rst @@ -20,10 +20,6 @@ represent units of work in your workflows, and schedule them similarly to activi This topic focuses on how to implement |SWF| Lambda tasks using the |sdk-java|. For more information about Lambda tasks in general, see :swf-dg:`AWS Lambda Tasks ` in the |SWF-dg|. -.. contents:: - :local: - :depth: 1 - Set up a cross-service IAM role to run your Lambda function =========================================================== diff --git a/doc_source/tutorial-spot-adv-java.rst b/doc_source/tutorial-spot-adv-java.rst index 59f300b..5c7656f 100644 --- a/doc_source/tutorial-spot-adv-java.rst +++ b/doc_source/tutorial-spot-adv-java.rst @@ -21,10 +21,6 @@ as your bid exceeds the current *spot price*. |EC2| changes the spot price perio supply and demand. For more information about spot instances, see :ec2-ug:`Spot Instances ` in the |EC2-ug|. -.. contents:: - :local: - :depth: 1 - .. _tutor-spot-adv-java-prereq: diff --git a/doc_source/welcome.rst b/doc_source/welcome.rst index 150126a..3fcd057 100644 --- a/doc_source/welcome.rst +++ b/doc_source/welcome.rst @@ -21,10 +21,6 @@ applications that work with |S3|, |EC2|, |SDB|, and more. We regularly add suppo to the |sdk-java|. For a list of the supported services and their API versions that are included with each release of the SDK, view the `release notes`_ for the version that you're working with. -.. contents:: - :local: - :depth: 1 - .. _additional-resources: From 4dc5119cf4faae7259f1661364daa718f144bb8d Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Thu, 27 Oct 2016 18:23:02 -0700 Subject: [PATCH 015/225] updated a number of procedures --- doc_source/create-key-pair.rst | 53 ++++---- doc_source/create-security-group.rst | 128 +++++++++--------- doc_source/creating-clients.rst | 67 ++++----- doc_source/credentials.rst | 20 +-- doc_source/java-dg-roles.rst | 33 +++-- doc_source/java-dg-samples.rst | 83 ++++++------ doc_source/prog-services-sts.rst | 116 ++++++++-------- doc_source/prog-services-swf-list-domains.rst | 26 ++-- .../prog-services-swf-register-domain.rst | 21 +-- doc_source/run-instance.rst | 78 +++++------ doc_source/setup-install.rst | 48 +++---- doc_source/setup-project-gradle.rst | 40 +++--- doc_source/signup-create-iam-user.rst | 37 +---- doc_source/welcome.rst | 20 +-- 14 files changed, 379 insertions(+), 391 deletions(-) diff --git a/doc_source/create-key-pair.rst b/doc_source/create-key-pair.rst index 7d46f77..51719a8 100644 --- a/doc_source/create-key-pair.rst +++ b/doc_source/create-key-pair.rst @@ -17,43 +17,44 @@ key pair when you connect to the instance. You can create a key pair or use an e that you've used when launching other instances. For more information, see :ec2-ug:`Amazon EC2 Key Pairs ` in the |EC2-ug|. -**To create a key pair and save the private key** +.. topic:: To create a key pair and save the private key -1. Create and initialize a :java-api:`CreateKeyPairRequest - ` instance. Use the :java-ref:`withKeyName - ` - method to set the key pair name, as follows: + #. Create and initialize a :java-api:`CreateKeyPairRequest + ` instance. Use the :java-ref:`withKeyName + ` + method to set the key pair name, as follows: - .. code-block:: java + .. code-block:: java - CreateKeyPairRequest createKeyPairRequest = new CreateKeyPairRequest(); + CreateKeyPairRequest createKeyPairRequest = new CreateKeyPairRequest(); - createKeyPairRequest.withKeyName(keyName); + createKeyPairRequest.withKeyName(keyName); - .. important:: Key pair names must be unique. If you attempt to create a key pair with the same - key name as an existing key pair, you'll get an exception. + .. important:: Key pair names must be unique. If you attempt to create a key pair with the + same key name as an existing key pair, you'll get an exception. -2. Pass the request object to the :java-ref:`createKeyPair - ` - method. The method returns a :java-api:`CreateKeyPairResult - ` instance, as follows: + #. Pass the request object to the :java-ref:`createKeyPair + ` + method. The method returns a :java-api:`CreateKeyPairResult + ` instance, as follows: - .. code-block:: java + .. code-block:: java - CreateKeyPairResult createKeyPairResult = - amazonEC2Client.createKeyPair(createKeyPairRequest); + CreateKeyPairResult createKeyPairResult = + amazonEC2Client.createKeyPair(createKeyPairRequest); -3. Call the result object's :java-ref:`getKeyPair - ` method to obtain a - :java-api:`KeyPair ` object. Call the :code:`KeyPair` object's - :java-ref:`getKeyMaterial ` - method to obtain the unencrypted PEM-encoded private key, as follows: + #. Call the result object's :java-ref:`getKeyPair + ` method to + obtain a :java-api:`KeyPair ` object. Call the :code:`KeyPair` + object's :java-ref:`getKeyMaterial + ` method to obtain the + unencrypted PEM-encoded private key, as follows: - .. code-block:: java + .. code-block:: java - KeyPair keyPair = new KeyPair(); + KeyPair keyPair = new KeyPair(); - keyPair = createKeyPairResult.getKeyPair(); + keyPair = createKeyPairResult.getKeyPair(); - String privateKey = keyPair.getKeyMaterial(); + String privateKey = keyPair.getKeyMaterial(); diff --git a/doc_source/create-security-group.rst b/doc_source/create-security-group.rst index 08433d8..67a44e4 100644 --- a/doc_source/create-security-group.rst +++ b/doc_source/create-security-group.rst @@ -26,99 +26,99 @@ EC2-Classic and EC2-VPC, see :ec2-ug:`Supported Platforms ` in the |EC2-ug|. -**To create a security group** +.. topic:: To create a security group -1. Create and initialize a :java-api:`CreateSecurityGroupRequest - ` instance. Use the :java-ref:`withGroupName - ` - method to set the security group name, and the :java-ref:`withDescription - ` - method to set the security group description, as follows: + #. Create and initialize a :java-api:`CreateSecurityGroupRequest + ` instance. Use the :java-ref:`withGroupName + ` + method to set the security group name, and the :java-ref:`withDescription + ` + method to set the security group description, as follows: - .. code-block:: java + .. code-block:: java - CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest(); + CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest(); - csgr.withGroupName("JavaSecurityGroup").withDescription("My security group"); + csgr.withGroupName("JavaSecurityGroup").withDescription("My security group"); - The security group name must be unique within the AWS region in which you initialize your |EC2| - client. You must use US-ASCII characters for the security group name and description. + The security group name must be unique within the AWS region in which you initialize your |EC2| + client. You must use US-ASCII characters for the security group name and description. -2. Pass the request object as a parameter to the :java-ref:`createSecurityGroup - ` - method. The method returns a :java-api:`CreateSecurityGroupResult - ` object, as follows: + #. Pass the request object as a parameter to the :java-ref:`createSecurityGroup + ` + method. The method returns a :java-api:`CreateSecurityGroupResult + ` object, as follows: - .. code-block:: java + .. code-block:: java - CreateSecurityGroupResult createSecurityGroupResult = - amazonEC2Client.createSecurityGroup(createSecurityGroupRequest); + CreateSecurityGroupResult createSecurityGroupResult = + amazonEC2Client.createSecurityGroup(createSecurityGroupRequest); - If you attempt to create a security group with the same name as an existing security group, - :code:`createSecurityGroup` throws an exception. + If you attempt to create a security group with the same name as an existing security group, + :code:`createSecurityGroup` throws an exception. By default, a new security group does not allow any inbound traffic to your |EC2| instance. To allow inbound traffic, you must explicitly authorize security group ingress. You can authorize ingress for individual IP addresses, for a range of IP addresses, for a specific protocol, and for TCP/UDP ports. -**To authorize security group ingress** +.. topic:: To authorize security group ingress -1. Create and initialize an :java-api:`IpPermission ` instance. - Use the :java-ref:`withIpRanges - ` method - to set the range of IP addresses to authorize ingress for, and use the :java-ref:`withIpProtocol - ` method to - set the IP protocol. Use the :java-ref:`withFromPort - ` and - :java-ref:`withToPort - ` methods to - specify range of ports to authorize ingress for, as follows: + #. Create and initialize an :java-api:`IpPermission ` instance. + Use the :java-ref:`withIpRanges + ` method + to set the range of IP addresses to authorize ingress for, and use the :java-ref:`withIpProtocol + ` method to + set the IP protocol. Use the :java-ref:`withFromPort + ` and + :java-ref:`withToPort + ` methods to + specify range of ports to authorize ingress for, as follows: - .. code-block:: java + .. code-block:: java - IpPermission ipPermission = - new IpPermission(); + IpPermission ipPermission = + new IpPermission(); - ipPermission.withIpRanges("111.111.111.111/32", "150.150.150.150/32") - .withIpProtocol("tcp") - .withFromPort(22) - .withToPort(22); + ipPermission.withIpRanges("111.111.111.111/32", "150.150.150.150/32") + .withIpProtocol("tcp") + .withFromPort(22) + .withToPort(22); - All the conditions that you specify in the :code:`IpPermission` object must be met in order for - ingress to be allowed. + All the conditions that you specify in the :code:`IpPermission` object must be met in order for + ingress to be allowed. - Specify the IP address using CIDR notation. If you specify the protocol as TCP/UDP, you must - provide a source port and a destination port. You can authorize ports only if you specify TCP or - UDP. + Specify the IP address using CIDR notation. If you specify the protocol as TCP/UDP, you must + provide a source port and a destination port. You can authorize ports only if you specify TCP or + UDP. -2. Create and initialize an :java-api:`AuthorizeSecurityGroupIngressRequest - ` instance. Use the - :code:`withGroupName` method to specify the security group name, and pass the - :code:`IpPermission` object you initialized earlier to the :java-ref:`withIpPermissions - ` - method, as follows: + #. Create and initialize an :java-api:`AuthorizeSecurityGroupIngressRequest + ` instance. Use the + :code:`withGroupName` method to specify the security group name, and pass the + :code:`IpPermission` object you initialized earlier to the :java-ref:`withIpPermissions + ` + method, as follows: - .. code-block:: java + .. code-block:: java - AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = - new AuthorizeSecurityGroupIngressRequest(); + AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = + new AuthorizeSecurityGroupIngressRequest(); - authorizeSecurityGroupIngressRequest.withGroupName("JavaSecurityGroup") - .withIpPermissions(ipPermission); + authorizeSecurityGroupIngressRequest.withGroupName("JavaSecurityGroup") + .withIpPermissions(ipPermission); -3. Pass the request object into the :java-ref:`authorizeSecurityGroupIngress - ` - method, as follows: + #. Pass the request object into the :java-ref:`authorizeSecurityGroupIngress + ` + method, as follows: - .. code-block:: java + .. code-block:: java - amazonEC2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest); + amazonEC2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest); - If you call :code:`authorizeSecurityGroupIngress` with IP addresses for which ingress is already - authorized, the method throws an exception. Create and initialize a new :code:`IpPermission` - object to authorize ingress for different IPs, ports, and protocols before calling - :code:`AuthorizeSecurityGroupIngress`. + If you call :code:`authorizeSecurityGroupIngress` with IP addresses for which ingress is already + authorized, the method throws an exception. Create and initialize a new :code:`IpPermission` + object to authorize ingress for different IPs, ports, and protocols before calling + :code:`AuthorizeSecurityGroupIngress`. Whenever you call the :code:`authorizeSecurityGroupIngress` or :java-ref:`authorizeSecurityGroupEgress diff --git a/doc_source/creating-clients.rst b/doc_source/creating-clients.rst index 1b8789d..320e127 100644 --- a/doc_source/creating-clients.rst +++ b/doc_source/creating-clients.rst @@ -82,57 +82,60 @@ Creating Async Clients The |sdk-java| also has asynchronous (or async) clients for every service, except for |S3long|. There is also a corresponding async client builder for every service. -**To create an async |DDB| client with the default ExecutorService** +.. topic:: To create an async |DDB| client with the default ExecutorService -.. code-block:: java + .. code-block:: java - AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() - .withRegion(Regions.US_WEST_2) - .withCredentials(new ProfileCredentialsProvider("myProfile")) - .build(); + AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() + .withRegion(Regions.US_WEST_2) + .withCredentials(new ProfileCredentialsProvider("myProfile")) + .build(); -In addition to the configuration options that the synchronous (or sync) client builder supports, -the async client allows you to set a custom :java-api:`ExecutorFactory ` -to change the ``ExecutorService`` that the async client uses. ``ExecutorFactory`` is a functional -interface, so it interoperates with Java 8 lambda expressions and method references. +In addition to the configuration options that the synchronous (or sync) client builder supports, the +async client allows you to set a custom :java-api:`ExecutorFactory ` +to change the :classname:`ExecutorService` that the async client uses. :classname:`ExecutorFactory` +is a functional interface, so it interoperates with Java 8 lambda expressions and method references. -**To create an async client with a custom executor** +.. topic:: To create an async client with a custom executor -.. code-block:: java + .. code-block:: java + + AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() + .withExecutorFactory(() -> Executors.newFixedThreadPool(10)) + .build(); - AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() - .withExecutorFactory(() -> Executors.newFixedThreadPool(10)) - .build(); Default Client ============== -Both the sync and async client builders have another factory method called ``defaultClient``. This -method creates a service client with the default configuration, using the default provider chain to -load credentials and the AWS region. If either credentials or the region cannot be determined from -the environment that the application is running in, the call to ``defaultClient`` will fail. See -:doc:`credentials` and :doc:`java-dg-region-selection` for more information on how credentials and -region are determined. +Both the sync and async client builders have another factory method called +:methodname:`defaultClient`. This method creates a service client with the default configuration, +using the default provider chain to load credentials and the AWS region. If either credentials or +the region cannot be determined from the environment that the application is running in, the call to +:methodname:`defaultClient` will fail. See :doc:`credentials` and :doc:`java-dg-region-selection` +for more information on how credentials and region are determined. -**To create a default service client** +.. topic:: To create a default service client -.. code-block:: java + .. code-block:: java + + AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); - AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); Client Lifecycle ================ Service clients in the SDK are thread-safe and, for best performance, you should treat them as -long-lived objects. Each client has its own connection pool resource that is shut down when the -client is garbage collected. To explicitly shut down a client, you can call the ``shutdown`` -method. After calling ``shutdown``, all client resources are released and the client is unusable. +long-lived objects. Each client has its own connection pool resource that is shut down when the +client is garbage collected. To explicitly shut down a client, you can call the +:methodname:`shutdown` method. After calling :methodname:`shutdown`, all client resources are +released and the client is unusable. -**To shut down a client** +.. topic:: To shut down a client -.. code-block:: java + .. code-block:: java - AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); - ddb.shutdown(); - // Client is now unusable + AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); + ddb.shutdown(); + // Client is now unusable diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index c0916f5..4d578c8 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -36,7 +36,7 @@ Using the Default Credential Provider Chain When you initialize a new service client without supplying any arguments, the |sdk-java| will attempt to find AWS credentials using the :emphasis:`default credential provider chain` implemented by the :java-api:`DefaultAWSCredentialsProviderChain ` -class. The default credential provider chain looks for credentials in this order: +class. The default credential provider chain looks for credentials in this order: 1. **Environment Variables** |ndash| :envvar:`AWS_ACCESS_KEY_ID` and :envvar:`AWS_SECRET_ACCESS_KEY`. The |sdk-java| uses the @@ -57,7 +57,6 @@ class. The default credential provider chain looks for credentials in this orde CLI, or you can create it by hand-editing the file with a text editor. For information about the credentials file format, see :ref:`credentials-file-format`. - 4. **Instance profile credentials** |ndash| these credentials can be used on EC2 instances, and are delivered through the Amazon EC2 metadata service. The |sdk-java| uses the :java-api:`InstanceProfileCredentialsProvider ` to load @@ -205,15 +204,18 @@ If neither the default credential chain or a specific or custom provider or prov your code, you can set credentials explicitly by supplying them yourself. If you have retrieved temporary credentials using |STS|, use this method to specify the credentials for AWS access. -**To explicitly supply credentials to an AWS client:** -Instantiate a class that provides the :java-api:`AWSCredentials ` interface, -such as :java-api:`BasicAWSCredentials `, supplying it with the AWS access -key and secret key you will use for the connection. +.. topic:: To explicitly supply credentials to an AWS client: + + #. Instantiate a class that provides the :java-api:`AWSCredentials ` + interface, such as :java-api:`BasicAWSCredentials `, supplying it + with the AWS access key and secret key you will use for the connection. + + #. Create a :java-api:`AWSStaticCredentialsProvider ` with + the AWSCredentials object. -Create a :java-api:`AWSStaticCredentialsProvider ` with the AWSCredentials object. + #. Configure the client builder with the AWSStaticCredentialsProvider and build the client. -Configure the client builder with the AWSStaticCredentialsProvider and build the client. For example: @@ -237,8 +239,6 @@ See Also ======== * :doc:`signup-create-iam-user` - * :doc:`setup-credentials` - * :doc:`java-dg-roles` diff --git a/doc_source/java-dg-roles.rst b/doc_source/java-dg-roles.rst index c4e3f6f..91db9b6 100644 --- a/doc_source/java-dg-roles.rst +++ b/doc_source/java-dg-roles.rst @@ -82,22 +82,22 @@ Create an |IAM| Role Create an IAM role that grants read-only access to |S3|. -**To create the IAM role** +.. topic:: To create the IAM role -1. Open the IAM console. + #. Open the IAM console. -2. In the navigation pane, click :guilabel:`Roles`, and then click :guilabel:`Create New Role`. + #. In the navigation pane, click :guilabel:`Roles`, and then click :guilabel:`Create New Role`. -3. Enter a name for the role, and then click :guilabel:`Next Step`. Remember this name, as you'll - need it when you launch your EC2 instance. + #. Enter a name for the role, and then click :guilabel:`Next Step`. Remember this name, as + you'll need it when you launch your EC2 instance. -4. On the :guilabel:`Select Role Type` page, under :guilabel:`AWS Service Roles`, select - :guilabel:`Amazon EC2`. + #. On the :guilabel:`Select Role Type` page, under :guilabel:`AWS Service Roles`, select + :guilabel:`Amazon EC2`. -5. On the :guilabel:`Set Permissions` page, under :guilabel:`Select Policy Template`, select - :guilabel:`Amazon S3 Read Only Access`. Click :guilabel:`Next Step`. + #. On the :guilabel:`Set Permissions` page, under :guilabel:`Select Policy Template`, select + :guilabel:`Amazon S3 Read Only Access`. Click :guilabel:`Next Step`. -6. On the :guilabel:`Review` page, click :guilabel:`Create Role`. + #. On the :guilabel:`Review` page, click :guilabel:`Create Role`. .. _java-dg-launch-ec2-instance-with-instance-profile: @@ -107,14 +107,13 @@ Launch an EC2 Instance and Specify Your IAM Role You can launch an EC2 instance with an IAM role using the |EC2| console or the |sdk-java|. -* To launch an EC2 instance using the console, follow the directions in :ec2-ug:`Launch an EC2 - Instance ` in the |EC2-ug|. When you reach the :guilabel:`Review - Instance Launch` page, click :guilabel:`Edit instance details`. In :guilabel:`IAM role`, specify - the IAM role that you created previously. Complete the procedure as directed. Notice that you'll - need to create or use an existing security group and key pair in order to connect to the - instance. +* To launch an EC2 instance using the console, follow the directions in :ec2-ug:`Launch an EC2 + Instance ` in the |EC2-ug|. When you reach the :guilabel:`Review + Instance Launch` page, click :guilabel:`Edit instance details`. In :guilabel:`IAM role`, specify + the IAM role that you created previously. Complete the procedure as directed. Notice that you'll + need to create or use an existing security group and key pair in order to connect to the instance. -* To launch an EC2 instance with an IAM role using the |sdk-java|, see :doc:`run-instance`. +* To launch an EC2 instance with an IAM role using the |sdk-java|, see :doc:`run-instance`. .. _java-dg-remove-the-credentials: diff --git a/doc_source/java-dg-samples.rst b/doc_source/java-dg-samples.rst index 78218aa..873f5d9 100644 --- a/doc_source/java-dg-samples.rst +++ b/doc_source/java-dg-samples.rst @@ -53,39 +53,39 @@ the risky practice of inserting your AWS credentials in files within the source Running the samples ------------------- -**To run a sample from the command line** +.. topic:: To run a sample from the command line -1. Change to the directory containing the sample's code. For example, if you are in the root - directory of the AWS SDK download and want to run the :file:`AwsConsoleApp` sample, you would - type: + #. Change to the directory containing the sample's code. For example, if you are in the root + directory of the AWS SDK download and want to run the :file:`AwsConsoleApp` sample, you would + type: - .. code-block:: none + .. code-block:: none - cd samples/AwsConsoleApp + cd samples/AwsConsoleApp -2. Build and run the sample with Ant. The default build target performs both actions, so you can - just enter: + #. Build and run the sample with Ant. The default build target performs both actions, so you can + just enter: - .. code-block:: none + .. code-block:: none - ant + ant - The sample prints information to standard output |mdash| for example: +The sample prints information to standard output |mdash| for example: - .. code-block:: none +.. code-block:: none - =========================================== + =========================================== - Welcome to the AWS Java SDK! + Welcome to the AWS Java SDK! - =========================================== - You have access to 4 Availability Zones. + =========================================== + You have access to 4 Availability Zones. - You have 0 Amazon EC2 instance(s) running. + You have 0 Amazon EC2 instance(s) running. - You have 13 Amazon SimpleDB domain(s) containing a total of 62 items. + You have 13 Amazon SimpleDB domain(s) containing a total of 62 items. - You have 23 Amazon S3 bucket(s), containing 44 objects with a total size of 154767691 bytes. + You have 23 Amazon S3 bucket(s), containing 44 objects with a total size of 154767691 bytes. Building and Running the Samples using the Eclipse IDE @@ -104,40 +104,43 @@ Eclipse, and then selecting the :guilabel:`AWS Toolkit` section. Running the samples ------------------- -**To run a sample using the AWS Toolkit for Eclipse** +.. topic:: To run a sample using the AWS Toolkit for Eclipse -1. Open Eclipse. + #. Open Eclipse. -2. Create a new AWS Java project. In Eclipse, on the :guilabel:`File` menu, point to - :guilabel:`New`, and then click :guilabel:`Project`. The :guilabel:`New Project` wizard opens. + #. Create a new AWS Java project. In Eclipse, on the :guilabel:`File` menu, point to + :guilabel:`New`, and then click :guilabel:`Project`. The :guilabel:`New Project` wizard + opens. -3. Expand the :guilabel:`AWS` category, then select :guilabel:`AWS Java Project`. + #. Expand the :guilabel:`AWS` category, then select :guilabel:`AWS Java Project`. -4. Click :guilabel:`Next`. The project settings page is displayed. + #. Click :guilabel:`Next`. The project settings page is displayed. -5. Enter a name in the :guilabel:`Project Name` box. The AWS SDK for Java Samples group displays - the samples available in the SDK, as described previously. + #. Enter a name in the :guilabel:`Project Name` box. The AWS SDK for Java Samples group displays + the samples available in the SDK, as described previously. -6. Select the samples you want to include in your project by selecting each check box. + #. Select the samples you want to include in your project by selecting each check box. -7. Enter your AWS credentials. If you've already configured the |tke| with your credentials, this - is automatically filled in. + #. Enter your AWS credentials. If you've already configured the |tke| with your credentials, + this is automatically filled in. -8. Click :guilabel:`Finish`. The project is created and added to the :guilabel:`Project Explorer`. + #. Click :guilabel:`Finish`. The project is created and added to the :guilabel:`Project + Explorer`. -**To run the project** -1. Select the sample :file:`.java` file you want to run. For example, for the |S3| sample, select - :file:`S3Sample.java`. +.. topic:: To run the project -2. Select :guilabel:`Run` from the :guilabel:`Run` menu. + #. Select the sample :file:`.java` file you want to run. For example, for the |S3| sample, select + :file:`S3Sample.java`. -**To add the SDK to an existing project** + #. Select :guilabel:`Run` from the :guilabel:`Run` menu. -1. Right-click the project in :guilabel:`Project Explorer`, point to :guilabel:`Build Path`, and - then click :guilabel:`Add Libraries`. -2. Select :guilabel:`AWS Java SDK`, and then click :guilabel:`Next` and follow the remaining - on-screen instructions. +.. topic:: To add the SDK to an existing project + #. Right-click the project in :guilabel:`Project Explorer`, point to :guilabel:`Build Path`, and + then click :guilabel:`Add Libraries`. + + #. Select :guilabel:`AWS Java SDK`, and then click :guilabel:`Next` and follow the remaining + on-screen instructions. diff --git a/doc_source/prog-services-sts.rst b/doc_source/prog-services-sts.rst index e14cb2a..b036cb7 100644 --- a/doc_source/prog-services-sts.rst +++ b/doc_source/prog-services-sts.rst @@ -23,11 +23,11 @@ There are three steps involved in using |STS|: 3. Use the credentials to access AWS resources. -.. note:: Activating a region is :emphasis:`optional`; by default, temporary security credentials are - obtained from the global endpoint :emphasis:`sts.amazonaws.com`. However, to reduce latency and - to enable you to build redundancy into your requests by using additional endpoints if an |STS| - request to the first endpoint fails, you can activate regions that are geographically closer to - your services or applications that use the credentials. +.. note:: Activating a region is :emphasis:`optional`; by default, temporary security credentials + are obtained from the global endpoint :emphasis:`sts.amazonaws.com`. However, to reduce latency + and to enable you to build redundancy into your requests by using additional endpoints if an + |STS| request to the first endpoint fails, you can activate regions that are geographically + closer to your services or applications that use the credentials. .. _optional-activate-and-use-an-sts-region: @@ -37,19 +37,19 @@ There are three steps involved in using |STS|: To activate a region for use with |STS|, use the AWS Management Console to select and activate the region. -**To activate additional STS regions** +.. topic:: To activate additional STS regions -1. Sign in as an IAM user with permissions to perform IAM administration tasks :code:`"iam:*"` for - the account for which you want to activate AWS STS in a new region. + #. Sign in as an IAM user with permissions to perform IAM administration tasks :code:`"iam:*"` + for the account for which you want to activate AWS STS in a new region. -2. Open the IAM console and in the navigation pane click :guilabel:`Account Settings`. + #. Open the IAM console and in the navigation pane click :guilabel:`Account Settings`. -3. Expand the :guilabel:`STS Regions` list, find the region that you want to use, and then click - :guilabel:`Activate`. + #. Expand the :guilabel:`STS Regions` list, find the region that you want to use, and then click + :guilabel:`Activate`. After this, you can direct calls to the STS endpoint that is associated with that region. -.. note:: For more information about activating STS regions and for a list of the available AWS STS +.. note:: For more information about activating STS regions and for a list of the available AWS STS endpoints, see `Activating AWS STS in a New Region `_ in the |STS-ug|. @@ -59,68 +59,68 @@ After this, you can direct calls to the STS endpoint that is associated with tha Retrieve temporary security credentials from |STS| ================================================== -**To retrieve temporary security credentials using the AWS SDK for Java** +.. topic:: To retrieve temporary security credentials using the AWS SDK for Java -1. Create an :java-api:`AWSSecurityTokenServiceClient` object: + #. Create an :java-api:`AWSSecurityTokenServiceClient` object: - .. code-block:: java + .. code-block:: java - AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(); + AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(); - When creating the client with no arguments, the default credential provider chain is used to - retrieve credentials. You can provide a specific credential provider if you want. For more - information, see Providing AWS Credentials in the AWS SDK for Java. + When creating the client with no arguments, the default credential provider chain is used to + retrieve credentials. You can provide a specific credential provider if you want. For more + information, see Providing AWS Credentials in the AWS SDK for Java. -2. :emphasis:`Optional`; requires that you have activated the region) Set the endpoint for the STS - client: + #. :emphasis:`Optional`; requires that you have activated the region) Set the endpoint for the STS + client: - .. code-block:: java + .. code-block:: java - sts_client.setEndpoint("sts-endpoint.amazonaws.com"); + sts_client.setEndpoint("sts-endpoint.amazonaws.com"); - where :emphasis:`sts-endpoint` represents the STS endpoint for your region. + where :emphasis:`sts-endpoint` represents the STS endpoint for your region. - .. important:: Do not use the :methodname:`setRegion` method to set a regional endpoint |mdash| - for backwards compatibility, that method continues to use the single global endpoint of - sts.amazonaws.com. + .. important:: Do not use the :methodname:`setRegion` method to set a regional endpoint |mdash| + for backwards compatibility, that method continues to use the single global endpoint of + sts.amazonaws.com. -3. Create a :java-api:`GetSessionTokenRequest ` object, and - optionally set the duration in seconds for which the temporary credentials are valid: + #. Create a :java-api:`GetSessionTokenRequest ` object, and + optionally set the duration in seconds for which the temporary credentials are valid: - .. code-block:: java + .. code-block:: java - GetSessionTokenRequest session_token_request = new GetSessionTokenRequest(); - session_token_request.setDurationSeconds(7200); // optional. + GetSessionTokenRequest session_token_request = new GetSessionTokenRequest(); + session_token_request.setDurationSeconds(7200); // optional. - The duration of temporary credentials can range from 900 seconds (15 minutes) to 129600 seconds - (36 hours) for IAM users. If a duration isn't specified, then 43200 seconds (12 hours) is used - by default. + The duration of temporary credentials can range from 900 seconds (15 minutes) to 129600 seconds + (36 hours) for IAM users. If a duration isn't specified, then 43200 seconds (12 hours) is used + by default. - For a root AWS account, the valid range of temporary credentials is from 900 to 3600 seconds (1 - hour), with a default value of 3600 seconds if no duration is specified. + For a root AWS account, the valid range of temporary credentials is from 900 to 3600 seconds (1 + hour), with a default value of 3600 seconds if no duration is specified. - .. important:: It is :emphasis:`strongly recommended`, from a security standpoint, that you - :emphasis:`use IAM users` instead of the root account for AWS access. For more information, see - IAM Best Practices in the |iam-ug|. + .. important:: It is :emphasis:`strongly recommended`, from a security standpoint, that you + :emphasis:`use IAM users` instead of the root account for AWS access. For more information, see + IAM Best Practices in the |iam-ug|. -4. Call :java-api:`getSessionToken - ` - on the STS client to get a session token, using the :classname:`GetSessionTokenRequest` object: + #. Call :java-api:`getSessionToken + ` + on the STS client to get a session token, using the :classname:`GetSessionTokenRequest` object: - .. code-block:: java + .. code-block:: java - GetSessionTokenResult session_token_result = - sts_client.getSessionToken(session_token_request); + GetSessionTokenResult session_token_result = + sts_client.getSessionToken(session_token_request); -5. Get session credentials using the result of the call to :methodname:`getSessionToken`: + #. Get session credentials using the result of the call to :methodname:`getSessionToken`: - .. code-block:: java + .. code-block:: java - Credentials session_creds = session_token_result.getCredentials(); + Credentials session_creds = session_token_result.getCredentials(); - The session credentials provide access only for the duration that was specified by the - :classname:`GetSessionTokenRequest` object. Once the credentials expire, you will need to call - :methodname:`getSessionToken` again to obtain a new session token for continued access to AWS. +The session credentials provide access only for the duration that was specified by the +:classname:`GetSessionTokenRequest` object. Once the credentials expire, you will need to call +:methodname:`getSessionToken` again to obtain a new session token for continued access to AWS. .. _use-the-token-to-access-aws-resources: @@ -147,11 +147,15 @@ For more information For more information about how to use temporary security credentials to access AWS resources, visit the following sections in the |STS-ug|: -* `Creating Temporary Security Credentials `_ +* `Creating Temporary Security Credentials + `_ -* `Controlling Permissions for Temporary Security Credentials `_ +* `Controlling Permissions for Temporary Security Credentials + `_ -* `Requesting AWS Resources Using Temporary Security Credentials `_ +* `Requesting AWS Resources Using Temporary Security Credentials + `_ -* `Activating STS in a New Region `_ +* `Activating STS in a New Region + `_ diff --git a/doc_source/prog-services-swf-list-domains.rst b/doc_source/prog-services-swf-list-domains.rst index 9b1065d..d1deb02 100644 --- a/doc_source/prog-services-swf-list-domains.rst +++ b/doc_source/prog-services-swf-list-domains.rst @@ -14,23 +14,23 @@ Listing Domains You can list the |SWF|_ domains associated with your account and AWS region by registration type. -**To list Amazon SWF domains** +.. topic:: To list |SWF| domains -1. Create a :java-api:`ListDomainsRequest ` - object, and specify the registration status of the domains that you're interested in |mdash| - this is required. + #. Create a :java-api:`ListDomainsRequest ` + object, and specify the registration status of the domains that you're interested in |mdash| + this is required. -2. Call :java-ref:`AmazonSimpleWorkflowClient.listDomains - ` - with the :emphasis:`ListDomainRequest` object. Results are provided in a :java-api:`DomainInfos - ` object. + #. Call :java-ref:`AmazonSimpleWorkflowClient.listDomains + ` + with the :emphasis:`ListDomainRequest` object. Results are provided in a :java-api:`DomainInfos + ` object. -3. Call :java-ref:`getDomainInfos - ` on the returned object to - get a list of :java-api:`DomainInfo ` objects. + #. Call :java-ref:`getDomainInfos + ` on the returned object to + get a list of :java-api:`DomainInfo ` objects. -4. Call :java-ref:`getName ` on each - :emphasis:`DomainInfo` object to get its name. + #. Call :java-ref:`getName ` on each + :emphasis:`DomainInfo` object to get its name. The following code demonstrates this procedure: diff --git a/doc_source/prog-services-swf-register-domain.rst b/doc_source/prog-services-swf-register-domain.rst index 85b3831..76edc56 100644 --- a/doc_source/prog-services-swf-register-domain.rst +++ b/doc_source/prog-services-swf-register-domain.rst @@ -14,19 +14,20 @@ Registering Domains Every workflow and activity in |SWF|_ needs a :emphasis:`domain` to run in. -**To register an Amazon SWF domain** +.. topic:: To register an |SWF| domain -1. Create a new :java-api:`RegisterDomainRequest - ` object, providing it with at least the - domain name and workflow execution retention period (these parameters are both required). + #. Create a new :java-api:`RegisterDomainRequest + ` object, providing it with at least + the domain name and workflow execution retention period (these parameters are both + required). -2. Call the :java-ref:`AmazonSimpleWorkflowClient.registerDomain - ` - method with the :emphasis:`RegisterDomainRequest` object. + #. Call the :java-ref:`AmazonSimpleWorkflowClient.registerDomain + ` + method with the :emphasis:`RegisterDomainRequest` object. -3. Catch the :java-api:`DomainAlreadyExistsException - ` if the domain you're requesting - already exists (in which case, no action is usually required). + #. Catch the :java-api:`DomainAlreadyExistsException + ` if the domain you're + requesting already exists (in which case, no action is usually required). The following code demonstrates this procedure: diff --git a/doc_source/run-instance.rst b/doc_source/run-instance.rst index 790cf4a..841116b 100644 --- a/doc_source/run-instance.rst +++ b/doc_source/run-instance.rst @@ -16,58 +16,58 @@ Use the following procedure to launch one or more identically configured EC2 ins Amazon Machine Image (AMI). After you create your EC2 instances, you can check their status. After your EC2 instances are running, you can connect to them. -**To launch an Amazon EC2 instance** +.. topic:: To launch an |EC2| instance -1. Create and initialize a :java-api:`RunInstancesRequest ` - instance. Make sure that the AMI, key pair, and security group that you specify exist in the - region that you specified when you created the client object. + #. Create and initialize a :java-api:`RunInstancesRequest ` + instance. Make sure that the AMI, key pair, and security group that you specify exist in the + region that you specified when you created the client object. - .. code-block:: java + .. code-block:: java - RunInstancesRequest runInstancesRequest = - new RunInstancesRequest(); + RunInstancesRequest runInstancesRequest = + new RunInstancesRequest(); - runInstancesRequest.withImageId("ami-4b814f22") - .withInstanceType("m1.small") - .withMinCount(1) - .withMaxCount(1) - .withKeyName("my-key-pair") - .withSecurityGroups("my-security-group"); + runInstancesRequest.withImageId("ami-4b814f22") + .withInstanceType("m1.small") + .withMinCount(1) + .withMaxCount(1) + .withKeyName("my-key-pair") + .withSecurityGroups("my-security-group"); - :java-ref:`withImageId ` - The ID of the AMI. For a list of public AMIs provided by Amazon, see Amazon Machine Images. + :java-ref:`withImageId ` + The ID of the AMI. For a list of public AMIs provided by Amazon, see Amazon Machine Images. - :java-ref:`withInstanceType ` - An instance type that is compatible with the specified AMI. For more information, see - :ec2-ug:`Instance Types ` in the |EC2-ug|. + :java-ref:`withInstanceType ` + An instance type that is compatible with the specified AMI. For more information, see + :ec2-ug:`Instance Types ` in the |EC2-ug|. - :java-ref:`withMinCount ` - The minimum number of EC2 instances to launch. If this is more instances than |EC2| can - launch in the target Availability Zone, |EC2| launches no instances. + :java-ref:`withMinCount ` + The minimum number of EC2 instances to launch. If this is more instances than |EC2| can + launch in the target Availability Zone, |EC2| launches no instances. - :java-ref:`withMaxCount ` - The maximum number of EC2 instances to launch. If this is more instances than |EC2| can - launch in the target Availability Zone, |EC2| launches the largest possible number of - instances above :code:`MinCount`. You can launch between 1 and the maximum number of - instances you're allowed for the instance type. For more information, see How many instances - can I run in Amazon EC2 in the |EC2| General FAQ. + :java-ref:`withMaxCount ` + The maximum number of EC2 instances to launch. If this is more instances than |EC2| can + launch in the target Availability Zone, |EC2| launches the largest possible number of + instances above :code:`MinCount`. You can launch between 1 and the maximum number of + instances you're allowed for the instance type. For more information, see How many instances + can I run in Amazon EC2 in the |EC2| General FAQ. - :java-ref:`withKeyName ` - The name of the EC2 key pair. If you launch an instance without specifying a key pair, you - can't connect to it. For more information, see :doc:`create-key-pair`. + :java-ref:`withKeyName ` + The name of the EC2 key pair. If you launch an instance without specifying a key pair, you + can't connect to it. For more information, see :doc:`create-key-pair`. - :java-ref:`withSecurityGroups ` - One or more security groups. For more information, see :doc:`create-security-group`. + :java-ref:`withSecurityGroups ` + One or more security groups. For more information, see :doc:`create-security-group`. -2. Launch the instances by passing the request object to the :java-ref:`runInstances - ` - method. The method returns a :java-api:`RunInstancesResult - ` object, as follows: + #. Launch the instances by passing the request object to the :java-ref:`runInstances + ` + method. The method returns a :java-api:`RunInstancesResult + ` object, as follows: - .. code-block:: java + .. code-block:: java - RunInstancesResult runInstancesResult = - amazonEC2Client.runInstances(runInstancesRequest); + RunInstancesResult runInstancesResult = + amazonEC2Client.runInstances(runInstancesRequest); After your instance is running, you can connect to it using your key pair. For more information, see :ec2-ug:`Connect to Your Linux Instance `. in the |EC2-ug|. diff --git a/doc_source/setup-install.rst b/doc_source/setup-install.rst index 6596dba..46e48b5 100644 --- a/doc_source/setup-install.rst +++ b/doc_source/setup-install.rst @@ -61,23 +61,23 @@ provides you with the latest support for all AWS services. .. note:: For information about how to download and build previous versions of the SDK, see :ref:`install-prev-sdk`. -**To download and extract the latest version of the SDK** +.. topic:: To download and extract the latest version of the SDK -#. Download the SDK from |sdk-java-dl|. + #. Download the SDK from |sdk-java-dl|. -#. After downloading the SDK, extract the contents into a local directory. + #. After downloading the SDK, extract the contents into a local directory. - The SDK contains the following directories: +The SDK contains the following directories: - - **documentation** |ndash| contains the API documentation (also available on the web: - |sdk-java-ref|_). +* :file:`documentation` |ndash| contains the API documentation (also available on the web: + |sdk-java-ref|_). - - **lib** |ndash| contains the SDK :file:`.jar` files. +* :file:`lib` |ndash| contains the SDK :file:`.jar` files. - - **samples** |ndash| contains working sample code that demonstrates how to use the SDK. +* :file:`samples` |ndash| contains working sample code that demonstrates how to use the SDK. - - **third-party** |ndash| contains third-party libraries that are used by the SDK, such as - Apache commons logging, AspectJ and the Spring framework. +* :file:`third-party` |ndash| contains third-party libraries that are used by the SDK, such as + Apache commons logging, AspectJ and the Spring framework. To use the SDK, add the full path to the ``lib`` and ``third-party`` directories to the dependencies in your build file, and add them to your java ``CLASSPATH`` to run your code. @@ -92,31 +92,31 @@ version of the SDK using Apache Maven (open source). Maven will download all nec build and install the SDK in one step. Visit http://maven.apache.org/ for installation instructions and more information. -**To install a previous version of the SDK** +.. topic:: To install a previous version of the SDK -#. Go to the SDK's GitHub page at: |sdk-java-github|_. + #. Go to the SDK's GitHub page at: |sdk-java-github|_. -#. Choose the tag corresponding to the version number of the SDK that you want. For example, - ``1.6.10``. + #. Choose the tag corresponding to the version number of the SDK that you want. For example, + ``1.6.10``. -#. Click the :guilabel:`Download ZIP` button to download the version of the SDK you selected. + #. Click the :guilabel:`Download ZIP` button to download the version of the SDK you selected. -#. Unzip the file to a directory on your development system. On many systems, you can use your - graphical file manager to do this, or use the ``unzip`` utility in a terminal window. + #. Unzip the file to a directory on your development system. On many systems, you can use your + graphical file manager to do this, or use the ``unzip`` utility in a terminal window. -#. In a terminal window, navigate to the directory where you unzipped the SDK source. + #. In a terminal window, navigate to the directory where you unzipped the SDK source. -#. Build and install the SDK with the following command (Maven_ required):: + #. Build and install the SDK with the following command (Maven_ required):: - mvn clean install + mvn clean install - The resulting :file:`.jar` file is built into the :file:`target` directory. + The resulting :file:`.jar` file is built into the :file:`target` directory. -#. (Optional) Build the API Reference documentation using the following command:: + #. (Optional) Build the API Reference documentation using the following command:: - mvn javadoc:javadoc + mvn javadoc:javadoc - The documentation is built into the :file:`target/site/apidocs/` directory. + The documentation is built into the :file:`target/site/apidocs/` directory. .. _java-dg-java-env: diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index 3d68afb..69b8467 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -16,35 +16,35 @@ To use the |sdk-java| in your Gradle_ project, use Spring's `dependency manageme `_ for Gradle, which can be used to import the SDK's Maven Bill of Materials (BOM) to manage SDK dependencies for your project. -**To configure the SDK for Gradle** +.. topic:: To configure the SDK for Gradle -1. Add the dependency management plugin to your :file:`build.gradle` file:: + #. Add the dependency management plugin to your :file:`build.gradle` file:: - buildscript { - repositories { - mavenCentral() + buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath "io.spring.gradle:dependency-management-plugin:0.5.4.RELEASE" + } } - dependencies { - classpath "io.spring.gradle:dependency-management-plugin:0.5.4.RELEASE" - } - } - apply plugin: "io.spring.dependency-management" + apply plugin: "io.spring.dependency-management" -2. Add the BOM to the *dependencyManagement* section of the file:: + #. Add the BOM to the *dependencyManagement* section of the file:: - dependencyManagement { - imports { - mavenBom 'com.amazonaws:aws-java-sdk-bom:1.10.47' + dependencyManagement { + imports { + mavenBom 'com.amazonaws:aws-java-sdk-bom:1.10.47' + } } - } -3. Specify the SDK modules that you'll be using in the *dependencies* section:: + #. Specify the SDK modules that you'll be using in the *dependencies* section:: - dependencies { - compile 'com.amazonaws:aws-java-sdk-s3' - testCompile group: 'junit', name: 'junit', version: '4.11' - } + dependencies { + compile 'com.amazonaws:aws-java-sdk-s3' + testCompile group: 'junit', name: 'junit', version: '4.11' + } Gradle will automatically resolve the correct version of your SDK dependencies using the information from the BOM. diff --git a/doc_source/signup-create-iam-user.rst b/doc_source/signup-create-iam-user.rst index 0f3f052..918b8cc 100644 --- a/doc_source/signup-create-iam-user.rst +++ b/doc_source/signup-create-iam-user.rst @@ -8,6 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. +.. includes that start with 'common/' come from the awsdocs shared content, at + https://github.com/awsdocs/aws-doc-shared-content + ###################################### Sign Up for AWS and Create an IAM User ###################################### @@ -20,40 +23,14 @@ access credentials instead of using your root account credentials. see :iam-ug:`Overview of Identity Management: Users ` in the |IAM-ug|. -**To sign up for AWS** - -1. Open http://aws.amazon.com/ and click :guilabel:`Sign Up`. - -2. Follow the on-screen instructions. Part of the sign-up procedure involves receiving a phone call - and entering a PIN using your phone keypad. +.. include:: common/procedure-sign-up-for-aws.txt Next, create an IAM user and download (or copy) its secret access key. -**To create an IAM user** - -#. Go to the :console:`IAM console ` (you may need to sign in to AWS first). - -#. Click :guilabel:`Users` in the sidebar to view your IAM users. - -#. If you don't have any IAM users set up, click :guilabel:`Create New Users` to create one. - -#. Select the IAM user in the list that you'll use to access AWS. - -#. Open the :guilabel:`Security Credentials` tab, and click :guilabel:`Create Access Key`. - - .. note:: You can have a maximum of two active access keys for any given IAM user. If your IAM - user has two access keys already, then you'll need to delete one of them before creating a - new key. - -#. On the resulting dialog, click the :guilabel:`Download Credentials` button to download the - credential file to your computer, or click :guilabel:`Show User Security Credentials` to view - the IAM user's access key ID and secret access key (which you can copy and paste). - - .. important:: There is no way to obtain the secret access key once you close the dialog. You - can, however, delete its associated access key ID and create a new one. +.. include:: common/procedure-create-iam-user.txt -Next, you should :doc:`set your credentials ` in the AWS shared credentials file or in -the environment. +Next, you should :doc:`set your credentials ` in the AWS shared credentials file +or in the environment. .. tip:: If you use the Eclipse IDE, you should consider installing the |tke|_ and providing your credentials as described in :tke-ug:`Set up AWS Credentials ` in the |tke-ug|. diff --git a/doc_source/welcome.rst b/doc_source/welcome.rst index 3fcd057..35953fe 100644 --- a/doc_source/welcome.rst +++ b/doc_source/welcome.rst @@ -99,20 +99,20 @@ The easiest way to build the documentation is using Apache's Maven_ build tool. install Maven first if you don't already have it on your system*, then use the following instructions to build the reference documentation. -**To build reference documentation for an old SDK version** +.. topic:: To build reference documentation for an old SDK version -#. Locate and select the SDK version that you're using on the :github:`releases - ` page of the SDK repository on GitHub. + #. Locate and select the SDK version that you're using on the :github:`releases + ` page of the SDK repository on GitHub. -#. Choose either the ``zip`` (most platforms, including Windows) or ``tar.gz`` (unix-like platforms - such as OS X or Linux) link to download the SDK to your computer. + #. Choose either the :file:`zip` (most platforms, including Windows) or :file:`tar.gz` + (|unixes|) link to download the SDK to your computer. -#. Unpack the archive to a local directory. + #. Unpack the archive to a local directory. -#. On the command-line, navigate to the directory where you unpacked the archive, and type:: + #. On the command-line, navigate to the directory where you unpacked the archive, and type:: - mvn javadoc:javadoc + mvn javadoc:javadoc -#. After building is complete, you'll find the generated HTML documentation in the - :file:`aws-java-sdk/target/site/apidocs/` directory. + #. After building is complete, you'll find the generated HTML documentation in the + :file:`aws-java-sdk/target/site/apidocs/` directory. From 2f1a8f1f8983b515ba274af20bd76504817809f3 Mon Sep 17 00:00:00 2001 From: Eron Hennessey Date: Tue, 8 Nov 2016 11:17:32 -0800 Subject: [PATCH 016/225] updates for credentials topic --- doc_source/credentials.rst | 90 +++++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 41 deletions(-) diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 4d578c8..1065631 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -38,29 +38,37 @@ attempt to find AWS credentials using the :emphasis:`default credential provider by the :java-api:`DefaultAWSCredentialsProviderChain ` class. The default credential provider chain looks for credentials in this order: -1. **Environment Variables** |ndash| :envvar:`AWS_ACCESS_KEY_ID` and - :envvar:`AWS_SECRET_ACCESS_KEY`. The |sdk-java| uses the - :java-api:`EnvironmentVariableCredentialsProvider ` - class to load these credentials. +#. **Environment Variables** |ndash| :envvar:`AWS_ACCESS_KEY_ID` and + :envvar:`AWS_SECRET_ACCESS_KEY`. The |sdk-java| uses the + :java-api:`EnvironmentVariableCredentialsProvider ` + class to load these credentials. -2. **Java System Properties** |ndash| :code:`aws.accessKeyId` and :code:`aws.secretKey`. The - |sdk-java| uses the :java-api:`SystemPropertiesCredentialsProvider - ` to load these credentials. +#. **Java System Properties** |ndash| :code:`aws.accessKeyId` and :code:`aws.secretKey`. The + |sdk-java| uses the :java-api:`SystemPropertiesCredentialsProvider + ` to load these credentials. -3. **The default credential profiles file** |ndash| typically located at - :file:`~/.aws/credentials` (this location may vary per platform), this credentials file is - shared by many of the AWS SDKs and by the AWS CLI. The |sdk-java| uses the - :java-api:`ProfileCredentialsProvider ` to load these - credentials. +#. **The default credential profiles file** |ndash| typically located at :file:`~/.aws/credentials` + (this location may vary per platform), this credentials file is shared by many of the AWS SDKs + and by the AWS CLI. The |sdk-java| uses the :java-api:`ProfileCredentialsProvider + ` to load these credentials. - You can create a credentials file by using the :code:`aws configure` command provided by the AWS - CLI, or you can create it by hand-editing the file with a text editor. For information about the - credentials file format, see :ref:`credentials-file-format`. + You can create a credentials file by using the :code:`aws configure` command provided by the AWS + CLI, or you can create it by hand-editing the file with a text editor. For information about the + credentials file format, see :ref:`credentials-file-format`. -4. **Instance profile credentials** |ndash| these credentials can be used on EC2 instances, and are - delivered through the Amazon EC2 metadata service. The |sdk-java| uses the - :java-api:`InstanceProfileCredentialsProvider ` to load - these credentials. +#. **Amazon ECS container credentials** |ndash| loaded from the |ECSlong| if the environment + variable :envvar:`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` is set. The |sdk-java| uses the + :java-api:`ContainerCredentialsProvider ` to load these + credentials. + +#. **Instance profile credentials** |ndash| used on EC2 instances, and delivered through the |EC2| + metadata service. The |sdk-java| uses the :java-api:`InstanceProfileCredentialsProvider + ` to load these credentials. + + .. note:: Instance profile credentials are used only if + :envvar:`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` is not set. See + :java-api:`EC2ContainerCredentialsProviderWrapper + ` for more information. Setting Credentials @@ -69,15 +77,15 @@ Setting Credentials AWS credentials must be set in :emphasis:`at least one` of the preceding locations in order to be used. For information about setting credentials, visit one of the following topics: -* For information about specifying credentials in the :emphasis:`environment` or in the default - :emphasis:`credential profiles file`, see :doc:`setup-credentials`. +* For information about specifying credentials in the :emphasis:`environment` or in the default + :emphasis:`credential profiles file`, see :doc:`setup-credentials`. -* For information about setting Java :emphasis:`system properties`, see the `System Properties - `_ tutorial on the - official :title:`Java Tutorials` website. +* For information about setting Java :emphasis:`system properties`, see the `System Properties + `_ tutorial on the + official :title:`Java Tutorials` website. -* For information about how to set up and use :emphasis:`instance profile credentials` for use - with your EC2 instances, see :doc:`java-dg-roles`. +* For information about how to set up and use :emphasis:`instance profile credentials` for use with + your EC2 instances, see :doc:`java-dg-roles`. Setting an Alternate Credentials Profile ---------------------------------------- @@ -153,16 +161,16 @@ Loading Credentials Once credentials have been set, you can load them using the default credential provider chain. -:emphasis:`To load credentials using the default credential provider chain` - -* Instantiate an AWS Service client without explicitly providing credentials to the builder. For example: +.. topic:: To load credentials using the default credential provider chain - .. code-block:: java + * Instantiate an AWS Service client without explicitly providing credentials to the builder. For + example: - AmazonS3 s3Client = AmazonS3ClientBuilder.standard() - .withRegion(Regions.US_WEST_2) - .build(); + .. code-block:: java + AmazonS3 s3Client = AmazonS3ClientBuilder.standard() + .withRegion(Regions.US_WEST_2) + .build(); .. _credentials-specify-provider: @@ -173,17 +181,17 @@ Specifying a Credential Provider or Provider Chain If you want to specify a different credential provider than the :emphasis:`default` credential provider chain, you can specify it via the client builder. -:emphasis:`To specify a specific credentials provider` +.. topic:: To specify a specific credentials provider -* Provide an instance of a credentials provider or provider chain to a client builder - that takes an :java-api:`AWSCredentialsProvider ` interface as input. - For example, to use :emphasis:`environment` credentials specifically: + * Provide an instance of a credentials provider or provider chain to a client builder that takes + an :java-api:`AWSCredentialsProvider ` interface as input. For + example, to use :emphasis:`environment` credentials specifically: - .. code-block:: java + .. code-block:: java - AmazonS3 s3Client = AmazonS3ClientBuilder.standard() - .withCredentials(new EnvironmentVariableCredentialsProvider()) - .build(); + AmazonS3 s3Client = AmazonS3ClientBuilder.standard() + .withCredentials(new EnvironmentVariableCredentialsProvider()) + .build(); For the full list of |sdk-java|-supplied credential providers and provider chains, see the list of "All known implementing classes" in the reference topic for :java-api:`AWSCredentialsProvider From f759f74621e954735b19e3607d1e08e9d2a1c159 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Wed, 23 Nov 2016 14:35:09 -0800 Subject: [PATCH 017/225] updates for a couple of topics --- doc_source/java-dg-access-control.rst | 69 +++++-------- doc_source/java-dg-roles.rst | 137 ++++++++++++++------------ 2 files changed, 100 insertions(+), 106 deletions(-) diff --git a/doc_source/java-dg-access-control.rst b/doc_source/java-dg-access-control.rst index 74255a7..d4c2529 100644 --- a/doc_source/java-dg-access-control.rst +++ b/doc_source/java-dg-access-control.rst @@ -12,40 +12,30 @@ Access Control Policies ####################### -AWS access control policies allow you to specify fine-grained access controls on your AWS resources. -You can allow or deny access to your AWS resources based on: +AWS *access control policies* allow you to specify fine-grained access controls on your AWS +resources. An access control policy consists of a collection of *statements*, which take the form: -* what :emphasis:`resource` is being accessed. + *Account A* has permission to perform *action B* on *resource C* where *condition D* applies. -* who is accessing the resource (i.e., the principal). +Where: -* what action is being taken on the resource. +* *A* is the *principal* |ndash| The AWS account that is making a request to access or modify one of + your AWS resources. -* a variety of other conditions including date restrictions, IP address restrictions, etc. +* *B* is the *action* |ndash| The way in which your AWS resource is being accessed or modified, such + as sending a message to an |SQS| queue, or storing an object in an |S3| bucket. -Access control policies are a collection of statements. Each statement takes the form: "A has -permission to do B to C where D applies". +* *C* is the *resource* |ndash| The AWS entity that the principal wants to access, such as an |SQS| + queue, or an object stored in |S3|. -:emphasis:`A is the principal` - The AWS account that is making a request to access or modify one of your AWS resources. +* *D* is a *set of conditions* |ndash| The optional constraints that specify when to allow or deny + access for the principal to access your resource. Many expressive conditions are available, some + specific to each service. For example, you can use date conditions to allow access to your + resources only after or before a specific time. -:emphasis:`B is the action` - The way in which your AWS resource is being accessed or modified, such as sending a message to - an Amazon SQS queue, or storing an object in an Amazon S3 bucket. -:emphasis:`C is the resource` - Your AWS entity that the principal wants to access, such as an Amazon SQS queue, or an object - stored in Amazon S3. - -:emphasis:`D is the set of conditions` - The optional constraints that specify when to allow or deny access for the principal to access - your resource. Many expressive conditions are available, some specific to each service. For - example, you can use date conditions to allow access to your resources only after or before a - specific time. - - -Amazon S3 Example -================= +|S3| Example +============ The following example demonstrates a policy that allows anyone access to read all the objects in a bucket, but restricts access to uploading objects to that bucket to two specific AWS accounts (in @@ -69,18 +59,13 @@ addition to the bucket owner's account). s3.setBucketPolicy(myBucketName, policy.toJson()); -Amazon SQS Example -================== +|SQS| Example +============= -One common use of policies is to authorize an Amazon SQS queue to receive messages from an Amazon -SNS topic. +One common use of policies is to authorize an |SQS| queue to receive messages from an |SNS| topic. .. code-block:: java - /* - * This policy allows an SNS topic to send messages to an SQS queue. - * You can find your SNS topic's ARN through the SNS getTopicAttributes operation. - */ Policy policy = new Policy().withStatements( new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) @@ -94,21 +79,15 @@ SNS topic. sqs.setQueueAttributes(new SetQueueAttributesRequest(myQueueUrl, queueAttributes)); -Amazon SNS Example -================== +|SNS| Example +============= -Some services offer additional conditions that can be used in policies. Amazon SNS provides -conditions for allowing or denying subscriptions to SNS topics based on the protocol (e.g., email, -HTTP, HTTPS, SQS) and endpoint (e.g., email address, URL, SQS ARN) of the request to subscribe to a -topic. +Some services offer additional conditions that can be used in policies. |SNS| provides conditions +for allowing or denying subscriptions to SNS topics based on the protocol (e.g., email, HTTP, HTTPS, +|SQS|) and endpoint (e.g., email address, URL, |SQS| ARN) of the request to subscribe to a topic. .. code-block:: java - /* - * This SNS condition allows you to restrict subscriptions to an Amazon SNS topic - * based on the requested endpoint (email address, SQS queue ARN, etc.) used when - * someone tries to subscribe to your SNS topic. - */ Condition endpointCondition = SNSConditionFactory.newEndpointCondition("*@mycompany.com"); diff --git a/doc_source/java-dg-roles.rst b/doc_source/java-dg-roles.rst index 91db9b6..7b01191 100644 --- a/doc_source/java-dg-roles.rst +++ b/doc_source/java-dg-roles.rst @@ -8,16 +8,16 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -############################################################## -Using IAM Roles to Grant Access to AWS Resources on Amazon EC2 -############################################################## +########################################################### +Using |IAM| Roles to Grant Access to AWS Resources on |EC2| +########################################################### All requests to Amazon Web Services (AWS) must be cryptographically signed using credentials issued by AWS. You can use :emphasis:`IAM roles` to conveniently grant secure access to AWS resources from -your EC2 instances. +your |EC2| instances. -This topic provides information about how to use IAM roles with Java SDK applications running on -EC2. For more information about IAM instances, see :ec2-ug:`IAM Roles for Amazon EC2 +This topic provides information about how to use |IAM| roles with Java SDK applications running on +|EC2|. For more information about |IAM| instances, see :ec2-ug:`IAM Roles for Amazon EC2 ` in the |EC2-ug|. @@ -29,32 +29,34 @@ The default provider chain and EC2 instance profiles If your application creates an AWS client using the default constructor, then the client will search for credentials using the :emphasis:`default credentials provider chain`, in the following order: -1. In system environment variables: :code:`AWS_ACCESS_KEY_ID` and :code:`AWS_SECRET_ACCESS_KEY`. +1. In system environment variables: :code:`AWS_ACCESS_KEY_ID` and :code:`AWS_SECRET_ACCESS_KEY`. -2. In the Java system properties: :code:`aws.accessKeyId` and :code:`aws.secretKey`. +2. In the Java system properties: :code:`aws.accessKeyId` and :code:`aws.secretKey`. -3. In the default credentials file (the location of this file varies by platform). +3. In the default credentials file (the location of this file varies by platform). -4. In the :emphasis:`instance profile credentials`, which exist within the instance metadata - associated with the IAM role for the EC2 instance. +4. In the :emphasis:`instance profile credentials`, which exist within the instance metadata + associated with the IAM role for the EC2 instance. The final step in the default provider chain is available only when running your application on an -EC2 instance, but provides the greatest ease of use and best security when working with EC2 -instances. You can also pass an InstanceProfileCredentialsProvider instance directly to the client -constructor to get instance profile credentials without proceeding through the entire default -provider chain. For example: +|EC2| instance, but provides the greatest ease of use and best security when working with |EC2| +instances. You can also pass an :java-api:`InstanceProfileCredentialsProvider +` instance directly to the client constructor +to get instance profile credentials without proceeding through the entire default provider chain. + +For example: .. code-block:: java - AmazonS3 s3Client = AmazonS3ClientBuilder.standard() - .withCredentials(new InstanceProfileCredentialsProvider()) - .build(); + AmazonS3 s3 = AmazonS3ClientBuilder.standard() + .withCredentials(new InstanceProfileCredentialsProvider()) + .build(); -When using this approach, the SDK will retrieve temporary AWS credentials that have the same -permissions as those associated with the IAM role associated with the EC2 instance in its instance -profile. Although these credentials are temporary and would eventually expire, -InstanceProfileCredentialsProvider will periodically refresh them for you so that the obtained -credentials continue to allow access to AWS. +When using this approach, the SDK retrieves temporary AWS credentials that have the same +permissions as those associated with the |IAM| role associated with the |EC2| instance in its +instance profile. Although these credentials are temporary and would eventually expire, +:classname:`InstanceProfileCredentialsProvider` periodically refreshes them for you so that the +obtained credentials continue to allow access to AWS. .. important:: The automatic credentials refresh happens :emphasis:`only` when you use the default client constructor, which creates its own :code:`InstanceProfileCredentialsProvider` as part of @@ -63,7 +65,7 @@ credentials continue to allow access to AWS. profile credentials, you are responsible for checking for and refreshing expired credentials. If the client constructor can't find credentials using the credentials provider chain, it will throw -an AmazonClientException. +an :java-api:`AmazonClientException `. .. _roles-walkthrough: @@ -84,20 +86,20 @@ Create an IAM role that grants read-only access to |S3|. .. topic:: To create the IAM role - #. Open the IAM console. + #. Open the :console:`IAM console `. - #. In the navigation pane, click :guilabel:`Roles`, and then click :guilabel:`Create New Role`. + #. In the navigation pane, select :guilabel:`Roles`, then :guilabel:`Create New Role`. - #. Enter a name for the role, and then click :guilabel:`Next Step`. Remember this name, as - you'll need it when you launch your EC2 instance. + #. Enter a name for the role, then select :guilabel:`Next Step`. Remember this name, since + you'll need it when you launch your |EC2| instance. #. On the :guilabel:`Select Role Type` page, under :guilabel:`AWS Service Roles`, select :guilabel:`Amazon EC2`. #. On the :guilabel:`Set Permissions` page, under :guilabel:`Select Policy Template`, select - :guilabel:`Amazon S3 Read Only Access`. Click :guilabel:`Next Step`. + :guilabel:`Amazon S3 Read Only Access`, then :guilabel:`Next Step`. - #. On the :guilabel:`Review` page, click :guilabel:`Create Role`. + #. On the :guilabel:`Review` page, select :guilabel:`Create Role`. .. _java-dg-launch-ec2-instance-with-instance-profile: @@ -105,15 +107,19 @@ Create an IAM role that grants read-only access to |S3|. Launch an EC2 Instance and Specify Your IAM Role ------------------------------------------------ -You can launch an EC2 instance with an IAM role using the |EC2| console or the |sdk-java|. +You can launch an |EC2| instance with an |IAM| role using the |EC2| console or the |sdk-java|. + +* To launch an |EC2| instance using the console, follow the directions in :ec2-ug:`Launch an EC2 + Instance ` in the |EC2-ug|. + + When you reach the :guilabel:`Review Instance Launch` page, select :guilabel:`Edit instance + details`. In :guilabel:`IAM role`, choose the |IAM| role that you created previously. Complete the + procedure as directed. -* To launch an EC2 instance using the console, follow the directions in :ec2-ug:`Launch an EC2 - Instance ` in the |EC2-ug|. When you reach the :guilabel:`Review - Instance Launch` page, click :guilabel:`Edit instance details`. In :guilabel:`IAM role`, specify - the IAM role that you created previously. Complete the procedure as directed. Notice that you'll - need to create or use an existing security group and key pair in order to connect to the instance. + .. note:: You'll need to create or use an existing security group and key pair to connect to the + instance. -* To launch an EC2 instance with an IAM role using the |sdk-java|, see :doc:`run-instance`. +* To launch an |EC2| instance with an |IAM| role using the |sdk-java|, see :doc:`run-instance`. .. _java-dg-remove-the-credentials: @@ -129,7 +135,8 @@ Next, copy the |sdk-java| libraries into your newly-created directory. If you do .. code-block:: sh - cp -r ~/Downloads/aws-java-sdk-{1.7.5}/lib . cp -r ~/Downloads/aws-java-sdk-{1.7.5}/third-party . + cp -r ~/Downloads/aws-java-sdk-{1.7.5}/lib . + cp -r ~/Downloads/aws-java-sdk-{1.7.5}/third-party . Open a new file, call it :file:`GetS3Ojbect.java`, and add the following code: @@ -167,12 +174,8 @@ Therefore, unless you have your AWS credentials specified already, the code will Transfer the Compiled Program to Your EC2 Instance -------------------------------------------------- -Transfer the program to your EC2 instance using secure copy (scp), along with the |sdk-java| -libraries. The sequence of commands looks something like the following. Depending on the Linux -distribution that you used, the user name might be "ec2-user", "root", or "ubuntu". To get the -public DNS name of your instance, select it in the |EC2| console, and then look for -:guilabel:`Public DNS` in the :guilabel:`Description` tab (for example, -ec2-198-51-100-1.compute-1.amazonaws.com). +Transfer the program to your |EC2| instance using secure copy (:command:`scp`), along with the +|sdk-java| libraries. The sequence of commands looks something like the following. .. code-block:: sh @@ -181,20 +184,33 @@ ec2-198-51-100-1.compute-1.amazonaws.com). scp -r -p -i {my-key-pair}.pem lib ec2-user@{public_dns}:lib scp -r -p -i {my-key-pair}.pem third-party ec2-user@{public_dns}:third-party -In the preceding commands, :code:`GetS3Object.class` is your compiled program, :code:`build.xml` is -the ant file used to build and run your program, and the :code:`lib` and :code:`third-party` -directories are the corresponding library folders from the |sdk-java|. +.. note:: Depending on the Linux distribution that you used, the *user name* might be "ec2-user", + "root", or "ubuntu". To get the public DNS name of your instance, open the :console:`EC2 + console ` and look for the :guilabel:`Public DNS` value in the :guilabel:`Description` tab + (for example, :code:`ec2-198-51-100-1.compute-1.amazonaws.com`). -The :code:`-r` switch indicates that :literal:`scp` should do a recursive copy of all of the -contents of the library and third-party directories from the |sdk-java|. +In the preceding commands: -The :code:`-p` switch indicates that :literal:`scp` should preserve the permissions of the source -files when it copies them to the destination. If you are copying the files from Windows, you might -need to fix the permissions on your instance using the following command: +* :code:`GetS3Object.class` is your compiled program -.. code-block:: sh +* :code:`build.xml` is the ant file used to build and run your program + +* the :code:`lib` and :code:`third-party` directories are the corresponding library folders from the + |sdk-java|. + +* The :code:`-r` switch indicates that :literal:`scp` should do a recursive copy of all of the + contents of the :file:`library` and :file:`third-party` directories in the |sdk-java| + distribution. + +* The :code:`-p` switch indicates that :literal:`scp` should preserve the permissions of the source + files when it copies them to the destination. + + .. tip:: The :code:`-p` switch works only on |unixes|. If you are copying files from Windows, you + may need to fix the file permissions on your instance using the following command: + + .. code-block:: sh - chmod -R u+rwx GetS3Object.class build.xml lib third-party + chmod -R u+rwx GetS3Object.class build.xml lib third-party .. _java-dg-run-the-program: @@ -202,21 +218,20 @@ need to fix the permissions on your instance using the following command: Run the Sample Program on the EC2 Instance ------------------------------------------ -To run the program, connect to your EC2 instance. For more information, see :ec2-ug:`Connect to Your -Linux Instance ` in the |EC2-ug|. +To run the program, connect to your |EC2| instance. For more information, see :ec2-ug:`Connect to +Your Linux Instance ` in the |EC2-ug|. -If ant is not installed on your instance, you can install it using the `yum -`_ installer as follows: +If :command:`ant` is not available on your instance, install it using the following command: .. code-block:: sh - sudo yum install ant + sudo yum install ant -Run the program using :code:`ant` as follows: +Then, run the program using :code:`ant` as follows: .. code-block:: sh - ant run + ant run The program will write the contents of your |S3| object to your command window. From 5816b3f0613372798f2dbdf918466e15cbe8f879 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Sun, 11 Dec 2016 17:00:35 -0800 Subject: [PATCH 018/225] many fixes for broken links --- .gitignore | 1 + doc_source/_includes.txt | 10 +- doc_source/basics-async.rst | 6 +- doc_source/conf.py | 25 ++-- doc_source/create-key-pair.rst | 23 ++- doc_source/create-security-group.rst | 135 +++++++++--------- doc_source/creating-clients.rst | 12 +- doc_source/credentials.rst | 32 ++--- doc_source/examples/s3/buckets.rst | 16 +-- doc_source/examples/s3/objects.rst | 22 +-- doc_source/java-dg-access-control.rst | 17 +-- doc_source/java-dg-exceptions.rst | 6 +- doc_source/java-dg-region-selection.rst | 6 +- doc_source/java-dg-roles.rst | 12 +- doc_source/java-dg-samples.rst | 4 +- doc_source/java-dg-tomcat-session-manager.rst | 2 +- doc_source/prog-services-sts.rst | 115 +++++++-------- doc_source/prog-services-swf-list-domains.rst | 28 ++-- .../prog-services-swf-register-domain.rst | 8 +- doc_source/run-instance.rst | 77 +++++----- doc_source/section-client-configuration.rst | 40 +++--- doc_source/setup-install.rst | 2 +- doc_source/setup-project-gradle.rst | 50 ++++--- doc_source/swf-basics.rst | 4 +- doc_source/swf-hello.rst | 46 +++--- doc_source/swf-lambda-task.rst | 22 +-- doc_source/tutorial-spot-adv-java.rst | 14 +- doc_source/tutorial-spot-instances-java.rst | 67 +++++++-- doc_source/welcome.rst | 8 +- 29 files changed, 433 insertions(+), 377 deletions(-) diff --git a/.gitignore b/.gitignore index 71055ef..c7b77bf 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ README.html doc_build/ doc_output/ build_dependencies/ +*.swp diff --git a/doc_source/_includes.txt b/doc_source/_includes.txt index 31d44d5..449c128 100644 --- a/doc_source/_includes.txt +++ b/doc_source/_includes.txt @@ -1,16 +1,16 @@ .. project-specific includes for this project. -.. |sdk-java-dl| replace:: http://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip +.. |sdk-java-dl| replace:: https://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip .. |sdk-java-github| replace:: AWS SDK for Java (GitHub) -.. _sdk-java-github: http://github.com/aws/aws-sdk-java +.. _sdk-java-github: https://github.com/aws/aws-sdk-java .. |mvn| replace:: Maven .. |mvnlong| replace:: Apache |mvn| -.. _Gradle: http://gradle.com/ -.. _Maven: http://maven.apache.org/ +.. _Gradle: https://gradle.com/ +.. _Maven: https://maven.apache.org/ .. _mvn: Maven_ .. _mvnlong: Maven_ -.. |s3client| replace:: :java-api:`AmazonS3 ` +.. |s3client| replace:: :aws-java-class:`AmazonS3 ` diff --git a/doc_source/basics-async.rst b/doc_source/basics-async.rst index a64d40f..5ade8f1 100644 --- a/doc_source/basics-async.rst +++ b/doc_source/basics-async.rst @@ -34,7 +34,7 @@ yet. Once the response is ready, you can get the response object by calling the operation's results while your application continues to work on other things. Here is an example of an asynchronous operation that calls a |LAM| function, receiving a Future that -can hold an :java-api:`InvokeResult ` object. The +can hold an :aws-java-class:`InvokeResult ` object. The :classname:`InvokeResult` object is retrieved only after :methodname:`isDone()` is ``true``: .. literalinclude:: snippets/lambda_invoke_example/src/main/java/example/lambda/InvokeLambdaFunctionAsync.java @@ -47,7 +47,7 @@ Asynchronous Callbacks ====================== In addition to using Java Futures to monitor the status of asynchronous requests, the SDK also -allows you to implement a class that uses the :java-api:`AsyncHandler ` +allows you to implement a class that uses the :aws-java-class:`AsyncHandler ` interface, which provides two methods that are called depending on how the request completed: :methodname:`onSuccess` and :methodname:`onError`. @@ -93,7 +93,7 @@ are named, or to log additional information about thread usage. Amazon S3 Asynchronous Access ----------------------------- -The :java-api:`TransferManager ` class in the SDK +The :aws-java-class:`TransferManager ` class in the SDK offers asynchronous support for working with the |S3long| (|S3|). :classname:`TransferManager` manages asynchronous uploads and downloads, provides detailed progress reporting on transfers, and supports callbacks into different events. diff --git a/doc_source/conf.py b/doc_source/conf.py index ae90c21..bcff147 100644 --- a/doc_source/conf.py +++ b/doc_source/conf.py @@ -373,17 +373,26 @@ extlinks = {} # These URLs make maintaining the extlinks easier. -java_api_url = 'http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/' -javase_api_url = 'http://docs.oracle.com/javase/7/docs/api/' +aws_java_api_url = 'https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/' +javase_api_url = 'https://docs.oracle.com/javase/8/docs/api/' javadoc_f = 'index.html?%s.html' # javadoc link + frames javadoc_nf = '%s.html' # javadoc link - frames # extlinks['role'] = (url_string, term_prepended_by) -extlinks['java-api'] = (java_api_url + 'index.html?com/amazonaws/%s.html', '') -extlinks['java-ref'] = (java_api_url + javadoc_f, '') -extlinks['java-ref-nf'] = (java_api_url + javadoc_nf, '') + +# a generic link to the AWS SDK reference docs. Doesn't work well in a frame. +extlinks['aws-java-ref'] = (aws_java_api_url + 'com/amazonaws/%s', '') + +# a link to a class within the AWS SDK -- can use frames. +extlinks['aws-java-class'] = (aws_java_api_url + (javadoc_f % 'com/amazonaws/%s'), '') + +# links to the Java SE documentation. extlinks['javase-ref'] = (javase_api_url + javadoc_f, '') extlinks['javase-ref-nf'] = (javase_api_url + javadoc_nf, '') -extlinks['sdk-examples-java'] = ( - 'https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/java/example_code/s3/src/main/java/aws/example/%s', - '') + +# links to examples for a particular service (ex: :sdk-examples-java-s3:`ListTables.java`) +samples_url = 'https://github.com/awsdocs/aws-doc-sdk-examples/' +for svc in ['s3', 'dynamodb']: + extlinks['sdk-examples-java-%s' % svc] = (samples_url + + 'blob/master/java/example_code/{svc}/src/main/java/aws/example/{svc}/'.format(svc=svc) + + '%s', '') diff --git a/doc_source/create-key-pair.rst b/doc_source/create-key-pair.rst index 51719a8..d376245 100644 --- a/doc_source/create-key-pair.rst +++ b/doc_source/create-key-pair.rst @@ -19,9 +19,9 @@ Pairs ` in the |EC2-ug|. .. topic:: To create a key pair and save the private key - #. Create and initialize a :java-api:`CreateKeyPairRequest - ` instance. Use the :java-ref:`withKeyName - ` + #. Create and initialize a :aws-java-class:`CreateKeyPairRequest + ` instance. Use the :aws-java-ref:`withKeyName + ` method to set the key pair name, as follows: .. code-block:: java @@ -33,9 +33,9 @@ Pairs ` in the |EC2-ug|. .. important:: Key pair names must be unique. If you attempt to create a key pair with the same key name as an existing key pair, you'll get an exception. - #. Pass the request object to the :java-ref:`createKeyPair - ` - method. The method returns a :java-api:`CreateKeyPairResult + #. Pass the request object to the :aws-java-ref:`createKeyPair + ` + method. The method returns a :aws-java-class:`CreateKeyPairResult ` instance, as follows: .. code-block:: java @@ -43,12 +43,11 @@ Pairs ` in the |EC2-ug|. CreateKeyPairResult createKeyPairResult = amazonEC2Client.createKeyPair(createKeyPairRequest); - #. Call the result object's :java-ref:`getKeyPair - ` method to - obtain a :java-api:`KeyPair ` object. Call the :code:`KeyPair` - object's :java-ref:`getKeyMaterial - ` method to obtain the - unencrypted PEM-encoded private key, as follows: + #. Call the result object's :aws-java-ref:`getKeyPair + ` method to obtain a + :aws-java-class:`KeyPair ` object. Call the :code:`KeyPair` + object's :aws-java-ref:`getKeyMaterial ` + method to obtain the unencrypted PEM-encoded private key, as follows: .. code-block:: java diff --git a/doc_source/create-security-group.rst b/doc_source/create-security-group.rst index 67a44e4..fbb1f42 100644 --- a/doc_source/create-security-group.rst +++ b/doc_source/create-security-group.rst @@ -28,34 +28,34 @@ EC2 Security Groups ` in the |EC2-ug|. .. topic:: To create a security group - #. Create and initialize a :java-api:`CreateSecurityGroupRequest - ` instance. Use the :java-ref:`withGroupName - ` - method to set the security group name, and the :java-ref:`withDescription - ` - method to set the security group description, as follows: + #. Create and initialize a :aws-java-class:`CreateSecurityGroupRequest + ` instance. Use the + :aws-java-ref:`withGroupName + ` method + to set the security group name, and the :aws-java-ref:`withDescription + ` + method to set the security group description, as follows: - .. code-block:: java + .. code-block:: java - CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest(); + CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest(); + csgr.withGroupName("JavaSecurityGroup").withDescription("My security group"); - csgr.withGroupName("JavaSecurityGroup").withDescription("My security group"); + The security group name must be unique within the AWS region in which you initialize your + |EC2| client. You must use US-ASCII characters for the security group name and description. - The security group name must be unique within the AWS region in which you initialize your |EC2| - client. You must use US-ASCII characters for the security group name and description. + #. Pass the request object as a parameter to the :aws-java-ref:`createSecurityGroup + ` + method. The method returns a :aws-java-class:`CreateSecurityGroupResult + ` object, as follows: - #. Pass the request object as a parameter to the :java-ref:`createSecurityGroup - ` - method. The method returns a :java-api:`CreateSecurityGroupResult - ` object, as follows: + .. code-block:: java - .. code-block:: java + CreateSecurityGroupResult createSecurityGroupResult = + amazonEC2Client.createSecurityGroup(createSecurityGroupRequest); - CreateSecurityGroupResult createSecurityGroupResult = - amazonEC2Client.createSecurityGroup(createSecurityGroupRequest); - - If you attempt to create a security group with the same name as an existing security group, - :code:`createSecurityGroup` throws an exception. + If you attempt to create a security group with the same name as an existing security group, + :code:`createSecurityGroup` throws an exception. By default, a new security group does not allow any inbound traffic to your |EC2| instance. To allow inbound traffic, you must explicitly authorize security group ingress. You can authorize ingress for @@ -64,64 +64,65 @@ ports. .. topic:: To authorize security group ingress - #. Create and initialize an :java-api:`IpPermission ` instance. - Use the :java-ref:`withIpRanges - ` method - to set the range of IP addresses to authorize ingress for, and use the :java-ref:`withIpProtocol - ` method to - set the IP protocol. Use the :java-ref:`withFromPort - ` and - :java-ref:`withToPort - ` methods to - specify range of ports to authorize ingress for, as follows: + #. Create and initialize an :aws-java-class:`IpPermission ` + instance. Use the :aws-java-ref:`withIpv4Ranges + ` method to set the + range of IP addresses to authorize ingress for, and use the :aws-java-ref:`withIpProtocol + ` method to set the IP + protocol. Use the :aws-java-ref:`withFromPort + ` and + :aws-java-ref:`withToPort + ` methods to specify + range of ports to authorize ingress for, as follows: - .. code-block:: java + .. code-block:: java - IpPermission ipPermission = - new IpPermission(); + IpPermission ipPermission = + new IpPermission(); - ipPermission.withIpRanges("111.111.111.111/32", "150.150.150.150/32") - .withIpProtocol("tcp") - .withFromPort(22) - .withToPort(22); + ipPermission.withIpRanges("111.111.111.111/32", "150.150.150.150/32") + .withIpProtocol("tcp") + .withFromPort(22) + .withToPort(22); - All the conditions that you specify in the :code:`IpPermission` object must be met in order for - ingress to be allowed. + All the conditions that you specify in the :code:`IpPermission` object must be met in order + for ingress to be allowed. - Specify the IP address using CIDR notation. If you specify the protocol as TCP/UDP, you must - provide a source port and a destination port. You can authorize ports only if you specify TCP or - UDP. + Specify the IP address using CIDR notation. If you specify the protocol as TCP/UDP, you must + provide a source port and a destination port. You can authorize ports only if you specify TCP + or UDP. - #. Create and initialize an :java-api:`AuthorizeSecurityGroupIngressRequest - ` instance. Use the - :code:`withGroupName` method to specify the security group name, and pass the - :code:`IpPermission` object you initialized earlier to the :java-ref:`withIpPermissions - ` - method, as follows: + #. Create and initialize an :aws-java-class:`AuthorizeSecurityGroupIngressRequest + ` instance. Use the + :code:`withGroupName` method to specify the security group name, and pass the + :code:`IpPermission` object you initialized earlier to the :aws-java-ref:`withIpPermissions + ` + method, as follows: - .. code-block:: java + .. code-block:: java - AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = - new AuthorizeSecurityGroupIngressRequest(); + AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = + new AuthorizeSecurityGroupIngressRequest(); - authorizeSecurityGroupIngressRequest.withGroupName("JavaSecurityGroup") - .withIpPermissions(ipPermission); + authorizeSecurityGroupIngressRequest.withGroupName("JavaSecurityGroup") + .withIpPermissions(ipPermission); - #. Pass the request object into the :java-ref:`authorizeSecurityGroupIngress - ` - method, as follows: + #. Pass the request object into the :aws-java-ref:`authorizeSecurityGroupIngress + ` + method, as follows: - .. code-block:: java + .. code-block:: java - amazonEC2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest); + amazonEC2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest); - If you call :code:`authorizeSecurityGroupIngress` with IP addresses for which ingress is already - authorized, the method throws an exception. Create and initialize a new :code:`IpPermission` - object to authorize ingress for different IPs, ports, and protocols before calling - :code:`AuthorizeSecurityGroupIngress`. + If you call :code:`authorizeSecurityGroupIngress` with IP addresses for which ingress is + already authorized, the method throws an exception. Create and initialize a new + :code:`IpPermission` object to authorize ingress for different IPs, ports, and protocols + before calling :code:`AuthorizeSecurityGroupIngress`. -Whenever you call the :code:`authorizeSecurityGroupIngress` or -:java-ref:`authorizeSecurityGroupEgress -` methods, a rule is -added to your security group. +Whenever you call the :aws-java-ref:`authorizeSecurityGroupIngress +` +or :aws-java-ref:`authorizeSecurityGroupEgress +` +methods, a rule is added to your security group. diff --git a/doc_source/creating-clients.rst b/doc_source/creating-clients.rst index 320e127..10f63d6 100644 --- a/doc_source/creating-clients.rst +++ b/doc_source/creating-clients.rst @@ -15,9 +15,9 @@ Creating Service Clients To make requests to |AWSlong|, you first create a service client object. The preferred way to do this is to use the service client builder. Each AWS service has a service interface that has methods for each action in the service API. For example, the service interface for |DDBlong| is named -:java-api:`AmazonDynamoDB `. Each service interface has a +:aws-java-class:`AmazonDynamoDB `. Each service interface has a corresponding client builder you can use to construct an implementation of the service interface. -The client builder class for |DDB| is named :java-api:`AmazonDynamoDBClientBuilder +The client builder class for |DDB| is named :aws-java-class:`AmazonDynamoDBClientBuilder `. To obtain an instance of the client builder, use the static factory method ``standard``, as shown in @@ -61,9 +61,9 @@ builder as a factory for client instances. } } -The builder also exposes fluent setters for :java-api:`ClientConfiguration `', -:java-api:`RequestMetricCollector `, and a custom list of -:java-api:`RequestHandler2 `. +The builder also exposes fluent setters for :aws-java-class:`ClientConfiguration `', +:aws-java-class:`RequestMetricCollector `, and a custom list of +:aws-java-class:`RequestHandler2 `. The following is a complete example that overrides all configurable properties. @@ -92,7 +92,7 @@ client builder for every service. .build(); In addition to the configuration options that the synchronous (or sync) client builder supports, the -async client allows you to set a custom :java-api:`ExecutorFactory ` +async client allows you to set a custom :aws-java-class:`ExecutorFactory ` to change the :classname:`ExecutorService` that the async client uses. :classname:`ExecutorFactory` is a functional interface, so it interoperates with Java 8 lambda expressions and method references. diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 1065631..41c70ab 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -23,8 +23,8 @@ There are a number of ways to do this: or temporary credentials retrieved from |STS|. .. important:: It is *strongly recommended*, from a security standpoint, that you *use IAM users* - instead of the root account for AWS access. For more information, see `IAM Best Practices - `_ in |iam-ug|. + instead of the root account for AWS access. For more information, see :iam-ug:`IAM Best Practices + ` in the |iam-ug|. This topic provides information about how to load credentials for AWS using the |sdk-java|. @@ -35,21 +35,21 @@ Using the Default Credential Provider Chain When you initialize a new service client without supplying any arguments, the |sdk-java| will attempt to find AWS credentials using the :emphasis:`default credential provider chain` implemented -by the :java-api:`DefaultAWSCredentialsProviderChain ` +by the :aws-java-class:`DefaultAWSCredentialsProviderChain ` class. The default credential provider chain looks for credentials in this order: #. **Environment Variables** |ndash| :envvar:`AWS_ACCESS_KEY_ID` and :envvar:`AWS_SECRET_ACCESS_KEY`. The |sdk-java| uses the - :java-api:`EnvironmentVariableCredentialsProvider ` + :aws-java-class:`EnvironmentVariableCredentialsProvider ` class to load these credentials. #. **Java System Properties** |ndash| :code:`aws.accessKeyId` and :code:`aws.secretKey`. The - |sdk-java| uses the :java-api:`SystemPropertiesCredentialsProvider + |sdk-java| uses the :aws-java-class:`SystemPropertiesCredentialsProvider ` to load these credentials. #. **The default credential profiles file** |ndash| typically located at :file:`~/.aws/credentials` (this location may vary per platform), this credentials file is shared by many of the AWS SDKs - and by the AWS CLI. The |sdk-java| uses the :java-api:`ProfileCredentialsProvider + and by the AWS CLI. The |sdk-java| uses the :aws-java-class:`ProfileCredentialsProvider ` to load these credentials. You can create a credentials file by using the :code:`aws configure` command provided by the AWS @@ -58,16 +58,16 @@ class. The default credential provider chain looks for credentials in this order #. **Amazon ECS container credentials** |ndash| loaded from the |ECSlong| if the environment variable :envvar:`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` is set. The |sdk-java| uses the - :java-api:`ContainerCredentialsProvider ` to load these + :aws-java-class:`ContainerCredentialsProvider ` to load these credentials. #. **Instance profile credentials** |ndash| used on EC2 instances, and delivered through the |EC2| - metadata service. The |sdk-java| uses the :java-api:`InstanceProfileCredentialsProvider + metadata service. The |sdk-java| uses the :aws-java-class:`InstanceProfileCredentialsProvider ` to load these credentials. .. note:: Instance profile credentials are used only if :envvar:`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` is not set. See - :java-api:`EC2ContainerCredentialsProviderWrapper + :aws-java-class:`EC2ContainerCredentialsProviderWrapper ` for more information. @@ -184,7 +184,7 @@ provider chain, you can specify it via the client builder. .. topic:: To specify a specific credentials provider * Provide an instance of a credentials provider or provider chain to a client builder that takes - an :java-api:`AWSCredentialsProvider ` interface as input. For + an :aws-java-class:`AWSCredentialsProvider ` interface as input. For example, to use :emphasis:`environment` credentials specifically: .. code-block:: java @@ -194,13 +194,13 @@ provider chain, you can specify it via the client builder. .build(); For the full list of |sdk-java|-supplied credential providers and provider chains, see the list of -"All known implementing classes" in the reference topic for :java-api:`AWSCredentialsProvider +"All known implementing classes" in the reference topic for :aws-java-class:`AWSCredentialsProvider `. .. tip:: You can use this technique to supply credential providers or provider chains that you create, by implementing your own credential provider that implements the :emphasis:`AWSCredentialsProvider` interface, or by sub-classing the - :java-api:`AWSCredentialsProviderChain ` class. + :aws-java-class:`AWSCredentialsProviderChain ` class. .. _credentials-explicit: @@ -215,11 +215,11 @@ temporary credentials using |STS|, use this method to specify the credentials fo .. topic:: To explicitly supply credentials to an AWS client: - #. Instantiate a class that provides the :java-api:`AWSCredentials ` - interface, such as :java-api:`BasicAWSCredentials `, supplying it + #. Instantiate a class that provides the :aws-java-class:`AWSCredentials ` + interface, such as :aws-java-class:`BasicAWSCredentials `, supplying it with the AWS access key and secret key you will use for the connection. - #. Create a :java-api:`AWSStaticCredentialsProvider ` with + #. Create a :aws-java-class:`AWSStaticCredentialsProvider ` with the AWSCredentials object. #. Configure the client builder with the AWSStaticCredentialsProvider and build the client. @@ -235,7 +235,7 @@ For example: .build(); When using :doc:`temporary credentials obtained from STS `, create a -:java-api:`BasicSessionCredentials ` object, passing it the +:aws-java-class:`BasicSessionCredentials ` object, passing it the STS-supplied credentials and session token: .. literalinclude:: snippets/sts_basic_session_creds.java diff --git a/doc_source/examples/s3/buckets.rst b/doc_source/examples/s3/buckets.rst index f788b6a..2a6e7fe 100644 --- a/doc_source/examples/s3/buckets.rst +++ b/doc_source/examples/s3/buckets.rst @@ -26,7 +26,7 @@ the the |s3-dg|. Create a bucket =============== -Use the |s3client| client's :methodname:`createBucket` method. The new :java-api:`Bucket +Use the |s3client| client's :methodname:`createBucket` method. The new :aws-java-class:`Bucket ` is returned. **Imports:** @@ -40,7 +40,7 @@ Use the |s3client| client's :methodname:`createBucket` method. The new :java-api :lines: 42-50 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _list-buckets: @@ -49,7 +49,7 @@ List buckets ============ Use the |s3client| client's :methodname:`listBucket` method. If successful, a List of -:java-api:`Bucket ` objects will be returned. +:aws-java-class:`Bucket ` objects will be returned. **Imports:** @@ -62,7 +62,7 @@ Use the |s3client| client's :methodname:`listBucket` method. If successful, a Li :lines: 31-36 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _delete-bucket: @@ -74,7 +74,7 @@ Before you can delete an |S3| bucket, you must ensure that the bucket is empty f will result. If you have a :S3-dg:`versioned bucket `, then you must also delete any versioned objects associated with the bucket. -.. note:: The :sdk-examples-java:`complete example ` includes each of these +.. note:: The :sdk-examples-java-s3:`complete example ` includes each of these steps in order, providing a complete solution for deleting an |S3| bucket and its contents. @@ -96,7 +96,7 @@ delete each one. :lines: 51, 53-70, 94-97 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. Removing objects from a versioned bucket prior to deletion @@ -120,7 +120,7 @@ objects and then :methodname:`deleteVersion` to delete each one. :lines: 51, 53-90, 94-97 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. Deleting an empty bucket @@ -140,5 +140,5 @@ bucket itself, use the |s3client| client's :methodname:`deleteBucket` method. :lines: 51, 53, 93-97 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. diff --git a/doc_source/examples/s3/objects.rst b/doc_source/examples/s3/objects.rst index cc8215a..0c22dbb 100644 --- a/doc_source/examples/s3/objects.rst +++ b/doc_source/examples/s3/objects.rst @@ -37,7 +37,7 @@ name, and file to upload. *The bucket must exist, or an error will result*. :lines: 46-52 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _list-objects: @@ -47,10 +47,10 @@ List objects To get a list of objects within a bucket, use the |s3client| client's :methodname:`listObjects` method, supplying it with the name of a bucket. -The :methodname:`listObjects` method returns an :java-api:`ObjectListing +The :methodname:`listObjects` method returns an :aws-java-class:`ObjectListing ` object that provides information about the objects in the bucket. To list the object names (keys), use the :methodname:`getObjectSummaries` method to get a List of -:java-api:`S3ObjectSummary ` objects, each of which represents a +:aws-java-class:`S3ObjectSummary ` objects, each of which represents a single object in the bucket, then call its :methodname:`getKey` method to retrieve the object's name. @@ -65,7 +65,7 @@ name. :lines: 45-50 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _download-object: @@ -73,12 +73,12 @@ Download an object ================== Use the |s3client| client's :methodname:`getObject` method, passing it the name of a bucket and -object to download. If successful, the method will return an :java-api:`S3Object +object to download. If successful, the method will return an :aws-java-class:`S3Object `. *The specified bucket and object key must exist, or an error will result*. You can get the object's contents by calling :methodname:`getObjectContent` on the -:classname:`S3Object`. This returns an :java-api:`S3ObjectInputStream +:classname:`S3Object`. This returns an :aws-java-class:`S3ObjectInputStream ` that behaves as a standard Java :classname:`InputStream` object. @@ -96,7 +96,7 @@ name as the object's key): :lines: 50-71 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _copy-object: @@ -118,7 +118,7 @@ and the destination bucket and name. :lines: 46-52 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. note:: You can use :methodname:`copyObject` with :ref:`deleteObject ` to **move** or **rename** an object, by first copying the object to a new name (you can use the same bucket @@ -144,7 +144,7 @@ object to delete. *The specified bucket and object key must exist, or an error w :lines: 47-53 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _delete-objects: @@ -153,7 +153,7 @@ Deleting multiple objects at once ================================= Using the |s3client| client's :methodname:`deleteObjects` method, you can delete multiple objects -from the same bucket by passing their names to the :java-api:`DeleteObjectRequest +from the same bucket by passing their names to the :aws-java-class:`DeleteObjectRequest ` :methodname:`withKeys` method. **Imports:** @@ -167,5 +167,5 @@ from the same bucket by passing their names to the :java-api:`DeleteObjectReques :lines: 52-60 :dedent: 8 -See the :sdk-examples-java:`complete example `. +See the :sdk-examples-java-s3:`complete example `. diff --git a/doc_source/java-dg-access-control.rst b/doc_source/java-dg-access-control.rst index d4c2529..1aaef53 100644 --- a/doc_source/java-dg-access-control.rst +++ b/doc_source/java-dg-access-control.rst @@ -19,14 +19,14 @@ resources. An access control policy consists of a collection of *statements*, wh Where: -* *A* is the *principal* |ndash| The AWS account that is making a request to access or modify one of - your AWS resources. +* *A* is the *principal* |ndash| The AWS account that is making a request to access or modify one + of your AWS resources. -* *B* is the *action* |ndash| The way in which your AWS resource is being accessed or modified, such - as sending a message to an |SQS| queue, or storing an object in an |S3| bucket. +* *B* is the *action* |ndash| The way in which your AWS resource is being accessed or modified, + such as sending a message to an |SQS| queue, or storing an object in an |S3| bucket. -* *C* is the *resource* |ndash| The AWS entity that the principal wants to access, such as an |SQS| - queue, or an object stored in |S3|. +* *C* is the *resource* |ndash| The AWS entity that the principal wants to access, such as an + |SQS| queue, or an object stored in |S3|. * *D* is a *set of conditions* |ndash| The optional constraints that specify when to allow or deny access for the principal to access your resource. Many expressive conditions are available, some @@ -83,8 +83,9 @@ One common use of policies is to authorize an |SQS| queue to receive messages fr ============= Some services offer additional conditions that can be used in policies. |SNS| provides conditions -for allowing or denying subscriptions to SNS topics based on the protocol (e.g., email, HTTP, HTTPS, -|SQS|) and endpoint (e.g., email address, URL, |SQS| ARN) of the request to subscribe to a topic. +for allowing or denying subscriptions to SNS topics based on the protocol (e.g., email, HTTP, +HTTPS, |SQS|) and endpoint (e.g., email address, URL, |SQS| ARN) of the request to subscribe to a +topic. .. code-block:: java diff --git a/doc_source/java-dg-exceptions.rst b/doc_source/java-dg-exceptions.rst index dbcecf2..6cc1b7e 100644 --- a/doc_source/java-dg-exceptions.rst +++ b/doc_source/java-dg-exceptions.rst @@ -38,13 +38,13 @@ For more information about the use of checked and unchecked exceptions, see the * `The Trouble with Checked Exceptions `_ * `Java's checked exceptions were a mistake (and here's what I would like to do about it) - `_ + `_ AmazonServiceException (and Subclasses) ======================================== -:java-api:`AmazonServiceException` is the most common exception that you'll experience when using +:aws-java-class:`AmazonServiceException` is the most common exception that you'll experience when using the |sdk-java|. This exception represents an error response from an AWS service. For example, if you try to terminate an |EC2| instance that doesn't exist, EC2 will return an error response and all the details of that error response will be included in the thrown :classname:`AmazonServiceException`. @@ -73,7 +73,7 @@ internal service error). AmazonClientException ===================== -:java-api:`AmazonClientException` indicates that a problem occurred inside the Java client code, +:aws-java-class:`AmazonClientException` indicates that a problem occurred inside the Java client code, either while trying to send a request to AWS or while trying to parse a response from AWS. :classname:`AmazonClientException` exceptions are generally more severe than :classname:`AmazonServiceException` exceptions and indicate a major problem that is preventing the diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index a3b77c8..0095573 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -28,10 +28,10 @@ To see if a particular AWS service is available in a region, use the Region.getRegion(Regions.US_WEST_2) .isServiceSupported(AmazonDynamoDB.ENDPOINT_PREFIX); -See the :java-api:`Regions ` class documentation to see which regions can be +See the :aws-java-class:`Regions ` class documentation to see which regions can be specified, and use the endpoint prefix of the service to query. Each service's endpoint prefix is defined in the service interface. For example, |DDB|'s endpoint prefix is defined in -:java-api:`AmazonDynamoDB `. +:aws-java-class:`AmazonDynamoDB `. .. _region-selection-choose-region: @@ -43,7 +43,7 @@ Beginning with version 1.4 of the |sdk-java|, you can specify a region name and automatically choose an appropriate endpoint for you. If you want to choose the endpoint yourself, see :ref:`region-selection-choose-endpoint`. -To explicitly set a region, it is recommended to use the :java-api:`Regions ` enum +To explicitly set a region, it is recommended to use the :aws-java-class:`Regions ` enum which is a enumeration of all publicly available regions. To create a client with a region from the enum use the following code:: diff --git a/doc_source/java-dg-roles.rst b/doc_source/java-dg-roles.rst index 7b01191..d752fc7 100644 --- a/doc_source/java-dg-roles.rst +++ b/doc_source/java-dg-roles.rst @@ -40,9 +40,9 @@ for credentials using the :emphasis:`default credentials provider chain`, in the The final step in the default provider chain is available only when running your application on an |EC2| instance, but provides the greatest ease of use and best security when working with |EC2| -instances. You can also pass an :java-api:`InstanceProfileCredentialsProvider -` instance directly to the client constructor -to get instance profile credentials without proceeding through the entire default provider chain. +instances. You can also pass an :aws-java-class:`InstanceProfileCredentialsProvider +` instance directly to the client constructor to get +instance profile credentials without proceeding through the entire default provider chain. For example: @@ -65,7 +65,7 @@ obtained credentials continue to allow access to AWS. profile credentials, you are responsible for checking for and refreshing expired credentials. If the client constructor can't find credentials using the credentials provider chain, it will throw -an :java-api:`AmazonClientException `. +an :aws-java-class:`AmazonClientException `. .. _roles-walkthrough: @@ -109,8 +109,8 @@ Launch an EC2 Instance and Specify Your IAM Role You can launch an |EC2| instance with an |IAM| role using the |EC2| console or the |sdk-java|. -* To launch an |EC2| instance using the console, follow the directions in :ec2-ug:`Launch an EC2 - Instance ` in the |EC2-ug|. +* To launch an |EC2| instance using the console, follow the directions in :ec2-ug:`Getting Started + with Amazon EC2 Linux Instances ` in the |EC2-ug|. When you reach the :guilabel:`Review Instance Launch` page, select :guilabel:`Edit instance details`. In :guilabel:`IAM role`, choose the |IAM| role that you created previously. Complete the diff --git a/doc_source/java-dg-samples.rst b/doc_source/java-dg-samples.rst index 873f5d9..6c03178 100644 --- a/doc_source/java-dg-samples.rst +++ b/doc_source/java-dg-samples.rst @@ -24,8 +24,8 @@ The |sdk-java| code samples are provided in the `samples` directory of the SDK. and installed the SDK using the information in :doc:`setup-install`, then you already have the samples on your system. -You can also view the latest samples on the |sdk-java|'s GitHub repository, in the `src/samples -`_ directory. +You can also view the latest samples on the |sdk-java| GitHub repository, in the +:github:`src/samples ` directory. .. _samples-cmdline: diff --git a/doc_source/java-dg-tomcat-session-manager.rst b/doc_source/java-dg-tomcat-session-manager.rst index b0ffd60..d0a1427 100644 --- a/doc_source/java-dg-tomcat-session-manager.rst +++ b/doc_source/java-dg-tomcat-session-manager.rst @@ -27,7 +27,7 @@ Downloading the Session Manager =============================== You can download the session manager from the `aws/aws-dynamodb-session-tomcat -`_ project on GitHub. That project also hosts +`_ project on GitHub. That project also hosts the session manager source code if you want to contribute to the project by sending us pull requests or opening issues. diff --git a/doc_source/prog-services-sts.rst b/doc_source/prog-services-sts.rst index b036cb7..b2dabd0 100644 --- a/doc_source/prog-services-sts.rst +++ b/doc_source/prog-services-sts.rst @@ -17,11 +17,11 @@ access AWS services. There are three steps involved in using |STS|: -1. Activate a region (optional). +#. Activate a region (optional). -2. Retrieve temporary security credentials from |STS|. +#. Retrieve temporary security credentials from |STS|. -3. Use the credentials to access AWS resources. +#. Use the credentials to access AWS resources. .. note:: Activating a region is :emphasis:`optional`; by default, temporary security credentials are obtained from the global endpoint :emphasis:`sts.amazonaws.com`. However, to reduce latency @@ -39,19 +39,19 @@ region. .. topic:: To activate additional STS regions - #. Sign in as an IAM user with permissions to perform IAM administration tasks :code:`"iam:*"` - for the account for which you want to activate AWS STS in a new region. + #. Sign in as an IAM user with permissions to perform IAM administration tasks :code:`"iam:*"` + for the account for which you want to activate AWS STS in a new region. - #. Open the IAM console and in the navigation pane click :guilabel:`Account Settings`. + #. Open the IAM console and in the navigation pane click :guilabel:`Account Settings`. - #. Expand the :guilabel:`STS Regions` list, find the region that you want to use, and then click - :guilabel:`Activate`. + #. Expand the :guilabel:`STS Regions` list, find the region that you want to use, and then click + :guilabel:`Activate`. After this, you can direct calls to the STS endpoint that is associated with that region. .. note:: For more information about activating STS regions and for a list of the available AWS STS - endpoints, see `Activating AWS STS in a New Region - `_ in the |STS-ug|. + endpoints, see :iam-ug:`Activating and Deactivating AWS STS in an AWS Region + ` in the |IAM-ug|. .. _retrieving-an-sts-token: @@ -61,62 +61,65 @@ Retrieve temporary security credentials from |STS| .. topic:: To retrieve temporary security credentials using the AWS SDK for Java - #. Create an :java-api:`AWSSecurityTokenServiceClient` object: + #. Create an :aws-java-class:`AWSSecurityTokenServiceClient + ` object: - .. code-block:: java + .. code-block:: java - AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(); + AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(); - When creating the client with no arguments, the default credential provider chain is used to - retrieve credentials. You can provide a specific credential provider if you want. For more - information, see Providing AWS Credentials in the AWS SDK for Java. + When creating the client with no arguments, the default credential provider chain is used to + retrieve credentials. You can provide a specific credential provider if you want. For more + information, see Providing AWS Credentials in the AWS SDK for Java. - #. :emphasis:`Optional`; requires that you have activated the region) Set the endpoint for the STS - client: + #. :emphasis:`Optional`; requires that you have activated the region) Set the endpoint for the + STS client: - .. code-block:: java + .. code-block:: java - sts_client.setEndpoint("sts-endpoint.amazonaws.com"); + sts_client.setEndpoint("sts-endpoint.amazonaws.com"); - where :emphasis:`sts-endpoint` represents the STS endpoint for your region. + where :emphasis:`sts-endpoint` represents the STS endpoint for your region. - .. important:: Do not use the :methodname:`setRegion` method to set a regional endpoint |mdash| - for backwards compatibility, that method continues to use the single global endpoint of - sts.amazonaws.com. + .. important:: Do not use the :methodname:`setRegion` method to set a regional endpoint + |mdash| for backwards compatibility, that method continues to use the single global + endpoint of sts.amazonaws.com. - #. Create a :java-api:`GetSessionTokenRequest ` object, and - optionally set the duration in seconds for which the temporary credentials are valid: + #. Create a :aws-java-class:`GetSessionTokenRequest + ` object, and optionally set the + duration in seconds for which the temporary credentials are valid: - .. code-block:: java + .. code-block:: java - GetSessionTokenRequest session_token_request = new GetSessionTokenRequest(); - session_token_request.setDurationSeconds(7200); // optional. + GetSessionTokenRequest session_token_request = new GetSessionTokenRequest(); + session_token_request.setDurationSeconds(7200); // optional. - The duration of temporary credentials can range from 900 seconds (15 minutes) to 129600 seconds - (36 hours) for IAM users. If a duration isn't specified, then 43200 seconds (12 hours) is used - by default. + The duration of temporary credentials can range from 900 seconds (15 minutes) to 129600 + seconds (36 hours) for IAM users. If a duration isn't specified, then 43200 seconds (12 + hours) is used by default. - For a root AWS account, the valid range of temporary credentials is from 900 to 3600 seconds (1 - hour), with a default value of 3600 seconds if no duration is specified. + For a root AWS account, the valid range of temporary credentials is from 900 to 3600 seconds + (1 hour), with a default value of 3600 seconds if no duration is specified. - .. important:: It is :emphasis:`strongly recommended`, from a security standpoint, that you - :emphasis:`use IAM users` instead of the root account for AWS access. For more information, see - IAM Best Practices in the |iam-ug|. + .. important:: It is :emphasis:`strongly recommended`, from a security standpoint, that you + :emphasis:`use IAM users` instead of the root account for AWS access. For more + information, see IAM Best Practices in the |iam-ug|. - #. Call :java-api:`getSessionToken - ` - on the STS client to get a session token, using the :classname:`GetSessionTokenRequest` object: + #. Call :aws-java-ref:`getSessionToken + ` + on the STS client to get a session token, using the :classname:`GetSessionTokenRequest` + object: - .. code-block:: java + .. code-block:: java - GetSessionTokenResult session_token_result = - sts_client.getSessionToken(session_token_request); + GetSessionTokenResult session_token_result = + sts_client.getSessionToken(session_token_request); - #. Get session credentials using the result of the call to :methodname:`getSessionToken`: + #. Get session credentials using the result of the call to :methodname:`getSessionToken`: - .. code-block:: java + .. code-block:: java - Credentials session_creds = session_token_result.getCredentials(); + Credentials session_creds = session_token_result.getCredentials(); The session credentials provide access only for the duration that was specified by the :classname:`GetSessionTokenRequest` object. Once the credentials expire, you will need to call @@ -134,8 +137,8 @@ to use its resources, using the technique described in :ref:`credentials-explici For example, to create an S3 client using temporary service credentials: .. literalinclude:: snippets/sts_basic_session_creds.java - :language: java - :lines: 14- + :language: java + :lines: 14- You can now use the :classname:`AmazonS3` object to make Amazon S3 requests. @@ -145,17 +148,15 @@ For more information ==================== For more information about how to use temporary security credentials to access AWS resources, visit -the following sections in the |STS-ug|: +the following sections in the |IAM-ug|: -* `Creating Temporary Security Credentials - `_ +* :iam-ug:`Requesting Temporary Security Credentials ` -* `Controlling Permissions for Temporary Security Credentials - `_ +* :iam-ug:`Controlling Permissions for Temporary Security Credentials + ` -* `Requesting AWS Resources Using Temporary Security Credentials - `_ +* :iam-ug:`Using Temporary Security Credentials to Request Access to AWS Resources + ` -* `Activating STS in a New Region - `_ +* :iam-ug:`Activating and Deactivating AWS STS in an AWS Region ` diff --git a/doc_source/prog-services-swf-list-domains.rst b/doc_source/prog-services-swf-list-domains.rst index d1deb02..0937434 100644 --- a/doc_source/prog-services-swf-list-domains.rst +++ b/doc_source/prog-services-swf-list-domains.rst @@ -16,25 +16,25 @@ You can list the |SWF|_ domains associated with your account and AWS region by r .. topic:: To list |SWF| domains - #. Create a :java-api:`ListDomainsRequest ` - object, and specify the registration status of the domains that you're interested in |mdash| - this is required. + #. Create a :aws-java-class:`ListDomainsRequest + ` object, and specify the registration + status of the domains that you're interested in |mdash| this is required. - #. Call :java-ref:`AmazonSimpleWorkflowClient.listDomains - ` - with the :emphasis:`ListDomainRequest` object. Results are provided in a :java-api:`DomainInfos - ` object. + #. Call :aws-java-ref:`AmazonSimpleWorkflowClient.listDomains + ` + with the :emphasis:`ListDomainRequest` object. Results are provided in a + :aws-java-class:`DomainInfos ` object. - #. Call :java-ref:`getDomainInfos - ` on the returned object to - get a list of :java-api:`DomainInfo ` objects. + #. Call :aws-java-ref:`getDomainInfos + ` on the returned object to + get a list of :aws-java-class:`DomainInfo ` objects. - #. Call :java-ref:`getName ` on each - :emphasis:`DomainInfo` object to get its name. + #. Call :aws-java-ref:`getName ` on + each :emphasis:`DomainInfo` object to get its name. The following code demonstrates this procedure: .. literalinclude:: snippets/CreateSwfDomain-list_swf_domains.java - :language: java - :lines: 14- + :language: java + :lines: 14- diff --git a/doc_source/prog-services-swf-register-domain.rst b/doc_source/prog-services-swf-register-domain.rst index 76edc56..0437af8 100644 --- a/doc_source/prog-services-swf-register-domain.rst +++ b/doc_source/prog-services-swf-register-domain.rst @@ -16,16 +16,16 @@ Every workflow and activity in |SWF|_ needs a :emphasis:`domain` to run in. .. topic:: To register an |SWF| domain - #. Create a new :java-api:`RegisterDomainRequest + #. Create a new :aws-java-class:`RegisterDomainRequest ` object, providing it with at least the domain name and workflow execution retention period (these parameters are both required). - #. Call the :java-ref:`AmazonSimpleWorkflowClient.registerDomain - ` + #. Call the :aws-java-ref:`AmazonSimpleWorkflowClient.registerDomain + ` method with the :emphasis:`RegisterDomainRequest` object. - #. Catch the :java-api:`DomainAlreadyExistsException + #. Catch the :aws-java-class:`DomainAlreadyExistsException ` if the domain you're requesting already exists (in which case, no action is usually required). diff --git a/doc_source/run-instance.rst b/doc_source/run-instance.rst index 841116b..0268f22 100644 --- a/doc_source/run-instance.rst +++ b/doc_source/run-instance.rst @@ -18,56 +18,57 @@ your EC2 instances are running, you can connect to them. .. topic:: To launch an |EC2| instance - #. Create and initialize a :java-api:`RunInstancesRequest ` - instance. Make sure that the AMI, key pair, and security group that you specify exist in the - region that you specified when you created the client object. + #. Create and initialize a :aws-java-class:`RunInstancesRequest + ` instance. Make sure that the AMI, key pair, and + security group that you specify exist in the region that you specified when you created the + client object. - .. code-block:: java + .. code-block:: - RunInstancesRequest runInstancesRequest = - new RunInstancesRequest(); + RunInstancesRequest runInstancesRequest = + new RunInstancesRequest(); - runInstancesRequest.withImageId("ami-4b814f22") - .withInstanceType("m1.small") - .withMinCount(1) - .withMaxCount(1) - .withKeyName("my-key-pair") - .withSecurityGroups("my-security-group"); + runInstancesRequest.withImageId("ami-4b814f22") + .withInstanceType("m1.small") + .withMinCount(1) + .withMaxCount(1) + .withKeyName("my-key-pair") + .withSecurityGroups("my-security-group"); - :java-ref:`withImageId ` - The ID of the AMI. For a list of public AMIs provided by Amazon, see Amazon Machine Images. + :aws-java-ref:`withImageId ` + The ID of the AMI. For a list of public AMIs provided by Amazon, see Amazon Machine Images. - :java-ref:`withInstanceType ` - An instance type that is compatible with the specified AMI. For more information, see - :ec2-ug:`Instance Types ` in the |EC2-ug|. + :aws-java-ref:`withInstanceType ` + An instance type that is compatible with the specified AMI. For more information, see + :ec2-ug:`Instance Types ` in the |EC2-ug|. - :java-ref:`withMinCount ` - The minimum number of EC2 instances to launch. If this is more instances than |EC2| can - launch in the target Availability Zone, |EC2| launches no instances. + :aws-java-ref:`withMinCount ` + The minimum number of EC2 instances to launch. If this is more instances than |EC2| can + launch in the target Availability Zone, |EC2| launches no instances. - :java-ref:`withMaxCount ` - The maximum number of EC2 instances to launch. If this is more instances than |EC2| can - launch in the target Availability Zone, |EC2| launches the largest possible number of - instances above :code:`MinCount`. You can launch between 1 and the maximum number of - instances you're allowed for the instance type. For more information, see How many instances - can I run in Amazon EC2 in the |EC2| General FAQ. + :aws-java-ref:`withMaxCount ` + The maximum number of EC2 instances to launch. If this is more instances than |EC2| can + launch in the target Availability Zone, |EC2| launches the largest possible number of + instances above :code:`MinCount`. You can launch between 1 and the maximum number of + instances you're allowed for the instance type. For more information, see How many + instances can I run in Amazon EC2 in the |EC2| General FAQ. - :java-ref:`withKeyName ` - The name of the EC2 key pair. If you launch an instance without specifying a key pair, you - can't connect to it. For more information, see :doc:`create-key-pair`. + :aws-java-ref:`withKeyName ` + The name of the EC2 key pair. If you launch an instance without specifying a key pair, you + can't connect to it. For more information, see :doc:`create-key-pair`. - :java-ref:`withSecurityGroups ` - One or more security groups. For more information, see :doc:`create-security-group`. + :aws-java-ref:`withSecurityGroups ` + One or more security groups. For more information, see :doc:`create-security-group`. - #. Launch the instances by passing the request object to the :java-ref:`runInstances - ` - method. The method returns a :java-api:`RunInstancesResult - ` object, as follows: + #. Launch the instances by passing the request object to the :aws-java-ref:`runInstances + ` + method. The method returns a :aws-java-class:`RunInstancesResult + ` object, as follows: - .. code-block:: java + .. code-block:: java - RunInstancesResult runInstancesResult = - amazonEC2Client.runInstances(runInstancesRequest); + RunInstancesResult result = amazonEC2Client.runInstances( + runInstancesRequest); After your instance is running, you can connect to it using your key pair. For more information, see :ec2-ug:`Connect to Your Linux Instance `. in the |EC2-ug|. diff --git a/doc_source/section-client-configuration.rst b/doc_source/section-client-configuration.rst index db5368b..6f18db7 100644 --- a/doc_source/section-client-configuration.rst +++ b/doc_source/section-client-configuration.rst @@ -24,7 +24,7 @@ to: Proxy Configuration =================== -When constructing a client object, you can pass in an optional :java-api:`ClientConfiguration` +When constructing a client object, you can pass in an optional :aws-java-class:`ClientConfiguration` object to customize the client's configuration. If you connect to the internet through a proxy server, you'll need to configure your proxy server @@ -35,28 +35,29 @@ object. HTTP Transport Configuration ============================ -You can configure several HTTP transport options by using the :java-api:`ClientConfiguration` +You can configure several HTTP transport options by using the :aws-java-class:`ClientConfiguration` object. New options are occasionally added; to see the full list of options that can be retrieved or set, see the |sdk-java| reference. Each of the configurable values has a default value defined by a constant. For a list of the -constant values for :classname:`ClientConfiguration`, see :java-ref:`Constant Field Values -` in the :title:`AWS SDK for Java Reference`. +constant values for :classname:`ClientConfiguration`, see :sdk-java-ref:`Constant Field Values +` in the |sdk-java-ref|. Local Address ------------- -To set the local address that the HTTP client will bind to, use :java-ref-nf:`ClientConfiguration.setLocalAddress -`. +To set the local address that the HTTP client will bind to, use +:aws-java-ref:`ClientConfiguration.setLocalAddress +`. Maximum Connections ------------------- You can set the maximum allowed number of open HTTP connections by using the -:java-ref-nf:`ClientConfiguration.setMaxConnections ` -method. +:aws-java-ref:`ClientConfiguration.setMaxConnections +` method. Proxy Options @@ -76,8 +77,8 @@ You can set options related to timeouts and handling errors with HTTP connection The connection timeout is the amount of time (in milliseconds) that the HTTP connection will wait to establish a connection before giving up. The default is 50,000ms. - To set this value yourself, use the :java-ref-nf:`ClientConfiguration.setConnectionTimeout - ` method. + To set this value yourself, use the :aws-java-ref:`ClientConfiguration.setConnectionTimeout + ` method. * :strong:`Connection Time to Live (TTL)` @@ -87,21 +88,21 @@ You can set options related to timeouts and handling errors with HTTP connection ensure that even if you have a connection established to a server that is experiencing issues, you'll reestablish a connection to a new server within 15 minutes. - To set the HTTP connection TTL, use the :java-ref-nf:`ClientConfiguration.setConnectionTTL - ` method. + To set the HTTP connection TTL, use the :aws-java-ref:`ClientConfiguration.setConnectionTTL + ` method. * :strong:`Maximum Error Retries` You can set the maximum retry count for retriable errors by using the - :java-ref-nf:`ClientConfiguration.setMaxErrorRetry - ` method. + :aws-java-ref:`ClientConfiguration.setMaxErrorRetry + ` method. TCP Socket Buffer Size Hints ============================ Advanced users who want to tune low-level TCP parameters can additionally set TCP buffer size hints -through the :java-api:`ClientConfiguration` object. The majority of users will never need to tweak +through the :aws-java-class:`ClientConfiguration` object. The majority of users will never need to tweak these values, but they are provided for advanced users. Optimal TCP buffer sizes for an application are highly dependent on network and OS configuration and @@ -113,7 +114,7 @@ Large buffer sizes (e.g., 2 MB) allow the OS to buffer more data in memory witho remote server to acknowledge receipt of that information, so can be particularly useful when the network has high latency. -This is only a hint, and the OS may choose not to honor it. When using this option, users should +This is only a *hint*, and the OS may choose not to honor it. When using this option, users should always check the operating system's configured limits and defaults. Most OS's have a maximum TCP buffer size limit configured, and won't let you go beyond that limit unless you explicitly raise the max TCP buffer size limit. @@ -121,9 +122,6 @@ max TCP buffer size limit. Many resources available to help with configuring TCP buffer sizes and operating system specific TCP settings, including: -* `TCP Tuning and Network Troubleshooting - `_ - -* `Host Tuning `_ - +* `TCP Tuning and Network Troubleshooting `_ +* `Host Tuning `_ diff --git a/doc_source/setup-install.rst b/doc_source/setup-install.rst index 46e48b5..f473fe2 100644 --- a/doc_source/setup-install.rst +++ b/doc_source/setup-install.rst @@ -125,7 +125,7 @@ Installing a Java Development Environment ========================================= The |sdk-java| requires J2SE Development Kit *6.0 or later*. You can download the latest Java -software from http://developers.sun.com/downloads/. +software from http://www.oracle.com/technetwork/java/javase/downloads/. .. important:: Java version 1.6 (JS2E 6.0) did not have built-in support for SHA256-signed SSL certificates, which are required for all HTTPS connections with AWS after September 30, 2015. diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index 69b8467..c68b3f2 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -13,38 +13,44 @@ Using the SDK with Gradle ######################### To use the |sdk-java| in your Gradle_ project, use Spring's `dependency management plugin -`_ for Gradle, which can be +`_ for Gradle, which can be used to import the SDK's Maven Bill of Materials (BOM) to manage SDK dependencies for your project. .. topic:: To configure the SDK for Gradle - #. Add the dependency management plugin to your :file:`build.gradle` file:: + #. Add the dependency management plugin to your :file:`build.gradle` file - buildscript { - repositories { - mavenCentral() - } - dependencies { - classpath "io.spring.gradle:dependency-management-plugin:0.5.4.RELEASE" - } - } + .. code-block:: groovy - apply plugin: "io.spring.dependency-management" + buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath "io.spring.gradle:dependency-management-plugin:0.5.4.RELEASE" + } + } - #. Add the BOM to the *dependencyManagement* section of the file:: + apply plugin: "io.spring.dependency-management" - dependencyManagement { - imports { - mavenBom 'com.amazonaws:aws-java-sdk-bom:1.10.47' - } - } + #. Add the BOM to the *dependencyManagement* section of the file - #. Specify the SDK modules that you'll be using in the *dependencies* section:: + .. code-block:: groovy - dependencies { - compile 'com.amazonaws:aws-java-sdk-s3' - testCompile group: 'junit', name: 'junit', version: '4.11' - } + dependencyManagement { + imports { + mavenBom 'com.amazonaws:aws-java-sdk-bom:1.10.47' + } + } + + #. Specify the SDK modules that you'll be using in the *dependencies* section + + .. code-block:: groovy + + dependencies { + compile 'com.amazonaws:aws-java-sdk-s3' + testCompile group: 'junit', name: 'junit', version: '4.11' + } Gradle will automatically resolve the correct version of your SDK dependencies using the information from the BOM. diff --git a/doc_source/swf-basics.rst b/doc_source/swf-basics.rst index 76f0ea5..d5b9bd6 100644 --- a/doc_source/swf-basics.rst +++ b/doc_source/swf-basics.rst @@ -61,8 +61,8 @@ If you are using the |jflow|, you will import classes from the Using the SWF client class ========================== -Your basic interface to |SWF| is through either the :java-api:`AmazonSimpleWorkflowClient -` or :java-api:`AmazonSimpleWorkflowAsyncClient +Your basic interface to |SWF| is through either the :aws-java-class:`AmazonSimpleWorkflowClient +` or :aws-java-class:`AmazonSimpleWorkflowAsyncClient ` classes. The main difference between these is that the ``*AsyncClient`` class return :javase-ref:`Future` objects for concurrent (asynchronous) programming. diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index 67b6fe5..0a19e18 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -117,7 +117,9 @@ Create a SWF project mvn archetype:generate -DartifactId=helloswf \ -DgroupId=example.swf.hello -DinteractiveMode=false - This will create a new project with a standard maven project structure:: + This will create a new project with a standard maven project structure: + + .. code-block:: none helloswf ├── pom.xml @@ -187,7 +189,7 @@ interest of time, these steps *will be implied every time you add a new file to :language: java :lines: 16 -#. Add ``import`` declarations for the :java-api:`AmazonSimpleWorkflowClient +#. Add ``import`` declarations for the :aws-java-class:`AmazonSimpleWorkflowClient ` class and for multiple classes in the ``com.amazonaws.services.simpleworkflow.model`` namespace. To simplify things, we'll use: @@ -216,7 +218,7 @@ your activity and workflow types, the domain name and the task list name. These values will be used throughout the code. -#. After the String declarations, create an instance of the :java-api:`AmazonSimpleWorkflowClient +#. After the String declarations, create an instance of the :aws-java-class:`AmazonSimpleWorkflowClient ` class. This is the basic interface to the |SWF| methods provided by the |sdk-java|. @@ -238,10 +240,10 @@ your activity and workflow types, the domain name and the task list name. excluding ``:``, ``/``, ``|``, control characters or the literal string 'arn') and a *retention period*, which is the number of days that |SWF| will keep your workflow's execution history data after a workflow execution has completed. The maximum workflow execution retention period is 90 - days. See :java-api:`RegisterDomainRequest ` + days. See :aws-java-class:`RegisterDomainRequest ` for more information. - If a domain with that name already exists, a :java-api:`DomainAlreadyExistsException + If a domain with that name already exists, a :aws-java-class:`DomainAlreadyExistsException ` is raised. Because we're unconcerned if the domain has already been created, we can ignore the exception. @@ -261,14 +263,14 @@ your activity and workflow types, the domain name and the task list name. the activity from any others in the domain that it's registered in. Activities also contain a number of optional parameters, such as the default task-list used to receive tasks and data from SWF and a number of different timeouts that you can use to place constraints upon how long - different parts of the activity execution can take. See :java-api:`RegisterActivityTypeRequest + different parts of the activity execution can take. See :aws-java-class:`RegisterActivityTypeRequest ` for more information. .. tip:: All timeout values are specified in *seconds*. See :swf-dg:`Amazon SWF Timeout Types ` for a full description of how timeouts affect your workflow executions. If the activity type that you're trying to register already exists, an - :java-api:`TypeAlreadyExistsException ` + :aws-java-class:`TypeAlreadyExistsException ` is raised. #. Add a function to register a new workflow type. A *workflow*, also known as a *decider* @@ -280,11 +282,11 @@ your activity and workflow types, the domain name and the task list name. :dedent: 4 Similar to activity types, workflow types are identified by a *name* and a *version* and also - have configurable timeouts. See :java-api:`RegisterWorkflowTypeRequest + have configurable timeouts. See :aws-java-class:`RegisterWorkflowTypeRequest ` for more information. If the workflow type that you're trying to register already exists, an - :java-api:`TypeAlreadyExistsException ` + :aws-java-class:`TypeAlreadyExistsException ` is raised. #. Finally, make the class executable by providing it a ``main`` method, which will register the @@ -346,7 +348,7 @@ We'll implement a simple activity worker that drives a single activity. The activity receives tasks from |SWF| by calling the SWF client's :methodname:`pollForActivityTask` method, specifying the domain and task list to use in the - passed-in :java-api:`PollForActivityTaskRequest + passed-in :aws-java-class:`PollForActivityTaskRequest `. Once a task is received, we retrieve a unique identifier for it by calling the task's @@ -366,12 +368,12 @@ We'll implement a simple activity worker that drives a single activity. If the task *succeeded* (no error was generated), then the worker responds to SWF by calling the SWF client's :methodname:`respondActivityTaskCompleted` method with a - :java-api:`RespondActivityTaskCompletedRequest + :aws-java-class:`RespondActivityTaskCompletedRequest ` object containing the task token and the activity's result data. On the other hand, if the task *failed*, then we respond by calling the - :methodname:`respondActivityTaskFailed` method with a :java-api:`RespondActivityTaskFailedRequest + :methodname:`respondActivityTaskFailed` method with a :aws-java-class:`RespondActivityTaskFailedRequest ` object, passing it the task token and information about the error. @@ -400,7 +402,7 @@ schedule a new activity or not) and takes an appropriate action (such as schedul :lines: 20-22 #. Declare the :classname:`WorkflowWorker` class, and create an instance of the - :java-api:`AmazonSimpleWorkflowClient ` class + :aws-java-class:`AmazonSimpleWorkflowClient ` class used to access SWF methods. .. literalinclude:: snippets/helloswf/src/main/java/example/swf/hello/WorkflowWorker.java @@ -409,7 +411,7 @@ schedule a new activity or not) and takes an appropriate action (such as schedul #. Add the :methodname:`main` method. The method loops continuously, polling for decision tasks using the SWF client's :methodname:`pollForDecisionTask` method. The - :java-api:`PollForDecisionTaskRequest ` + :aws-java-class:`PollForDecisionTaskRequest ` provides the details. .. literalinclude:: snippets/helloswf/src/main/java/example/swf/hello/WorkflowWorker.java @@ -420,7 +422,7 @@ schedule a new activity or not) and takes an appropriate action (such as schedul Once a task is received, we call its :methodname:`getTaskToken` method, which returns a string that can be used to identify the task. If the returned token is not ``null``, then we process it further in the :methodname:`executeDecisionTask` method, passing it the task token and the list - of :java-api:`HistoryEvent ` objects sent with the + of :aws-java-class:`HistoryEvent ` objects sent with the task. #. Add the :methodname:`executeDecisionTask` method, taking the task token (a :classname:`String`) @@ -433,7 +435,7 @@ schedule a new activity or not) and takes an appropriate action (such as schedul We also set up some data members to keep track of things such as: - * A list of :java-api:`Decision ` objects used to report + * A list of :aws-java-class:`Decision ` objects used to report the results of processing the task. * A String to hold workflow input provided by the "WorkflowExecutionStarted" event * a count of the scheduled and open (running) activities to avoid scheduling the same activity @@ -461,12 +463,12 @@ schedule a new activity or not) and takes an appropriate action (such as schedul event data also includes the return value of the completed activity. Since we have only one activity, we'll use that value as the result of the entire workflow. - The other event types can be used if your workflow requires them. See the :java-api:`HistoryEvent + The other event types can be used if your workflow requires them. See the :aws-java-class:`HistoryEvent ` class description for information about each event type. .. note:: Strings in ``switch`` statements were introduced in Java 7. If you're using an earlier - version of Java, you can make use of the :java-api:`EventType + version of Java, you can make use of the :aws-java-class:`EventType ` class to convert the ``String`` returned by ``history_event.getType()`` to an enum value and then back to a ``String`` if necessary: @@ -483,14 +485,14 @@ schedule a new activity or not) and takes an appropriate action (such as schedul :dedent: 8 * If the activity hasn't been scheduled yet, we respond with a :classname:`ScheduleActivityTask` - decision, which provides information in a :java-api:`ScheduleActivityTaskDecisionAttributes + decision, which provides information in a :aws-java-class:`ScheduleActivityTaskDecisionAttributes ` structure about the activity that |SWF| should schedule next, also including any data that |SWF| should send to the activity. * If the activity was completed, then we consider the entire workflow completed and respond with a :classname:`CompletedWorkflowExecution` decision, filling in a - :java-api:`CompleteWorkflowExecutionDecisionAttributes + :aws-java-class:`CompleteWorkflowExecutionDecisionAttributes ` structure to provide details about the completed workflow. In this case, we return the result of the activity. @@ -529,7 +531,7 @@ Finally, we'll write some code to start the workflow execution. takes an optional argument passed on the command-line as input data for the workflow. The SWF client method, :methodname:`startWorkflowExecution`, takes a - :java-api:`StartWorkflowExecutionRequest + :aws-java-class:`StartWorkflowExecutionRequest ` object as input. Here, in addition to specifying the domain and workflow type to run, we provide it with: @@ -540,7 +542,7 @@ Finally, we'll write some code to start the workflow execution. * a timeout value that represents how long, in seconds, that the entire workflow should take to run. - The :java-api:`Run ` object that + The :aws-java-class:`Run ` object that :methodname:`startWorkflowExecution` returns provides a *run ID*, a value that can be used to identify this particular workflow execution in |SWF|'s history of your workflow executions. diff --git a/doc_source/swf-lambda-task.rst b/doc_source/swf-lambda-task.rst index 795a2de..0fe3799 100644 --- a/doc_source/swf-lambda-task.rst +++ b/doc_source/swf-lambda-task.rst @@ -75,7 +75,7 @@ Register a workflow for use with |LAM| For a workflow to schedule a |LAM| function, you must provide the name of the IAM role that provides |SWF| with permission to invoke |LAM| functions. You can set this during workflow registration by using the ``withDefaultLambdaRole`` or ``setDefaultLambdaRole`` methods of -:java-api:`RegisterWorkflowTypeRequest `. +:aws-java-class:`RegisterWorkflowTypeRequest `. .. literalinclude:: snippets/helloswf_lambda/src/main/java/example/swf/hellolambda/HelloTypes.java :language: java @@ -86,10 +86,10 @@ using the ``withDefaultLambdaRole`` or ``setDefaultLambdaRole`` methods of Schedule a |LAM| task ===================== -Schedule a |LAM| task is similar to scheduling an activity. You provide a :java-api:`Decision -` with a ``ScheduleLambdaFunction`` :java-api:`DecisionType +Schedule a |LAM| task is similar to scheduling an activity. You provide a :aws-java-class:`Decision +` with a ``ScheduleLambdaFunction`` :aws-java-class:`DecisionType ` and with -:java-api:`ScheduleLambdaFunctionDecisionAttributes +:aws-java-class:`ScheduleLambdaFunctionDecisionAttributes `. .. literalinclude:: snippets/helloswf_lambda/src/main/java/example/swf/hellolambda/WorkflowWorker.java @@ -105,7 +105,7 @@ You can also provide optional *input* for the |LAM| function and set its *start value, which is the number of seconds that the |LAM| function is allowed to run before generating a ``LambdaFunctionTimedOut`` event. -.. tip:: This code uses the :java-api:`AWSLambdaClient ` to +.. tip:: This code uses the :aws-java-class:`AWSLambdaClient ` to retrieve the ARN of the |LAM| function, given the function name. You can use this technique to avoid hard-coding the full ARN (which includes your AWS account ID) in your code. @@ -115,7 +115,7 @@ Handle |LAM| function events in your decider |LAM| tasks will generate a number of events that you can take action on when polling for decision tasks in your workflow worker, corresponding to the lifecycle of your |LAM| task, with -:java-api:`EventType ` values such as +:aws-java-class:`EventType ` values such as ``LambdaFunctionScheduled``, ``LambdaFunctionStarted``, and ``LambdaFunctionCompleted``. If the |LAM| function fails, or takes longer to run than its set timeout value, you will receive either a ``LambdaFunctionFailed`` or ``LambdaFunctionTimedOut`` event type, respectively. @@ -129,10 +129,10 @@ tasks in your workflow worker, corresponding to the lifecycle of your |LAM| task Receive output from your |LAM| function ======================================= -When you receive a ``LambdaFunctionCompleted`` :java-api:`EventType +When you receive a ``LambdaFunctionCompleted`` :aws-java-class:`EventType `, you can retrieve your |LAM| function's return value by -first calling :methodname:`getLambdaFunctionCompletedEventAttributes` on the :java-api:`HistoryEvent -` to get a :java-api:`LambdaFunctionCompletedEventAttributes +first calling :methodname:`getLambdaFunctionCompletedEventAttributes` on the :aws-java-class:`HistoryEvent +` to get a :aws-java-class:`LambdaFunctionCompletedEventAttributes ` object, and then calling its :methodname:`getResult` method to retrieve the output of the |LAM| function: @@ -146,6 +146,6 @@ Complete source for this example ================================ You can browse the `complete source -`_ -for this example on Github in the *aws-java-developer-guide* repository. +:github:`` for +this example on Github in the *aws-java-developer-guide* repository. diff --git a/doc_source/tutorial-spot-adv-java.rst b/doc_source/tutorial-spot-adv-java.rst index 5c7656f..5278c30 100644 --- a/doc_source/tutorial-spot-adv-java.rst +++ b/doc_source/tutorial-spot-adv-java.rst @@ -543,7 +543,7 @@ bootstrap your instance. Using the root partition to checkpoint your critical data is a great way to manage the potential for interruption of your instances. For more methods on managing the potential of interruption, please visit the `Managing Interruption -`_ video. +`_ video. .. _tutor-spot-adv-tags: @@ -562,14 +562,14 @@ Tagging requests To add tags to your spot requests, you need to tag them *after* they have been requested. The return value from :methodname:`requestSpotInstances()` provides you with a -:java-api:`RequestSpotInstancesResult ` object that +:aws-java-class:`RequestSpotInstancesResult ` object that you can use to get the spot request IDs for tagging: .. literalinclude:: snippets/ec2/tag-spot-requests.java :lines: 18-30 Once you have the IDs, you can tag the requests by adding their IDs to a -:java-api:`CreateTagsRequest ` and calling the EC2 client's +:aws-java-class:`CreateTagsRequest ` and calling the EC2 client's :methodname:`createTags()` method: .. literalinclude:: snippets/ec2/tag-spot-requests.java @@ -583,10 +583,10 @@ will happen once the spot request has been met (it is no longer in the *open* st You can check the status of your requests by calling the EC2 client's :methodname:`describeSpotInstanceRequests()` method with a -:java-api:`DescribeSpotInstanceRequestsRequest ` -object. The returned :java-api:`DescribeSpotInstanceRequestsResult +:aws-java-class:`DescribeSpotInstanceRequestsRequest ` +object. The returned :aws-java-class:`DescribeSpotInstanceRequestsResult ` object contains a list of -:java-api:`SpotInstanceRequest ` objects that you can use to query +:aws-java-class:`SpotInstanceRequest ` objects that you can use to query the status of your spot requests and obtain their instance IDs once they are no longer in the *open* state. @@ -609,7 +609,7 @@ Canceling a spot request ------------------------ To cancel a spot instance request, call :methodname:`cancelSpotInstanceRequests` on the EC2 client -with a :java-api:`CancelSpotInstanceRequestsRequest +with a :aws-java-class:`CancelSpotInstanceRequestsRequest ` object. .. literalinclude:: snippets/ec2/cancel-terminate-spot-request.java diff --git a/doc_source/tutorial-spot-instances-java.rst b/doc_source/tutorial-spot-instances-java.rst index 780cb80..d697ae1 100644 --- a/doc_source/tutorial-spot-instances-java.rst +++ b/doc_source/tutorial-spot-instances-java.rst @@ -205,7 +205,7 @@ always determine the latest version AMI by following these steps: There are many ways to approach bidding for Spot instances; to get a broad overview of the various approaches you should view the `Bidding for Spot Instances -`_ video. However, to get +`_ video. However, to get started, we'll describe three common strategies: bid to ensure cost is less than on-demand pricing; bid based on the value of the resulting computation; bid so as to acquire computing capacity as quickly as possible. @@ -295,7 +295,7 @@ request is populated, you call the :code:`requestSpotInstances` method on the Running this code will launch a new Spot Instance Request. There are other options you can use to configure your Spot Requests. To learn more, please visit :doc:`tutorial-spot-adv-java` or the -:java-api:`RequestSpotInstances ` class in the +:aws-java-class:`RequestSpotInstances ` class in the |sdk-java-ref|. .. note:: You will be charged for any Spot Instances that are actually launched, so make sure that @@ -309,9 +309,9 @@ Step 4: Determining the State of Your Spot Request Next, we want to create code to wait until the Spot request reaches the "active" state before proceeding to the last step. To determine the state of our Spot request, we poll the -:java-ref:`describeSpotInstanceRequests -` method for the state of -the Spot request ID we want to monitor. +:aws-java-ref:`describeSpotInstanceRequests +` method for the state of the Spot +request ID we want to monitor. The request ID created in Step 2 is embedded in the response to our :code:`requestSpotInstances` request. The following example code shows how to gather request IDs from the @@ -412,7 +412,8 @@ The following code demonstrates how to cancel your requests. try { // Cancel requests. - CancelSpotInstanceRequestsRequest cancelRequest = new CancelSpotInstanceRequestsRequest(spotInstanceRequestIds); + CancelSpotInstanceRequestsRequest cancelRequest = + new CancelSpotInstanceRequestsRequest(spotInstanceRequestIds); ec2.cancelSpotInstanceRequests(cancelRequest); } catch (AmazonServiceException e) { // Write out any exceptions that may have occurred. @@ -430,14 +431,50 @@ and adds an :code:`ArrayList` in which we store the instance ID associated with .. code-block:: java - // Create a variable that will track whether there are any requests // still in the open state. boolean anyOpen; {// Initialize variables.} {ArrayList instanceIds = new ArrayList();} do { // Create the describeRequest with all of the request ids to // monitor (e.g. that we started). DescribeSpotInstanceRequestsRequest describeRequest = new DescribeSpotInstanceRequestsRequest(); describeRequest.setSpotInstanceRequestIds(spotInstanceRequestIds); // Initialize the anyOpen variable to false, which assumes there // are no requests open unless we find one that is still open. anyOpen = false; try { // Retrieve all of the requests we want to monitor. DescribeSpotInstanceRequestsResult describeResult = ec2.describeSpotInstanceRequests(describeRequest); List describeResponses = describeResult.getSpotInstanceRequests(); // Look through each request and determine if they are all // in the active state. for (SpotInstanceRequest describeResponse : describeResponses) { // If the state is open, it hasn't changed since we // attempted to request it. There is the potential for // it to transition almost immediately to closed or // cancelled so we compare against open instead of active. if (describeResponse.getState().equals("open")) { anyOpen = true; break; } {// Add the instance id to the list we will} {// eventually terminate.} {instanceIds.add(describeResponse.getInstanceId());} - } - } catch (AmazonServiceException e) { - // If we have an exception, ensure we don't break out - // of the loop. This prevents the scenario where there - // was blip on the wire. - anyOpen = true; - } + // Create a variable that will track whether there are any requests + // still in the open state. + boolean anyOpen; + // Initialize variables. + ArrayList instanceIds = new ArrayList(); + + do { + // Create the describeRequest with all of the request ids to + // monitor (e.g. that we started). + DescribeSpotInstanceRequestsRequest describeRequest = new DescribeSpotInstanceRequestsRequest(); + describeRequest.setSpotInstanceRequestIds(spotInstanceRequestIds); + + // Initialize the anyOpen variable to false, which assumes there + // are no requests open unless we find one that is still open. + anyOpen = false; + + try { + // Retrieve all of the requests we want to monitor. + DescribeSpotInstanceRequestsResult describeResult = + ec2.describeSpotInstanceRequests(describeRequest); + + List describeResponses = + describeResult.getSpotInstanceRequests(); + + // Look through each request and determine if they are all + // in the active state. + for (SpotInstanceRequest describeResponse : describeResponses) { + // If the state is open, it hasn't changed since we + // attempted to request it. There is the potential for + // it to transition almost immediately to closed or + // cancelled so we compare against open instead of active. + if (describeResponse.getState().equals("open")) { + anyOpen = true; break; + } + // Add the instance id to the list we will + // eventually terminate. + instanceIds.add(describeResponse.getInstanceId()); + } + } catch (AmazonServiceException e) { + // If we have an exception, ensure we don't break out + // of the loop. This prevents the scenario where there + // was blip on the wire. + anyOpen = true; + } try { // Sleep for 60 seconds. @@ -482,7 +519,7 @@ We submit the Spot Instance request. Then we wait for the Spot request to reach Finally, we clean up the requests and instances. The complete source code for this example can be viewed or downloaded at :github:`GitHub -`. +`. Congratulations! You have just completed the getting started tutorial for developing Spot Instance software with the |sdk-java|. diff --git a/doc_source/welcome.rst b/doc_source/welcome.rst index 35953fe..56a4dc0 100644 --- a/doc_source/welcome.rst +++ b/doc_source/welcome.rst @@ -32,7 +32,7 @@ developers: * |sdk-java-ref|_ -* `Java developer blog `_ +* :blog:`Java developer blog ` * :forum:`Java developer forums <70>` @@ -48,11 +48,11 @@ developers: + :github:`SDK samples ` - + `Gitter channel `_ + + `Gitter channel `_ -* `@awsforjava (Twitter) `_ +* `@awsforjava (Twitter) `_ -* `release notes `_ +* `release notes `_ .. _eclipse-support: From 106626825a30e446b2d7117b2d80ceae82ef9e3e Mon Sep 17 00:00:00 2001 From: Hennessey Date: Sun, 11 Dec 2016 17:16:22 -0800 Subject: [PATCH 019/225] fix for missing lang in code-block --- doc_source/run-instance.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/run-instance.rst b/doc_source/run-instance.rst index 0268f22..4868567 100644 --- a/doc_source/run-instance.rst +++ b/doc_source/run-instance.rst @@ -23,7 +23,7 @@ your EC2 instances are running, you can connect to them. security group that you specify exist in the region that you specified when you created the client object. - .. code-block:: + .. code-block:: java RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); From 9aef68954c8ea9599f0f99eaa5923912a75ed77a Mon Sep 17 00:00:00 2001 From: Hennessey Date: Wed, 14 Dec 2016 11:56:55 -0800 Subject: [PATCH 020/225] added examples for dynamodb --- .../examples/complete-examples-note.txt | 6 + doc_source/examples/dynamodb.rst | 16 ++ doc_source/examples/dynamodb/items.rst | 99 +++++++++ doc_source/examples/dynamodb/query-scan.rst | 14 ++ doc_source/examples/dynamodb/tables.rst | 201 ++++++++++++++++++ doc_source/prog-services.rst | 2 +- 6 files changed, 337 insertions(+), 1 deletion(-) create mode 100644 doc_source/examples/complete-examples-note.txt create mode 100644 doc_source/examples/dynamodb.rst create mode 100644 doc_source/examples/dynamodb/items.rst create mode 100644 doc_source/examples/dynamodb/query-scan.rst create mode 100644 doc_source/examples/dynamodb/tables.rst diff --git a/doc_source/examples/complete-examples-note.txt b/doc_source/examples/complete-examples-note.txt new file mode 100644 index 0000000..2c4ed39 --- /dev/null +++ b/doc_source/examples/complete-examples-note.txt @@ -0,0 +1,6 @@ + +.. note:: Only the code that is necessary to demonstrate each technique is supplied here, but + :sdk-doc-examples:`complete example code is available on GitHub `, where you can download a + single source file or you can clone the repository locally to get all examples, build and run + them. + diff --git a/doc_source/examples/dynamodb.rst b/doc_source/examples/dynamodb.rst new file mode 100644 index 0000000..360c545 --- /dev/null +++ b/doc_source/examples/dynamodb.rst @@ -0,0 +1,16 @@ +##### +|DDB| +##### + +This section provides examples of programming |S3|_ using the |sdk-java|_. + +.. include:: complete-examples-note.txt + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + dynamodb/tables + dynamodb/items + ../java-dg-tomcat-session-manager + diff --git a/doc_source/examples/dynamodb/items.rst b/doc_source/examples/dynamodb/items.rst new file mode 100644 index 0000000..3502eb8 --- /dev/null +++ b/doc_source/examples/dynamodb/items.rst @@ -0,0 +1,99 @@ +################## +Working with Items +################## + +In DynamoDB, an item is a collection of *attributes*, which consist of a *name* and a *value*. An +attribute value can be a scalar, set, or document type. For more information, see :ddb-dg:`Naming +Rules and Data Types ` in the |ddb-dg|. + +.. _dynamodb-get-item: + +Retrieve (get) an item from a table +=================================== + +To get an item from a table, call the :aws-java-class:`DynamoDB client +`'s :methodname:`getItem` method, passing it a +:aws-java-class:`GetItemRequest ` object with the table +name and primary key value of the desired item. It returns a `GetItemResult +` object. + +You can use the returned :classname:`GetItemResult` object's :methodname:`getItem()` method to +retrieve a :javase-ref:`Map ` of key (String) and value +(:aws-java-class:`AttributeValue `) pairs associated with +the item. + +**Imports:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/GetItem.java + :lines: 15-21 + +**Code:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/GetItem.java + :lines: 68-102 + :dedent: 8 + +See the :sdk-examples-java-dynamodb:`complete sample `. + + +.. _dynamodb-add-item: + +Add a new item to a table +========================= + +To add a new item to a table, create a :javase-ref:`Map ` of key/value pairs that +represent the attributes of the item. These must include values for the primary key field(s) of the +table. If the item identified by the primary key already exists, then its fields will be *updated* +by the request. + +.. note:: If the named table doesn't exist for your account and region, then a + :aws-java-class:`ResourceNotFoundException ` + exception will result. + +**Imports:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/PutItem.java + :lines: 15-20 + +**Code:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/PutItem.java + :lines: 76-96 + :dedent: 8 + +See the :sdk-examples-java-dynamodb:`complete sample `. + + +.. _dynamodb-update-item: + +Update an existing item in a table +================================== + +You can update an attribute for an item that already exists in a table by using the +:aws-java-class:`DynamoDB client `'s :methodname:`updateItem` +method, providing a table name, primary key value and a map of fields to update. + +.. note:: If the named table doesn't exist for your account and region, or if the item identified by + the passed-in primary key doesn't exist, then a :aws-java-class:`ResourceNotFoundException + ` exception will result. + +**Imports:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java + :lines: 15-22 + +**Code:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java + :lines: 82-105 + :dedent: 8 + +See the :sdk-examples-java-dynamodb:`complete sample `. + + +See Also +======== + +* :ddb-dg:`Guidelines for Working with Items ` in the |ddb-dg| +* :ddb-dg:`Working with Items in DynamoDB ` in the |ddb-dg| + diff --git a/doc_source/examples/dynamodb/query-scan.rst b/doc_source/examples/dynamodb/query-scan.rst new file mode 100644 index 0000000..c1c8ebf --- /dev/null +++ b/doc_source/examples/dynamodb/query-scan.rst @@ -0,0 +1,14 @@ +##################### +Querying and Scanning +##################### + +In addition to using primary keys to access items, |DDB| also provides two operations for searching +your data: *Query* and *Scan*. + + + +See Also +======== + +* :ddb-dg:`Guidelines for Query and Scan ` in the |ddb-dg| +* :ddb-dg:`Query and Scan Operations in DynamoDB ` in the |ddb-dg| diff --git a/doc_source/examples/dynamodb/tables.rst b/doc_source/examples/dynamodb/tables.rst new file mode 100644 index 0000000..c98b2b1 --- /dev/null +++ b/doc_source/examples/dynamodb/tables.rst @@ -0,0 +1,201 @@ +################### +Working with Tables +################### + +.. meta:: + :description: How to create, describe, modify (update) and delete Amazon DynamoDB tables. + :keywords: database, dynamodb, tables, create table, delete table, describe table, modify table, + update table + +Tables are the container for all items in a |DDB| database. Before you can add or remove data from +|DDB|, you must create a table. + +For each table, you must define: + +* A table *name*, which must be unique for your account and region. + +* A *primary key* for which every value must be unique; no two items in your table can have the same + primary key value. A primary key can be *simple*, consisting of a single partition (HASH) key, or + *composite*, consisting of both a partition and a sort (RANGE) key. + + Each key value has an associated *data type*, enumerated by the + :aws-java-class:`ScalarAttributeType ` class. It + can be either binary (B), numeric (N), or a string (S). For more information, refer to + :ddb-dg:`Naming Rules and Data Types ` in the |ddb-dg|. + +* *Provisioned throughput* values, which define the number of reserved read / write capacity units + for the table. + + .. tip:: :pricing:`Amazon DynamoDB pricing ` is based on the provisioned throughput + values that you set on your tables, so you should only reserve as much capacity as you expect + you will need for your table. + + Provisioned throughput can be modified at any time for a table, so you can adjust capacity if + your needs change. + +.. _dynamodb-create-table: + +Create a Table +============== + +Use the :aws-java-class:`DynamoDB client `'s +:methodname:`createTable` method to create a new |DDB| table. You will need to construct table +attributes and a table schema, both of which serve to identify the primary key of your table. You +must also supply initial provisioned throughput values and give the table a name. + +.. note:: If a table already exists with the name that you've chosen, then an + :aws-java-class:`AmazonServiceException` will be thrown. + +**Imports:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java + :lines: 15-23 + +.. _dynamodb-create-table-simple: + +Creating a table with a simple primary key +------------------------------------------ + +This code creates a table with a simple primary key ("Name"): + +**Code:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java + :lines: 58-73 + :dedent: 8 + +See the :sdk-examples-java-dynamodb:`complete sample `. + +.. _dynamodb-create-table-composite: + +Creating a table with a composite primary key +--------------------------------------------- + +To create a table with a composite primary key, add an additional +:aws-java-class:`AttributeDefinition ` and +:aws-java-class:`KeySchemaElement ` to the +:aws-java-class:`CreateTableRequest `. + +**Code:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTableCompositeKey.java + :lines: 58-67 + :dedent: 8 + +See the :sdk-examples-java-dynamodb:`complete sample `. + +.. _dynamodb-list-tables: + +Listing Tables +============== + +You can list the tables in a particular region by calling the :aws-java-class:`DynamoDB client +`'s :methodname:`listTables` method. + +.. note:: If the named table doesn't exist for your account and region, then a + :aws-java-class:`ResourceNotFoundException ` + exception will result. + +**Imports:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java + :lines: 15-18 + +**Code:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java + :lines: 32-64 + :dedent: 8 + +By default, up to 100 tables will be returned per call |mdash| use +:methodname:`getLastEvaluatedTableName` on the returned :aws-java-class:`ListTablesResult <>` object +to get the last table evaluated. You can use this value to start the listing after the last returned +value of the previous listing. + +See the :sdk-examples-java-dynamodb:`complete sample `. + +.. _dynamodb-describe-table: + +Describe a Table +================ + +You can describe (get information about) a table by calling the :aws-java-class:`DynamoDB client +`'s :methodname:`describeTable` method. + +.. note:: If the named table doesn't exist for your account and region, then a + :aws-java-class:`ResourceNotFoundException ` + exception will result. + +**Imports:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/DescribeTable.java + :lines: 15-20 + +**Code:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/DescribeTable.java + :lines: 50-87 + :dedent: 8 + +See the :sdk-examples-java-dynamodb:`complete sample `. + + +.. _dynamodb-update-table: + +Modify (Update) a Table +======================= + +You can update the provisioned throughput values for your table at any time by calling the +:aws-java-class:`DynamoDB client `'s :methodname:`updateTable` +method. + +.. note:: If the named table doesn't exist for your account and region, then a + :aws-java-class:`ResourceNotFoundException ` + exception will result. + +**Imports:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java + :lines: 15-22 + +**Code:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java + :lines: 82-105 + :dedent: 8 + +See the :sdk-examples-java-dynamodb:`complete sample `. + + +.. _dynamodb-delete-table: + +Delete a Table +============== + +To delete a table, call the :aws-java-class:`DynamoDB client `'s +:methodname:`deleteTable` method, passing it the table's name. + +.. note:: If the named table doesn't exist for your account and region, then a + :aws-java-class:`ResourceNotFoundException ` + exception will result. + +**Imports:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/DeleteTable.java + :lines: 15-16 + +**Code:** + +.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/DeleteTable.java + :lines: 51-58 + :dedent: 8 + +See the :sdk-examples-java-dynamodb:`complete sample `. + + +See Also +======== + +* :ddb-dg:`Guidelines for Working with Tables ` in the |ddb-dg| +* :ddb-dg:`Working with Tables in DynamoDB ` in the |ddb-dg| + diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index 3554f4a..cc7c2ae 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -23,7 +23,7 @@ This section provides tutorials and examples of using the |sdk-java| to program :glob: java-dg-samples - prog-services-ddb + examples/dynamodb prog-services-ec2 prog-services-sts prog-services-swf From da1c51dd45a8f921a896558454a55c36110a9ba5 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Mon, 19 Dec 2016 16:27:45 -0800 Subject: [PATCH 021/225] flatten guide layout, remove obsolete files --- doc_source/document-history.rst | 104 +++++++++--------- .../items.rst => examples-dynamodb-items.rst} | 12 +- ...n.rst => examples-dynamodb-query-scan.rst} | 0 ...ables.rst => examples-dynamodb-tables.rst} | 24 ++-- .../dynamodb.rst => examples-dynamodb.rst} | 8 +- .../buckets.rst => examples-s3-buckets.rst} | 24 ++-- .../objects.rst => examples-s3-objects.rst} | 28 ++--- .../{examples/s3.rst => examples-s3.rst} | 4 +- .../complete-examples-note.txt | 0 .../{examples => includes}/examples-note.txt | 0 doc_source/prog-services-ddb.rst | 21 ---- doc_source/prog-services.rst | 5 +- doc_source/setup-install.rst | 2 +- 13 files changed, 107 insertions(+), 125 deletions(-) rename doc_source/{examples/dynamodb/items.rst => examples-dynamodb-items.rst} (83%) rename doc_source/{examples/dynamodb/query-scan.rst => examples-dynamodb-query-scan.rst} (100%) rename doc_source/{examples/dynamodb/tables.rst => examples-dynamodb-tables.rst} (84%) rename doc_source/{examples/dynamodb.rst => examples-dynamodb.rst} (50%) rename doc_source/{examples/s3/buckets.rst => examples-s3-buckets.rst} (78%) rename doc_source/{examples/s3/objects.rst => examples-s3-objects.rst} (79%) rename doc_source/{examples/s3.rst => examples-s3.rst} (90%) rename doc_source/{examples => includes}/complete-examples-note.txt (100%) rename doc_source/{examples => includes}/examples-note.txt (100%) delete mode 100644 doc_source/prog-services-ddb.rst diff --git a/doc_source/document-history.rst b/doc_source/document-history.rst index 677495c..82a71ed 100644 --- a/doc_source/document-history.rst +++ b/doc_source/document-history.rst @@ -16,89 +16,93 @@ This topic describes important changes to the |sdk-java-dg| over the course of i **Last documentation update:** |today| +Dec 16, 2016 + Added new example topics for |DDB|: :doc:`examples-dynamodb-tables` and + :doc:`examples-dynamodb-items`. + Sep 26, 2016 - The topics in the **Advanced** section have been moved into :doc:`basics`, since they really are - central to using the SDK. + The topics in the **Advanced** section have been moved into :doc:`basics`, since they really are + central to using the SDK. Aug 25, 2016 - A new topic, :doc:`creating-clients`, has been added to :doc:`basics`, which demonstrates how to - use *client builders* to simplify the creation of AWS service clients. + A new topic, :doc:`creating-clients`, has been added to :doc:`basics`, which demonstrates how to + use *client builders* to simplify the creation of AWS service clients. - The :doc:`prog-services` section has been updated with :doc:`new examples for S3 ` - which are backed by a `repository on GitHub `_ that contains the complete - example code. + The :doc:`prog-services` section has been updated with :doc:`new examples for S3 ` + which are backed by a `repository on GitHub `_ that contains the complete + example code. May 02, 2016 - A new topic, :doc:`basics-async`, has been added to the :doc:`basics` section, describing how to - work with asynchronous client methods that return :classname:`Future` objects or that take an - :classname:`AsyncHandler`. + A new topic, :doc:`basics-async`, has been added to the :doc:`basics` section, describing how to + work with asynchronous client methods that return :classname:`Future` objects or that take an + :classname:`AsyncHandler`. Apr 26, 2016 - The *SSL Certificate Requirements* topic has been removed, since it is no longer relevant. - Support for SHA-1 signed certificates was deprecated in 2015 and the site that housed the test - scripts has been removed. + The *SSL Certificate Requirements* topic has been removed, since it is no longer relevant. + Support for SHA-1 signed certificates was deprecated in 2015 and the site that housed the test + scripts has been removed. Mar 14, 2016 - Added a new topic to the |SWF| section: :doc:`swf-lambda-task`, which describes how to implement - a |SWF| workflow that calls |LAM| functions as tasks as an alternative to using traditional - |SWF| activities. + Added a new topic to the |SWF| section: :doc:`swf-lambda-task`, which describes how to implement + a |SWF| workflow that calls |LAM| functions as tasks as an alternative to using traditional |SWF| + activities. Mar 04, 2016 - The :doc:`prog-services-swf` section has been updated with new content: + The :doc:`prog-services-swf` section has been updated with new content: - * :doc:`swf-basics` |ndash| Provides basic information about how to include SWF in your - projects. + * :doc:`swf-basics` |ndash| Provides basic information about how to include SWF in your projects. - * :doc:`swf-hello` |ndash| A new tutorial that provides step-by-step guidance for Java - developers new to |SWF|. + * :doc:`swf-hello` |ndash| A new tutorial that provides step-by-step guidance for Java developers + new to |SWF|. - * :doc:`swf-graceful-shutdown` |ndash| Describes how you can gracefully shut down |SWF| - worker classes using Java's concurrency classes. + * :doc:`swf-graceful-shutdown` |ndash| Describes how you can gracefully shut down |SWF| worker + classes using Java's concurrency classes. Feb 23, 2016 - The source for the |sdk-java-dg| has been moved to :github:`aws-java-developer-guide - `. + The source for the |sdk-java-dg| has been moved to :github:`aws-java-developer-guide + `. Dec 28, 2015 - :doc:`java-dg-jvm-ttl` has been moved from **Advanced** into :doc:`basics`, and has been - rewritten for clarity. + :doc:`java-dg-jvm-ttl` has been moved from **Advanced** into :doc:`basics`, and has been + rewritten for clarity. - :doc:`setup-project-maven` has been updated with information about how to include the - SDK's bill of materials (BOM) in your project. + :doc:`setup-project-maven` has been updated with information about how to include the SDK's bill + of materials (BOM) in your project. Aug 04, 2015 - *SSL Certificate Requirements* is a new topic in the :doc:`getting-started` section that - describes AWS' move to SHA256-signed certificates for SSL connections, and how to fix early 1.6 - and previous Java environments to use these certificates, which are :emphasis:`required` for AWS - access after September 30, 2015. + *SSL Certificate Requirements* is a new topic in the :doc:`getting-started` section that + describes AWS' move to SHA256-signed certificates for SSL connections, and how to fix early 1.6 + and previous Java environments to use these certificates, which are :emphasis:`required` for AWS + access after September 30, 2015. - .. note:: Java 1.7+ is already capable of working with SHA256-signed certificates. + .. note:: Java 1.7+ is already capable of working with SHA256-signed certificates. May 14, 2014 - The :doc:`introduction ` and :doc:`getting started ` material has been - heavily revised to support the new guide structure and now includes guidance about how to - :doc:`setup-credentials`. + The :doc:`introduction ` and :doc:`getting started ` material has been + heavily revised to support the new guide structure and now includes guidance about how to + :doc:`setup-credentials`. - The discussion of :doc:`code samples ` has been moved into its own topic in the - :ref:`additional-resources` section. + The discussion of :doc:`code samples ` has been moved into its own topic in the + :ref:`additional-resources` section. - Information about how to :ref:`view the SDK revision history ` has been moved - into the introduction. + Information about how to :ref:`view the SDK revision history ` has been moved + into the introduction. May 9, 2014 - The overall structure of the |sdk-java| documentation has been simplified, and the - :doc:`getting-started` and :ref:`additional-resources` topics have been updated. + The overall structure of the |sdk-java| documentation has been simplified, and the + :doc:`getting-started` and :ref:`additional-resources` topics have been updated. - New topics have been added: + New topics have been added: - * :doc:`credentials` |ndash| discusses the various ways that you can specify credentials for use - with the |sdk-java|. + * :doc:`credentials` |ndash| discusses the various ways that you can specify credentials for use + with the |sdk-java|. - * :doc:`java-dg-roles` |ndash| provides information about how to securely specify credentials - for applications running on EC2 instances. + * :doc:`java-dg-roles` |ndash| provides information about how to securely specify credentials for + applications running on EC2 instances. Sep 9, 2013 - This topic, *Document History*, tracks changes to the |sdk-java-dg|. It is intended as a companion - to the release notes history. + This topic, *Document History*, tracks changes to the |sdk-java-dg|. It is intended as a + companion to the release notes history. + diff --git a/doc_source/examples/dynamodb/items.rst b/doc_source/examples-dynamodb-items.rst similarity index 83% rename from doc_source/examples/dynamodb/items.rst rename to doc_source/examples-dynamodb-items.rst index 3502eb8..e3dbf2e 100644 --- a/doc_source/examples/dynamodb/items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -24,12 +24,12 @@ the item. **Imports:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/GetItem.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/GetItem.java :lines: 15-21 **Code:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/GetItem.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/GetItem.java :lines: 68-102 :dedent: 8 @@ -52,12 +52,12 @@ by the request. **Imports:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/PutItem.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/PutItem.java :lines: 15-20 **Code:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/PutItem.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/PutItem.java :lines: 76-96 :dedent: 8 @@ -79,12 +79,12 @@ method, providing a table name, primary key value and a map of fields to update. **Imports:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java :lines: 15-22 **Code:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java :lines: 82-105 :dedent: 8 diff --git a/doc_source/examples/dynamodb/query-scan.rst b/doc_source/examples-dynamodb-query-scan.rst similarity index 100% rename from doc_source/examples/dynamodb/query-scan.rst rename to doc_source/examples-dynamodb-query-scan.rst diff --git a/doc_source/examples/dynamodb/tables.rst b/doc_source/examples-dynamodb-tables.rst similarity index 84% rename from doc_source/examples/dynamodb/tables.rst rename to doc_source/examples-dynamodb-tables.rst index c98b2b1..856f7f0 100644 --- a/doc_source/examples/dynamodb/tables.rst +++ b/doc_source/examples-dynamodb-tables.rst @@ -48,7 +48,7 @@ must also supply initial provisioned throughput values and give the table a name **Imports:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java :lines: 15-23 .. _dynamodb-create-table-simple: @@ -60,7 +60,7 @@ This code creates a table with a simple primary key ("Name"): **Code:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java :lines: 58-73 :dedent: 8 @@ -78,7 +78,7 @@ To create a table with a composite primary key, add an additional **Code:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTableCompositeKey.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTableCompositeKey.java :lines: 58-67 :dedent: 8 @@ -98,12 +98,12 @@ You can list the tables in a particular region by calling the :aws-java-class:`D **Imports:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java :lines: 15-18 **Code:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java :lines: 32-64 :dedent: 8 @@ -128,12 +128,12 @@ You can describe (get information about) a table by calling the :aws-java-class: **Imports:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/DescribeTable.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/DescribeTable.java :lines: 15-20 **Code:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/DescribeTable.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/DescribeTable.java :lines: 50-87 :dedent: 8 @@ -155,13 +155,13 @@ method. **Imports:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java :lines: 15-22 **Code:** -.. literalinclude:: ../../example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java - :lines: 82-105 +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java + :lines: 57-67 :dedent: 8 See the :sdk-examples-java-dynamodb:`complete sample `. @@ -181,12 +181,12 @@ To delete a table, call the :aws-java-class:`DynamoDB client ` in the the |s3-dg|. -.. include:: ../../common/s3-note-incomplete-upload-policy.txt +.. include:: common/s3-note-incomplete-upload-policy.txt -.. include:: ../examples-note.txt +.. include:: includes/examples-note.txt .. contents:: :local: @@ -31,12 +31,12 @@ Use the |s3client| client's :methodname:`createBucket` method. The new :aws-java **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/CreateBucket.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java :lines: 15-18 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/CreateBucket.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java :lines: 42-50 :dedent: 8 @@ -53,12 +53,12 @@ Use the |s3client| client's :methodname:`listBucket` method. If successful, a Li **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/ListBuckets.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListBuckets.java :lines: 15-19 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/ListBuckets.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListBuckets.java :lines: 31-36 :dedent: 8 @@ -87,12 +87,12 @@ delete each one. **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 15-17, 19-20, 23 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 51, 53-70, 94-97 :dedent: 8 @@ -111,12 +111,12 @@ objects and then :methodname:`deleteVersion` to delete each one. **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 15-23 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 51, 53-90, 94-97 :dedent: 8 @@ -131,12 +131,12 @@ bucket itself, use the |s3client| client's :methodname:`deleteBucket` method. **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 15-17 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 51, 53, 93-97 :dedent: 8 diff --git a/doc_source/examples/s3/objects.rst b/doc_source/examples-s3-objects.rst similarity index 79% rename from doc_source/examples/s3/objects.rst rename to doc_source/examples-s3-objects.rst index 0c22dbb..fb6645a 100644 --- a/doc_source/examples/s3/objects.rst +++ b/doc_source/examples-s3-objects.rst @@ -9,9 +9,9 @@ Operations on Objects objects, put, rename, upload An |S3| object represents a *file*, or collection of data. Every object must reside within a -:doc:`bucket `. +:doc:`bucket `. -.. include:: ../examples-note.txt +.. include:: includes/examples-note.txt .. contents:: :local: @@ -28,12 +28,12 @@ name, and file to upload. *The bucket must exist, or an error will result*. **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/PutObject.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/PutObject.java :lines: 15-17 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/PutObject.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/PutObject.java :lines: 46-52 :dedent: 8 @@ -56,12 +56,12 @@ name. **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/ListObjects.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListObjects.java :lines: 16-20 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/ListObjects.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListObjects.java :lines: 45-50 :dedent: 8 @@ -87,12 +87,12 @@ name as the object's key): **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/GetObject.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetObject.java :lines: 15-23 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/GetObject.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetObject.java :lines: 50-71 :dedent: 8 @@ -109,12 +109,12 @@ and the destination bucket and name. **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/CopyObject.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CopyObject.java :lines: 15-17 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/CopyObject.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CopyObject.java :lines: 46-52 :dedent: 8 @@ -135,12 +135,12 @@ object to delete. *The specified bucket and object key must exist, or an error w **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteObject.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteObject.java :lines: 15-17 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteObject.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteObject.java :lines: 47-53 :dedent: 8 @@ -158,12 +158,12 @@ from the same bucket by passing their names to the :aws-java-class:`DeleteObject **Imports:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteObjects.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteObjects.java :lines: 15-18 **Code:** -.. literalinclude:: ../../example_code/s3/src/main/java/aws/example/s3/DeleteObjects.java +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteObjects.java :lines: 52-60 :dedent: 8 diff --git a/doc_source/examples/s3.rst b/doc_source/examples-s3.rst similarity index 90% rename from doc_source/examples/s3.rst rename to doc_source/examples-s3.rst index 3fba228..5d89d46 100644 --- a/doc_source/examples/s3.rst +++ b/doc_source/examples-s3.rst @@ -13,6 +13,6 @@ This section provides examples of programming |S3|_ using the |sdk-java|_. :titlesonly: :maxdepth: 1 - s3/buckets - s3/objects + examples-s3-buckets + examples-s3-objects diff --git a/doc_source/examples/complete-examples-note.txt b/doc_source/includes/complete-examples-note.txt similarity index 100% rename from doc_source/examples/complete-examples-note.txt rename to doc_source/includes/complete-examples-note.txt diff --git a/doc_source/examples/examples-note.txt b/doc_source/includes/examples-note.txt similarity index 100% rename from doc_source/examples/examples-note.txt rename to doc_source/includes/examples-note.txt diff --git a/doc_source/prog-services-ddb.rst b/doc_source/prog-services-ddb.rst deleted file mode 100644 index fea6d20..0000000 --- a/doc_source/prog-services-ddb.rst +++ /dev/null @@ -1,21 +0,0 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 - International License (the "License"). You may not use this file except in compliance with the - License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. - - This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - either express or implied. See the License for the specific language governing permissions and - limitations under the License. - -##### -|DDB| -##### - -This section provides examples of programming |DDB|_ with the |sdk-java|. - -.. toctree:: - :maxdepth: 1 - :titlesonly: - - java-dg-tomcat-session-manager diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index cc7c2ae..ff6ebfa 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -20,11 +20,10 @@ This section provides tutorials and examples of using the |sdk-java| to program .. toctree:: :maxdepth: 1 :titlesonly: - :glob: java-dg-samples - examples/dynamodb + examples-dynamodb prog-services-ec2 prog-services-sts prog-services-swf - examples/s3 + examples-s3 diff --git a/doc_source/setup-install.rst b/doc_source/setup-install.rst index f473fe2..c55792b 100644 --- a/doc_source/setup-install.rst +++ b/doc_source/setup-install.rst @@ -19,7 +19,7 @@ Prerequisites To use the |sdk-java|, you must have: -* a suitable :ref:`Java Development Environment`. +* a suitable :ref:`Java Development Environment `. * An AWS account and access keys. For instructions, see :doc:`signup-create-iam-user`. From 0181bb32fcf97a57074b928365cdd30787b53cb2 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Tue, 3 Jan 2017 12:44:43 -0800 Subject: [PATCH 022/225] update copyright to 2017 --- README.rst | 2 +- build_docs.py | 2 +- doc_source/_includes.txt | 10 +++++++ doc_source/basics-async.rst | 2 +- doc_source/basics.rst | 2 +- doc_source/conf.py | 2 +- doc_source/create-key-pair.rst | 2 +- doc_source/create-security-group.rst | 2 +- doc_source/creating-clients.rst | 2 +- doc_source/credentials.rst | 2 +- doc_source/document-history.rst | 2 +- doc_source/examples-dynamodb-items.rst | 10 +++++++ doc_source/examples-dynamodb-query-scan.rst | 10 +++++++ doc_source/examples-dynamodb-tables.rst | 10 +++++++ doc_source/examples-dynamodb.rst | 10 +++++++ doc_source/examples-s3-buckets.rst | 10 +++++++ doc_source/examples-s3-objects.rst | 10 +++++++ doc_source/examples-s3.rst | 10 +++++++ doc_source/getting-started.rst | 2 +- doc_source/how-to-ec2.rst | 2 +- .../includes/complete-examples-note.txt | 9 ++++++ doc_source/includes/examples-note.txt | 10 +++++++ doc_source/index.rst | 2 +- doc_source/java-dg-access-control.rst | 2 +- doc_source/java-dg-exceptions.rst | 2 +- doc_source/java-dg-jvm-ttl.rst | 2 +- doc_source/java-dg-logging.rst | 2 +- doc_source/java-dg-region-selection.rst | 2 +- doc_source/java-dg-roles.rst | 2 +- doc_source/java-dg-samples.rst | 2 +- doc_source/java-dg-tomcat-session-manager.rst | 2 +- doc_source/prog-services-ec2.rst | 2 +- doc_source/prog-services-sts.rst | 2 +- doc_source/prog-services-swf-list-domains.rst | 2 +- .../prog-services-swf-register-domain.rst | 2 +- doc_source/prog-services-swf.rst | 2 +- doc_source/prog-services.rst | 2 +- doc_source/run-instance.rst | 2 +- doc_source/section-client-configuration.rst | 2 +- doc_source/setup-credentials.rst | 30 +++++++++++++++---- doc_source/setup-install.rst | 2 +- doc_source/setup-project-gradle.rst | 2 +- doc_source/setup-project-maven.rst | 2 +- doc_source/signup-create-iam-user.rst | 2 +- .../CreateSwfDomain-list_swf_domains.java | 2 +- .../CreateSwfDomain-register_swf_domain.java | 2 +- .../CreateSwfDomain/CreateSwfDomain.java | 2 +- doc_source/snippets/CreateSwfDomain/build.xml | 2 +- .../snippets/GetS3ObjectApp/GetS3Object.java | 2 +- doc_source/snippets/GetS3ObjectApp/build.xml | 2 +- .../ec2/cancel-terminate-spot-request.java | 2 +- .../snippets/ec2/tag-spot-instances.java | 2 +- .../snippets/ec2/tag-spot-requests.java | 2 +- .../example/swf/hello/ActivityWorker.java | 2 +- .../ActivityWorkerWithGracefulShutdown.java | 2 +- .../java/example/swf/hello/HelloTypes.java | 2 +- .../example/swf/hello/WorkflowStarter.java | 2 +- .../example/swf/hello/WorkflowWorker.java | 2 +- .../SwfHelloLambdaFunction.java | 2 +- .../example/swf/hellolambda/HelloTypes.java | 2 +- .../swf/hellolambda/WorkflowStarter.java | 2 +- .../swf/hellolambda/WorkflowWorker.java | 2 +- .../example/lambda/InvokeLambdaFunction.java | 2 +- .../lambda/InvokeLambdaFunctionAsync.java | 2 +- .../lambda/InvokeLambdaFunctionCallback.java | 2 +- ...etrieve-credentials-properties-file-2.java | 2 +- .../retrieve-credentials-properties-file.java | 2 +- doc_source/snippets/spot-request-ebs.java | 2 +- .../snippets/spot-request-set-az-group.java | 2 +- doc_source/snippets/spot-request-set-az.java | 2 +- .../spot-request-set-launch-group.java | 2 +- .../spot-request-set-placement-group.java | 2 +- .../snippets/spot-request-set-type.java | 2 +- .../spot-request-set-validity-period.java | 2 +- doc_source/snippets/spot-request-tagging.java | 2 +- .../snippets/sts_basic_session_creds.java | 2 +- ...-spot-adv-java-limit-request-duration.java | 2 +- doc_source/swf-basics.rst | 10 +++++++ doc_source/swf-graceful-shutdown.rst | 10 +++++++ doc_source/swf-hello.rst | 4 +-- doc_source/swf-lambda-task.rst | 2 +- doc_source/tutorial-spot-adv-java.rst | 2 +- doc_source/tutorial-spot-instances-java.rst | 2 +- doc_source/welcome.rst | 2 +- 84 files changed, 216 insertions(+), 77 deletions(-) diff --git a/README.rst b/README.rst index 4c80a30..d67f548 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/build_docs.py b/build_docs.py index cb2cda3..b21443d 100755 --- a/build_docs.py +++ b/build_docs.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # This file is licensed under the Apache License, Version 2.0 (the "License"). # You may not use this file except in compliance with the License. A copy of the diff --git a/doc_source/_includes.txt b/doc_source/_includes.txt index 449c128..061ba12 100644 --- a/doc_source/_includes.txt +++ b/doc_source/_includes.txt @@ -1,3 +1,13 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + .. project-specific includes for this project. .. |sdk-java-dl| replace:: https://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip diff --git a/doc_source/basics-async.rst b/doc_source/basics-async.rst index 5ade8f1..83baec8 100644 --- a/doc_source/basics-async.rst +++ b/doc_source/basics-async.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/basics.rst b/doc_source/basics.rst index 3887cde..c9881e9 100644 --- a/doc_source/basics.rst +++ b/doc_source/basics.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/conf.py b/doc_source/conf.py index bcff147..0eb5d8a 100644 --- a/doc_source/conf.py +++ b/doc_source/conf.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You may not # use this file except in compliance with the License. A copy of the License diff --git a/doc_source/create-key-pair.rst b/doc_source/create-key-pair.rst index d376245..72d9e05 100644 --- a/doc_source/create-key-pair.rst +++ b/doc_source/create-key-pair.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/create-security-group.rst b/doc_source/create-security-group.rst index fbb1f42..668091a 100644 --- a/doc_source/create-security-group.rst +++ b/doc_source/create-security-group.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/creating-clients.rst b/doc_source/creating-clients.rst index 10f63d6..9694348 100644 --- a/doc_source/creating-clients.rst +++ b/doc_source/creating-clients.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 41c70ab..11a0229 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/document-history.rst b/doc_source/document-history.rst index 82a71ed..0153c76 100644 --- a/doc_source/document-history.rst +++ b/doc_source/document-history.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index e3dbf2e..eaebec7 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -1,3 +1,13 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + ################## Working with Items ################## diff --git a/doc_source/examples-dynamodb-query-scan.rst b/doc_source/examples-dynamodb-query-scan.rst index c1c8ebf..2373ab6 100644 --- a/doc_source/examples-dynamodb-query-scan.rst +++ b/doc_source/examples-dynamodb-query-scan.rst @@ -1,3 +1,13 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + ##################### Querying and Scanning ##################### diff --git a/doc_source/examples-dynamodb-tables.rst b/doc_source/examples-dynamodb-tables.rst index 856f7f0..25d4257 100644 --- a/doc_source/examples-dynamodb-tables.rst +++ b/doc_source/examples-dynamodb-tables.rst @@ -1,3 +1,13 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + ################### Working with Tables ################### diff --git a/doc_source/examples-dynamodb.rst b/doc_source/examples-dynamodb.rst index 7081016..03cd24e 100644 --- a/doc_source/examples-dynamodb.rst +++ b/doc_source/examples-dynamodb.rst @@ -1,3 +1,13 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + ##### |DDB| ##### diff --git a/doc_source/examples-s3-buckets.rst b/doc_source/examples-s3-buckets.rst index 623af20..d47e2af 100644 --- a/doc_source/examples-s3-buckets.rst +++ b/doc_source/examples-s3-buckets.rst @@ -1,3 +1,13 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + ###################################### Creating, Listing and Deleting Buckets ###################################### diff --git a/doc_source/examples-s3-objects.rst b/doc_source/examples-s3-objects.rst index fb6645a..626be7e 100644 --- a/doc_source/examples-s3-objects.rst +++ b/doc_source/examples-s3-objects.rst @@ -1,3 +1,13 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + ##################### Operations on Objects ##################### diff --git a/doc_source/examples-s3.rst b/doc_source/examples-s3.rst index 5d89d46..e077d6e 100644 --- a/doc_source/examples-s3.rst +++ b/doc_source/examples-s3.rst @@ -1,3 +1,13 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + #### |S3| #### diff --git a/doc_source/getting-started.rst b/doc_source/getting-started.rst index d1b67f9..0ebc0f9 100644 --- a/doc_source/getting-started.rst +++ b/doc_source/getting-started.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/how-to-ec2.rst b/doc_source/how-to-ec2.rst index 48caa7c..a6c5538 100644 --- a/doc_source/how-to-ec2.rst +++ b/doc_source/how-to-ec2.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/includes/complete-examples-note.txt b/doc_source/includes/complete-examples-note.txt index 2c4ed39..4994160 100644 --- a/doc_source/includes/complete-examples-note.txt +++ b/doc_source/includes/complete-examples-note.txt @@ -1,3 +1,12 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. .. note:: Only the code that is necessary to demonstrate each technique is supplied here, but :sdk-doc-examples:`complete example code is available on GitHub `, where you can download a diff --git a/doc_source/includes/examples-note.txt b/doc_source/includes/examples-note.txt index 163a238..1393735 100644 --- a/doc_source/includes/examples-note.txt +++ b/doc_source/includes/examples-note.txt @@ -1,3 +1,13 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + .. note:: These code snippets assume that you understand the material in :doc:`basics` and have configured default AWS credentials using the information in :doc:`setup-credentials`. diff --git a/doc_source/index.rst b/doc_source/index.rst index f7f470c..1f734b0 100644 --- a/doc_source/index.rst +++ b/doc_source/index.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-access-control.rst b/doc_source/java-dg-access-control.rst index 1aaef53..53c4f14 100644 --- a/doc_source/java-dg-access-control.rst +++ b/doc_source/java-dg-access-control.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-exceptions.rst b/doc_source/java-dg-exceptions.rst index 6cc1b7e..0152b53 100644 --- a/doc_source/java-dg-exceptions.rst +++ b/doc_source/java-dg-exceptions.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-jvm-ttl.rst b/doc_source/java-dg-jvm-ttl.rst index ce1d72b..64ca71a 100644 --- a/doc_source/java-dg-jvm-ttl.rst +++ b/doc_source/java-dg-jvm-ttl.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-logging.rst b/doc_source/java-dg-logging.rst index 9202d11..d08b9d9 100644 --- a/doc_source/java-dg-logging.rst +++ b/doc_source/java-dg-logging.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index 0095573..b847a15 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-roles.rst b/doc_source/java-dg-roles.rst index d752fc7..a514ea5 100644 --- a/doc_source/java-dg-roles.rst +++ b/doc_source/java-dg-roles.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-samples.rst b/doc_source/java-dg-samples.rst index 6c03178..9dc2ac6 100644 --- a/doc_source/java-dg-samples.rst +++ b/doc_source/java-dg-samples.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-tomcat-session-manager.rst b/doc_source/java-dg-tomcat-session-manager.rst index d0a1427..81f1205 100644 --- a/doc_source/java-dg-tomcat-session-manager.rst +++ b/doc_source/java-dg-tomcat-session-manager.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-ec2.rst b/doc_source/prog-services-ec2.rst index b6948c3..328ab2c 100644 --- a/doc_source/prog-services-ec2.rst +++ b/doc_source/prog-services-ec2.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-sts.rst b/doc_source/prog-services-sts.rst index b2dabd0..8423751 100644 --- a/doc_source/prog-services-sts.rst +++ b/doc_source/prog-services-sts.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-swf-list-domains.rst b/doc_source/prog-services-swf-list-domains.rst index 0937434..a7af948 100644 --- a/doc_source/prog-services-swf-list-domains.rst +++ b/doc_source/prog-services-swf-list-domains.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-swf-register-domain.rst b/doc_source/prog-services-swf-register-domain.rst index 0437af8..16eacf6 100644 --- a/doc_source/prog-services-swf-register-domain.rst +++ b/doc_source/prog-services-swf-register-domain.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-swf.rst b/doc_source/prog-services-swf.rst index 9691236..ff9332f 100644 --- a/doc_source/prog-services-swf.rst +++ b/doc_source/prog-services-swf.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index ff6ebfa..9192898 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/run-instance.rst b/doc_source/run-instance.rst index 4868567..0482bbf 100644 --- a/doc_source/run-instance.rst +++ b/doc_source/run-instance.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/section-client-configuration.rst b/doc_source/section-client-configuration.rst index 6f18db7..a2ac76f 100644 --- a/doc_source/section-client-configuration.rst +++ b/doc_source/section-client-configuration.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/setup-credentials.rst b/doc_source/setup-credentials.rst index 4e9f2fe..75fdaad 100644 --- a/doc_source/setup-credentials.rst +++ b/doc_source/setup-credentials.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -###################################### -Set up AWS Credentials for Development -###################################### +################################################# +Set up AWS Credentials and Region for Development +################################################# To connect to any of the supported services with the |sdk-java|, you must provide AWS credentials. The AWS SDKs and CLIs use :emphasis:`provider chains` to look for AWS credentials in a number of @@ -26,10 +26,15 @@ or if you're using the Eclipse IDE for development, refer to the following topic * Set up AWS credentials within Eclipse using the |tke|_. See :tke-ug:`Set up AWS Credentials ` in the |tke-ug|_ for more information. +.. _setup-credentials-setting: + +Setting AWS Credentials +======================= + Setting your credentials for use by the |sdk-java| can be done in a number of ways, but here are the recommended approaches: -.. the following file is in the shared content... +.. The following file is in the shared content at https://github.com/awsdocs/aws-doc-shared-content .. include:: common/sdk-shared-credentials.txt @@ -37,3 +42,18 @@ Once you have set your AWS credentials using one of these methods, they will be by the |sdk-java| by using the default credential provider chain. For further information about working with AWS credentials in your Java applications, see :doc:`credentials`. +.. _setup-credentials-setting-region: + +Setting the AWS Region +====================== + +You should set a default AWS Region that will be used for accessing AWS services with the AWS SDK +for Java. For the best network performance, you should choose a region that's geographically close +to you (or to your customers). + +You can use similar techniques to setting credentials to set your default AWS region. + +.. The following file is in the shared content at https://github.com/awsdocs/aws-doc-shared-content + +.. include:: common/sdk-shared-region.txt + diff --git a/doc_source/setup-install.rst b/doc_source/setup-install.rst index c55792b..2ceb2f5 100644 --- a/doc_source/setup-install.rst +++ b/doc_source/setup-install.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index c68b3f2..fd2d5ad 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/setup-project-maven.rst b/doc_source/setup-project-maven.rst index 87fb54e..f5d24d6 100644 --- a/doc_source/setup-project-maven.rst +++ b/doc_source/setup-project-maven.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/signup-create-iam-user.rst b/doc_source/signup-create-iam-user.rst index 918b8cc..2bf7b7c 100644 --- a/doc_source/signup-create-iam-user.rst +++ b/doc_source/signup-create-iam-user.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/snippets/CreateSwfDomain-list_swf_domains.java b/doc_source/snippets/CreateSwfDomain-list_swf_domains.java index c4a54dc..dccb741 100644 --- a/doc_source/snippets/CreateSwfDomain-list_swf_domains.java +++ b/doc_source/snippets/CreateSwfDomain-list_swf_domains.java @@ -1,5 +1,5 @@ /* - Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This file is licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of diff --git a/doc_source/snippets/CreateSwfDomain-register_swf_domain.java b/doc_source/snippets/CreateSwfDomain-register_swf_domain.java index 322f420..ad1eded 100644 --- a/doc_source/snippets/CreateSwfDomain-register_swf_domain.java +++ b/doc_source/snippets/CreateSwfDomain-register_swf_domain.java @@ -1,5 +1,5 @@ /* - Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This file is licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of diff --git a/doc_source/snippets/CreateSwfDomain/CreateSwfDomain.java b/doc_source/snippets/CreateSwfDomain/CreateSwfDomain.java index 5688ac7..7e54088 100644 --- a/doc_source/snippets/CreateSwfDomain/CreateSwfDomain.java +++ b/doc_source/snippets/CreateSwfDomain/CreateSwfDomain.java @@ -1,5 +1,5 @@ /* - Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. This file is licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of diff --git a/doc_source/snippets/CreateSwfDomain/build.xml b/doc_source/snippets/CreateSwfDomain/build.xml index a45ae60..cb999e5 100644 --- a/doc_source/snippets/CreateSwfDomain/build.xml +++ b/doc_source/snippets/CreateSwfDomain/build.xml @@ -1,5 +1,5 @@ dp+=K^h4O(t)`k+ zh?sU?XOT^vG=tj=h~CBeqkn=?19SDyQCpjtnT>nf&6xQlONxIIG9dNI&vl(?LAyq+ zf7(TF%<|5w>{~6zaCoe=p+_rn%~m^Eb;>OL3+F?Qx&~9W268%8$$yLda!ag^_=Rg% z_N(?-=8;TtM(>bJWtL|ujMO+r#=9RlyB)uCWTg&^z>aoK{g8quu5PiXk0stBC*SNg`^9Il4f6UHWuEu_t3mL%VzL#MtnJn=}>ij`7mYr zL09S-qo%Fj2}?y%VB-3jA^iN0l19np_9ErN$|>hd6arrpaJjns%ogJ9Xwj}3w@M?8Ums=nt|uf2HugEjBHoCyEx5g` zK^@#W9Ds%jDQzt4RVUfz2Z?2Dms4UY_VdbJNQ@N>_R)|OEQGK;rh+>PbPb%oB?9M$ak z2>EuTly5dVqtnw2YRnnhv*&skA)MBF>GzH7!3Kr=BPr*R>(Aumd&D9jG6vHE_Rr!jxj*gQzkZ~s`@mVt5&x)v-8Cu46^_+1xG*%GJ}y;n(HQJ6YCU-{tTBC|A@a@{(;v@eNsE_<6X;ZCvu=UJkT0{UE73A_PoTg?u;KN-tH?h2v zm_;M)6;qe~bd&k(l-b=PELD5!=MIOMSnsBvaap8m^C{na`zgtQ+2|F2SOk}DIyLVG zqHRg|Q2j7$I`es-CEb;-Fbq$47cV!5#=4B0j`*WEqt)+PMq-U>(ubQBK_c?vqGLj5 z>sv2)@Vd=a7m3>${O)W&oW(UR4(&DKuH8YtpMdX|elqGzG5luBEW?J<2;(=kK&Ms= zef-2csExa3TeUhMAi&T1?lE&cy>RCgy4UV=b(^WeRENsu7GuZgsQ;VdNxaJz)1P|e zbp&SV&^sr`+>z^$oIB2HFNuY_r@XCIWtbW%!$6NHn;kCMAVXXzaWBW^ZSd?Bp^O_yES}PAD>H+>imN#5SMtKR_cB%o>uT|ME2;2~+0~!l z^Gw!T0n0XTzUKWx@iIY5Mu25@fkfQ4nci{dOx1v+#W=Ff7Gh&#uRb*7m*fkZsZxCL z^F()ji%_PY%@#gH!D99&d~oJC-(U-WK7NtGWK-+89?c_T2FK3ZL)_+=Sg7fY+0;8^ z(QJ0R-B1Om6qQaZCq(Cy$6@e*`pWm^!dcTc3yjgn3Orvk6?T_NWid{&e7C{+&<*Ce zBlqK@|DNtAk5Xh#akc2D><2Cyy4T=o`q!z-&dty+ZIj^lUkn|LdtyFJIS!{4>8?Ob8QcWINN@23C5FlnmS4V>{K8wOb?|LgK36 zA49tR_Er30)U!MM`>b400Yv5DlY9Jw}yKvug~$qN)4u&FbZdTsm(C z@?G@w;>g67X!{c|R4;L`9hq`h1vVuLNOUSP&Wt=RVee01`X z*kHLWo~#EVTCC=~Yf~0hR-2!qyCM{8>ga<`@cHb+vIFJt<7IgnjXO5-i7t`4P)D z>H!BTkTcK3*!XX^=o$3Yt~NM-3al*fQ|1ea{_<1m7_o4#K=b~x&>*vq*I{ZMkjGO75B6dQbL=?U+R2&U|HDix@ z@Eya&HNUgH#vt6s(cO^h@_j$lPN_tmiTDV({FPn8rF^SqIEz8Pe0GAVd)&D%T0}sG zZsF!}?NZNI@@PjJS;;29qM3IhD8pqQO_zsM5?sfQm#g1M{_&50c?Nh&2i~8P^)k=B P2zWr`p33G(8@~D<23u)d diff --git a/doc_source/images/java-dg-console-iam-role-create.png b/doc_source/images/java-dg-console-iam-role-create.png deleted file mode 100644 index d9a61f37734e6fc9b1927f18c1d12962753a384d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28579 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 P|0}&#e^vCt?A`wXhT(<> diff --git a/doc_source/images/java-dg-console-iam-role-finish.png b/doc_source/images/java-dg-console-iam-role-finish.png deleted file mode 100644 index a225d64f2c665bc9fe62d2e2427c575edbb01fb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17688 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 EWkRVQ0}QG9lwK3Dogdm< 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
IWRus;Nw zb>+l*-|$4lCb8-8n-1Kf^B{?Qrrj6qI(q9MSZe>9H5~nwS_H4Z8bh^&Za8S*_S^8p zG++?xO;~t^LUmsn8 zl!u%YkxRCM59?WJo`qI8{gdf=+-m35Tm<{q9#&oV-t*&kk)2fBWp!=-BHo=&3=}a5 zu5+l(PD4a}rqQLyKRe_DdXCOR3~*z`2>(f6kV5>mU^CD+qmDH@H;=ThDjO1@JYa+2 zg|5fLf#Xl`YnFllm~!MOg{d#-w&+u1czT+y@TOis0@`p*uNxNPrbuxk-yw0oH5VdN zsJ8qNWp+teSWR*f0}*^gt|Li-mX7>{`@J{ zX%n4)F!5~l70?$;bcU!@e*BYY31%a3NKyJV3@7a5_nB#e)s`0X$n^c(^(8%TTs%quW{VSc(o|H(iq| zzO2IyV8#mMSX>dGV1C|*TTbM1CY3GVl*1FXpYj6SKD~=dCQsBHJM0Fq8SCiis3a%1y0nM+L4Ut8S0HR%(^NAbb7So1c3}5U5DP6v3m1Z x&2jkM^}7$CC$BtcfZ1T~i~%->|LbffS;hy<$f`57lmJjc%JLeo%4IFz{2!#$P!RwC diff --git a/doc_source/images/java-dg-console-iam-role-name.png b/doc_source/images/java-dg-console-iam-role-name.png deleted file mode 100644 index dd6e675f4f0f853ad19905402ba601b42d7175c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15053 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

pBV)N6BYHH%b_A*ohzE7e+a`zwC8tgvt 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 diff --git a/doc_source/images/java-dg-console-iam-role-policy-template.png b/doc_source/images/java-dg-console-iam-role-policy-template.png deleted file mode 100644 index 6ad2310f5e5441eb29a86e63e2f6b97691fbdd25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50970 zcmd43bx>VF^EP;Km*7qkk`RKsy9W>M?(QzZ?cx^PJrLYogS)%CyMBkf@2_fiYpZtu z_^Nhq)dlXHIdgl?bU#mbPY)ro(xNDc1c)FI2t`~>=m!V{SqQuZ;9-FlWMk%f;1`08 zn5sPpgxdY~hKQ#`B?KDb9K@xB;g*oFK*Xf>yF0)&ph;N8f#1==#M%y2R5m2`Ho{wz zkfFW4ovDq3skIdd6X63H(2n@lE@*AzYG-O};s7c|8{z<3QUA5t8S1`ueeYmuX$WGz zMMD6tAiQ0Xw>ENc*0nPPY1+KLbw~O)xT(Fqg)Y$54pi4(9SJnUzcnlC+F6-e8H3sh zcY=Vnf1=4-JKE_Rg05fv4*#c{ptYr?p_K#ZW+Xky$6X4 z@hiBb9xc0TXk4f9zRZFUqWC@`G@xS+_k4h+{bU;);`|$oBSg7ih3Wq2WKyDS?u^7U zbK2M>Wm5OT^337TRJM4Myl>VNcv2UN>%X8-Qp6(iOG7LUy%${yIV#K_gpdf@z3uzO zXg@O4fC|Ufet7Q^ZnTqn*)Y1!ondePTgy3T%@+w0+T&!UeDmTdg-(CR0{tEE0_SFB zeYm<#6_ocRF3xyX7Na-CfQC@kbS5lo*(A}3Z-JIDk|I2;!~pt^=h7o(wCTO0vEAKx zp4ApvPN@+CIv-lSemv1~zgJ0&2nJqXin5v6(Lv3x1q7cGo|Y4aSL-ilDrhj@zD>$* zkak39ksSgdaaWsn#_+>O-~|cV(!6E=Bq_DdULXX#wvdZV8Kc(h8hRUv-aZR~K#79^ z{uMOPZ$m^AK`Ff5Wrqb@_;zvYtGK=<=&gky1GV`zKkvF+!#=F&8ZYxrrSC z6|-Zl2k(c;3`v+Gu5OvP`)c=&k83^?!xrlA+rZ2ekn32vL3*79RnQ;?CrP7Pyu!7KNDhApi~ZbJ9;VBvBuE9}kRdarq#KrenF8#x{RF z*l)gS)~r(DTpET$MoEbzkwDc^Yq|KxepmWvsR47b*0QV7@$iqqUyQ;1d4fz9URPe0 zV+au1z%4g;(O}TZ-3-2o@ zNR~cis8V+ZMb7qr8Hm`t==(T$Hh0>?wt?nl@stVQlzW`6_8GQ-a`CKg{nrBNM*8ma z7xF$gh~S`mdHJ7;B_AQKV?IlCLX=LM7aSqUqOooW?ypwz4M$;dIiaj?Mf{-R*7%w6 zLIC2bFKDMO!%WY+$`Nsdod7SMA`Oq6uotHGgi{!E?VFo>*)gX3C26^u^6yQG{qcI$ z&&#T{+3e`corE}1K6OYL{3rXA;bp~zAI@@;2t8(FCBY+>1g*%8VU{=F5qrP!{c>D-0I#hrli(D5?GHX4sgi}9Dm$;R=X!-BSQCflKFJ>EY&*Vk|4y>Pn5oU6%Unwa-?p~tE=LkLdu zQl09njROO^+uLFoaJNWF(!LOc6I_)V)5WZ!T>)A=UGM|n(MUV}4)u7U-ZV%wqHS;O zyUo7Woj*DPCSm9J&Z{A3>I8)}^|@0?+}bcS|=@v=zr$aCEGiFQz=Tj@Xb% zK^J}Axf->N{cPilEps;mP%0@})UB@%&bAjt0v50FE~sV(I5&E6r;nmtD!By(*Keri5Jq_=AgeURAUezBw_dEJfVO6*4_qaa$ zOZZwSe_6EfpX@Kofb6yx6g8hW*bC8$t!hAMCwHRrkBWDy$_6+}%)^EOb1RC4F$s3+ z)cE-LDs@(AAK|6M#XG3$f@Q#!7^#pf+C6Po>$?KDUwX8r$TXkyO;jmfZVoqiGn!=5 zMX0^d8xg%sowW9<+@J+_?O0ev3XTIGL&tb|O~O;VbU%7tF1eg3%jkU0p2YNX1i75p z&ZohU;L0EYOJIM{CT2nX1{~ve2AAxG8`IZlFYAj*?%GqX$>?Z(hr{XL|3Q@9jLxzC zxT%Y*7ru|7jQ;HAwaTN)md0>=2{#B*ZofJ7(c6ZJYbUqiefv&W?!T^qVG!Tm zda)z^U-=1HHU#L=FW1R>z&qjPMK#F(#y_!3snz=+1BioUiTp@a-G5_z`Y$&{bb{W{ zKA0%r|7pzsvRn=w-{&`(M0I_>zYYHX$pCrprk{7ci4Q-HeQLKA5n`$Ugi3)l<~HrbFMID{PQ#vrE4UA}v!|AruCKx8aEP5G#eHZ}_b z+B-ZB)~q_@(ptTxh#=t%yxbjy0zvb)U+qs;Sj;mld0Y-B(d+kqjZXM zPg4Id0ts5-uEP4+&Iwo!u~qZAh-4avV)VvDp2XX?9WB%#)zs9W`y;6|-8@8>!M|fi z9_9bMDAob#2TLFhOjMsJ_4@WE-BV!EX>sJ`BEu?>eemTvzpGtD=zwQ z9Gsk@`FlcJD#)^bm5>Qcm~2wn`K|Bzy{fn3kbB&fS5@oXBG)6qnn{ets58ISgDB+l z@pf#wP*~Tp!)Q8hju(%=(!B$d{ZlPlF^C^-5V@h&?hv0u6TXlagfSLV;O`wu!O)S4 zu6jU~D3^*s z64eGMSXpsTn=eQHe3uZ~M1z__$UP32sGxy-Ck6SJ5f>7aKimi}Fp!gML-XBfWnhu?W0aV3WPs;T(q zuD>-lHb(vWWy%pbG9rzPih5Bi#-jH}W)p%o=Htg~wyTdY+|g@TpqNQ)b0KZ2_~hi! z9MMR%f$g;pza$<{x23#K+2!Qu#lB%)ZOZ1&Kk7A?4;m zws3Dy=Y!Thel=2&kMc{g;t1q@IghNjS%0v1X8cN z4?K@Yj2`Pq+U?A<8jO{~heQAzXzsJW)lJty!gjT@)R=%Sq>_4rrB z>|x~Q-gpk1_X`(D$HWAFvOuQKFi|rw#kv)r(P#)Szz#EdQh}JQ3m@>tD+NPcajjdoIHHJ^91qz*kKTML!iJ>(>~JG#yg`uJrmMdQ3C9S6lb^*G&qfHFkS>#x*C>^fou2IEr8KJyAyA zo1SnOEM1O@iHUd3^YRp_&|a2cvpuio(JvZ%F<*Q&yuZku4~up>R(^k#&L~N#s|Gt! z{z#BNr0zRXm(KrM@JR2tu9#$d$!fda9es9#>-nO4Rp;rS4%H^QqfDtVnC`J3zvoqs zs9F9B&~Sv#14>HtdBADVWW(Min*KoZ=i7JZL=#gDhw z1+;w1HF!_IiSfxuBU^=MYBAtthd8P7J(_&tia($|^fnJ-E}XiVG8%1<(6CK1UneC} zf`In%*K_yed$H4YC{7tZ zW0UW!O8n#S2hOYB({g!rZ{vsZKzEbk0J6|c%?EZwY=S;|{z|e%0JJcx%@q!qP;dAz z8}{tJh0o?usVyY9YB%3%!?d)ee|ucm)yMqM8+ezNKHbPEemkYsHFwFQo;K;^Z)Tqm={{1^f`N!lg|3d(F&+sa0+~TD4dBVmw^Eb$CPUfqxvo z3I)3IZX^ZNDbslMwENbQG^>0a|B9LGZK!iNa})KNO0-n&kSf~5_s_L$qP^PBXd^8x z_`3(Mcr<;o)^&Pms;h+vFE($TLvILb#+2eCg8<3AFr+H+^t?*<*wCKRbc`>(aOnxPfkwAvrI}lWMm*f7!wT9Nw)MDj5wX~ap6Ts zmvnREzJN|(d$Nt4Q(#O~ttH3!W}V3M?Znuq0caDVf3{baEf7g>l9G^2PiC#voe5KbJ1e#P@iSXarPim}(_Y7L?nF=ch0cxND{#ixd zb!eWqFSNhEpTy}*16sQ~-&`M!jg9TffYKXt1Bl}4>dN0(d2(`ce0niKoSh)zCQ4f$^Mj{0mPG)!aa z4q0PDSZPxJ>Q*xEpXT2Y0rf9}{WFnu(_PJO11u9P5mW)1{+~^GpRO zi{khGejB+4@KD_Jixd+k%aI)sIiOVMuQR5B9E+Vne`0a9!@8Nyi+H%*y}~GvE~1#c zg@@Q;2#?r8yRYtT@`l>^4!wjkZaieEN5)3fd?_xKbqXJ=tyF=v1qee}d(sKnF+%`= z_fNUGloMg1uLak52RsPMKfc8S>Id$*@LzHU<>MP+n^ zmkVMRm}=Lt5puP6XsZlrX2FZ0q$bflYEj-aAr@3m*{rwk)pfKyjK-u9835lJCgvh< zIBYmRT?|pIHV^S$_W{G)wCVNi%0GJ$KU5)JS7Rt@f?}aWbkjX&x zt_8eXz?Z~+etv%A-xy$7JIny91mIURCzR>$IXZ988wC0hXY_icC-G==VI^mKULK`C zkLDP^UefQz6yqP6b+!MJiHhQor{6S-i=1&%s{b)9LzbyhMnMre`2nzv_t(XbQFQt| z50NJVqv@-9g>@44j~zE;z{5v3K6fAaIwLhy4~?*YNk27jWClAO&xBo6(&kHnq_hqI z`PGrP*17(-6&_+>$+F5=>VGgg^u@iw9iZ*~cO|b7???2!ZjN42X;Uiq%-+mkV<=3j z!1?5OnC+RAwS(D`h2dnSG-YOOAISMIe^9({k=F9!q^X7(pFKm)r&7^vJVN+8Nx$pf z)^|n75;Qnrzo$954d*j8$V`N7cU1V zCo`U>_w4NK&1qMy09yI^`H9KM^o8Ryj*WkSy#>Mm!u5rB^n7Vdu$*dRK-dEK17Yip z;=cyzY%1lhF9FcN!cFf-fO-~dI)4;Ptr2o`t={@PtGiH43n5OieyKIQl~a?3J@LVd zWQX+&@kT}?9U20~e*M@?aMp@+u9lp?X~}62-B=F$=2vhXz*&2ig{Yo5>_qI2x+FjB zc*;{m9NeG^Qr-Y8$?F(OOe`$~$&&QzL|B0g;NA!v6t{KCDwkNXmrgC4Hm;Tk{OI)< zdQ2hEaJW_Kku)?rp%w#h2Ho;$J&QNQMvpiwu%2CU}s|Iqi+#PRs z<(hIrJh=uP_=614+fRl=K?F6Gx1M&O7Vzo&O{7)PnS6b*YFGjcm8PNzXv7kFZi^GcKd*+|_Ckr;8?k@o~Z8ox@Al^ts zy_7g~baMJgPybH7KpG_@C^aG;5e^01ZvFQ8qy6fEN%1(6)bEc+#<^{12?%OjM_gPQZHu z77lO{%y%d)6O$@HWw}#lrKjyhUp@_khq~cg(&+d9@)FWA>gWsCj}e-d0OT=ei;NpF zP4OUNJ|lM!3%CQA#w7B_p}SduiFN*?Q1JyHNTEWn8f8Lozc_m1yhvI~_6Tw)&}RH4 zK6s%@O{Aol|FN8we|Vj-wseAvoq^&Ij614ff|Pw43$^#S1qyr^L7^mVsmAzWth1JD zC&J)*{tY?R1NSfGNv*;Sk|lqtX9F~@w2;wQtPyR5I3dUlwIwX8)qc<1<;#w5`PB4k z`&a{6{-i@PfCg9B!o5fB?V!e{rt#%va5~Ak0{On)H$L~9s`7H$W=(HzZ#MXN)N_g5 zEW4XH5u{Oodh>_0fBu|#W~;kQ1o;#tmIhFonhouW+bef38BtIieglY?E?!2j7ZTv& zta4M%hh!grhjXVd2&PrhOwKS5DbAT~u0by9>GuuvL3Wzr6nFI&LmACSk@0CV;3T^c7n0(*lQ@_XIzz7rydR9Pu6fWE%`=QE~2#M54BIEck>sHT>D zaPx-Jqup8_=RE-XTHP(l-?JdgnpW3q&8^a4X&1ee8YJTZ>bds)djx_&4G*aj55<0H zm=eeq=R4jWlI9wN9c~=p8u9NP6P$a9ai!@4)b@L`50N5@c)w(O`U3y35v{L%J{IqY z?PqtmYedVPXqeLcBM& zZuKv%(Xt5n)Ox8bUOIN849!t5STZE_fpl=cs>mlkFm&8^GE9YVV%PTE-jHkNZ3bMrE;ztCE1Fki2BY>$?m;a8vU;x-}8LH%mB*e^LApZs=JUAEwE z!*w2jOqoF-csH|lvtbrB$Y>|#kC$eI#jm@dS5m8nxz-~hD)S!2`j?5Ru_hAe6%LmC zZF>ElVRn`H4=-B#sLxUFf!LM+sdhNCmgEVmBjV>+6NO5y9e~Cu<=|i9OD`LQE>7A_ z8;sjWB|N4(GScR-3eQu1pFGYJ!pILu3w z64&D$adtGBVBoK_Du*uY8OcuS4S!p(Xs|;)j}hCSDHKL*xQ%Jh$Vkj*jPL$58?`F| z=ghH$Sd?S2_bH!x7}s!RFLFJ6^>wDe+LZqtSuGtRS4#^dTeo!8eUfYRzD)d-Z6EjZ zUby1i(>B3CaQo<8EeO#~-gmy7(V~m@N8Edk48n3t0dhOb@ptusYq|jM z{>CdkF6EbovpJWWI?jszHLMUZpMvHji^ni)9q+x>i*|Yzli#c+;C>ZwIC#vMqd=(I z%Z|uPBYbzD4eMmHtAmC-m5Ql`d%%n?|sH>cHerT#R9a2EaPQVK>d-Y3- z_H>ZZaE#3oqOk7(L$o(A?S|kfAVn&LxK1{8qzNDBaoYI{AUuQcz3lejn5kDbo|jO0AER z{`D0j9jPVT7-G9)F8fzBeU;hvg{%!Xk}`GryN4^ti2ZQC8NbJKX_FiJ!wJ<;KBs5y z3?#Vh@-}xSkB7gC>_~>@)SZ~H5H<#-khA4658oJO8aWrvm%<+PYhy_f>KTktCj>HP zS;IDe@JKI(?S6$^D)&5;9!bXlwtEc^g@0&2&ZH$3*cM`gwA}3z>sN*+D_%E8#tJ4Z z%&Q?%*=$kA;7Oo{kJqo$pN|P$lnjZ_>6m3n5p^aQjMfI;HCjeJRfEK@N>%zoPR>3Y z-!o1cm`nFPg@3AcLe6Z;fg|?mJvy$i(VV)#41rii47-kl(=Ab=>3YDf8gsMpzN-e$ z$V6;<#XnsQn!`QYzQ?7=S+Q*RxY=_=@s4~%ENC^aT{DiJ7R3}jlAtqvTH!SP5DOKY*JQ?)q?jGNaAFoiu>PVI% zX(UYhM3JeK*4gJ9lEGTt;Nw_e}!iaxLT11stNVxJ@Za1%u$JK0n zTWY#cn2OBqk0jY=3NH7gM7x&LAJ>pAF zEZ0awpvOZD&#x~Hg_Fd&_yPs$-lMx`8uy83;P{H;n~{}#*|qww3bQrzKMP+pk%quE zS7ARkA1cmjtd~OotMKPkkdB;xvC=1^0Cva0-nB4=07`ELwJn&|r?ZuOea#_VwM^Ox z@N0oMvVKx99u}jsaL_6t?#6Es%e-1hfv`Z^ra-%k3-TWgFpisK_z|7;>%nC9GX{E} zx7FcZG^Aq9dnP?Owy(-aCe!_W3n7@hof+mCmAYwIg*@l++nXDr5C8~?RXW063+)lL zuYQFb(LW2as)_|{<~C^L{&Au1qLbgBD;TO9Df49YDtn{KqhDBS!ZrR}4R{O&jC#>r+a2bI#i!XYyy}}yfagMG4c3|^w z-r%mbKc{Hb&_`)NTf5ve!M$Eov0?>Pcwd$%pD!1Vilne9#W^NqAbxmxZ`Oy&>;6tg zNV6Y{y^aZ+Bn>HMOP`v7Y%wCag&g#?uLgTj+k-6sd5hnA<%iZMVPF|!!F9hvQ<1(d zGlD z>h(xt=vAVmwc&&0Hbqk%o6$w_f*v)(9?$4(^_y+xV;xl37W2~MRJbYLzt?+f809Qj3l zHkZX_t;A+U>UI-CuU0*3KqFT zU*gePe!#chCPu-`lM>NymSMuoJDm={Z3LgYpek)e4zJEfm$BYrVh-TJ74j==HOU4O z!26=RGT-|Qn1#=Jq5*XzjMI7&svxa$T!@#n&v1m7pqdXLmoTI_(k2NxWo5+s$oJb+ z<_KnvKbX~&AFlDdww3)`bNLl4s02X}afYI_@)Vv993pLddD_p|pE?p1 zymPh6b%a~LbLjCbv}Il|3RHmwx4%*RRUQf)9K;!!RB+#$l97958#EVJSS`G2kZbyS zcpxCIz&~V7OG7x!@@sBWvkGHjdvXu+cxP#0- z$HA#q@fHS59WJQC-@dDxT{-Gu>nL%$VYa)G8Ez>gf@&#!tRtrW&A_$*9;cM=C=|pQ zA~T2iw9AKfLe-qVyYJS{5u`QTEIZW$UtLq zPY5p`b{+Hmw%p^;fL)iHs4;Pq;5nY+L?M?hhh^z4Px?(TMMeiHbVC93l60V1jaqGg4>pHyTMgYOvg!y$-Ne0L#GLsnNoWqOl;}j&RnZ9 z+(rvQBHc)ji!g8+pSDFz(=yrMYI+IzRBNBmeUD@#24NCQ(7mQ|En$oFh2@~ zLnsO336rsKon1@6U|I;Z{8vCdSz2d`ffk53%Oc_91P18l?XLQX@i+NYSJ$iSG`E=v zIJ<`X4*tpK_+RnQVD7HJ=S9>Ip{q6_jCp`0y*cc%>`l zaD1-A@_NNveuF=x+}IkVRG`TEVfQPu^S3!ksBS5zH(_mS@gia?$3n|Rm)q&JjW&;z{CJR)&~3bJF$zN@S3qYY*+2v+n9x%X+VsKwzuH=+1+nYSs$@*cy3*_vKCi;pEs-PH!3lcKz1k)!I+B?NU-ll0%O*oZv|`Z&o_W|NC4d!@JmP!fD9Oj9iECcS#M` z!6(b}Zj)<6IRuJ{bC;GcBZCaZ=2Pqq7f&c7<@CkMY?es4LMAl<`!94{aEb-o*>%k0 zD+z;y(z8RZA{*k515Z*B+_AeustaD97KLgaFio0MPV8g18TqT4Iri}))q`$Y&QH*N^Z!?zy1GOO+E|(*#ens0{qQR-!Jsr_Y^0w*}i*W(d;6 zBnus}nYz2cpnH&DYEO(a>>PiH(VjL#kjb27-FYtIUfDdcPi`jSN*85W6j!q*kVkD0 z3l)(%#)*Sz4sJa@+ENPp*4BV|>W6(FDrmByTdMbmo%p+bbIPgx$G)V}$J4)R)&dhM zxIQ8h=-4SwXLreXvJ_Z4B|5FbPXRP{d8{O)$p>@EBe|?AzpvTH=TiQ23nXY3FuZ^b zO5+Ge_O}=^Sk`eZoY9&QU}=D-asQ_{V;80nSd^vMZw!I?m2u~ z-VvC|UytwxpLoJ)$r@1ZMx77QP?7T*qBu;m0bkv z34#mqP(1D|;q4+EEo%e!$a3*$t*hbYc*FSRT+Q#ZyVEXq!V26>2iZ+!x+LE$vt|<- z4THT9gW@7W$OHWccd^Z=YAdYnnbXB4wk}P0JcVwJj^t!e#ytqY7V|a>%JxTl3BqCV zUb5byp;oSeX$2x~32pZ0+onZU#mCr9;QQ0o9$V|PZl;z3TGP|RKz1IgNYUR;;M|g1 z?rG|Rj>*}ns+qf#%vwoHQvI`KIen%brq>aQ111h{@}W4^Vty$P(GBn9I3@3%7VA3Q z*TR$)v07#X-?b=m@oAT9r|(((9}bWAL@RqNXyFCGtV|$Dn8M1RBnuRjtD?{2vD?4z zF2o}JCf)t>WdaoRWzub!cpqamvJe^Rxprk3{KiDD@=r}^jsRfC{amTlLd`~g!rB5zE+wl198O_9y6z0;-OKlhL2 zG5Hsq7{=NJH_AkhPK$kQ(a|R6kVLkqW+ZkFZ8dU(%k2GC)h%g|Uk9Cp%gmgyJFVS8 z92!|jSh);Fi63;#A4Hz%HO}L;EscvFze+e$)ZSKSk=QiA^TfV&7S!y>;W4zaQf6nyf0n`v@ys2+!y9gsHwy1| z{)s zriwIJUHnymvO1aMA#&PO&WbY>8M}TRe|?Tu9*rmO=8Y+0Mrz8$lZq4dAIX?ZQrK>e z^{dJ!Hm>SB8hTmy90B$r_Zc|o7eiE17V#PmOh~j0(LgB1%baLmE^JN{w-iS(`#Dyg z4@ZoG_3Oi~ks zNJf2sZ5{`{W&m#XalK;P`U`i&bKUr=zwU{C_2m>ksfhQk-UQ)#8z$KWaftm8{+F&=q0$Wyo zL!dU!r#hk@OWnNL2D@<$jr!uj<1CY*Y~s6Xz#vdgMF77e-=4#RR+)F<;$c!e$w4b_ zxNHgg_sz$i1S!`d{V)$c#<#}TW1u^V)TLMSB8G|V+&#}hCe(3(F3iMp4T!dd1BT(R zg_5@}a9LD#KEg}*ym0o|@t{Jo-daaLde>U8p<8c*>tc>|`%L`ey!xr7Vr@n>|1O7p zsI`)dWYbV#{L{~?SnrhkpFS>>4r za@v?8F4=(f4PoONGXsJ%-JCH*5jk4mMz*;@F0TQG?>#Z|NU4k>-IE*Og zpdFul$td*g!&l$`Rt1JKLQXBj^vmOfTa^J{)k?|xR5*FocFgo+f8vgg6{iz8V;!bYQt^@n! zGro{;E2Z5Wul7A2lO@OEbV7Hl^IsCyFW%)&@Oc7G1Oh|)FWDE0Q^F+&16SFHc%}Wy z+9dMnV#H<=TlalD-=*vuia3(AzJ%T&a~siK8DQqnXJ;gY5TN8x?JR1P zP%}*^`5moeZ&}3IUqgqCp=|s3ND-aYaefXa&QeS$0PFZDjAN z__7n@oiw^B{wAmfq@Ln&)()i|3*rYtN_7uCAyqA~OTRX{Y^-viMVHB6ohDyB7pV9s zk{}KBZMZd2MHAaU6(nak=1a!ZK9zwRHjM&c+!p~?ox&kylZ$;`4qBC;Pn{34X)y2t zm>wpw(9HAkgkzub$l(kBnn!sSZEw$q`i`*#1jl9lRgUZ|T%#0^6*N3Yr1`YWph~l0#mo*6aMhMUOzm1B-D+l15fXmzZWBHi z6lv4I!4Kcvvs-x3oUkO#X%?v?KEg*k2w$Y;ICixP=@qmLK?=BT z?Qi8MUcR23B5CScHa4x3uxJUtU?5O$bgZtne*c5uQSfQpce)VSWzAjThUiGt^X!gw z|5cA^X#}hx147{k6$;0%h9wiwK4rl(&!PJ$UvfbiHrniV`nfR$8ey>9=On1_h?r`c z^ik&3N#XlrS;U_v9`2FKTK^O9@rlrCNqhAM2cMAiW)w*+|gSC{@@{4_wJ6#(c zu=^jTPc&TgR?H)3=j>1tEx1bJ>9sMh|lLX%;|{78vas z^T$iZ$T<<`;c#Hj>pv4ybj_X#HC{iq44G=FX639``Es|KLD-Q)&@@e){H@Z&TSgie6}Tn>_nm-?YizVyzE$D&#xpr9D?5KCh(yZQnsf z__mMjOlnq%E{`;7Q@Wqy1&wnOm6{hLl~U9V?HiE$s<6+)pIyLCoZ(w8!3E1l4`ry% z?kR)soEOfoBITO;7I&RaUbDNaf68ff73TbYgiW>}BFGf+{OJcStkdOuqxAzqIk|1L z;RKw_xkFJ!VX^~mLRqX^QjtS%1FRs$WDmZ1k@@lmmlqRPIWkU3veqqSHv;N9iDpl7 z)t%9P7(9Wwo%hUy=U7yrYeWv_WGRcSyN_LCv* zp3E8L>(`r3ZKXgyt%x1=aH9cr3QjGI(z2=78g=#TXUYkHZQ21AnXBLcbW~j%e1^gDDf=G)Uvfo5NtD!n8z)CI62pOaW^hn4sR_HaRk3>ToXOlB<=C+wV8}C=fbOQ z`o%Qedt!5|+L-FmBM1ULj!m>!MG$4R(MF4~tS}Q9mFs@78j*Hw=M=MOIE%$pdmR_dk=a(kbyt z#=x!IrUck+f+C<=s{TYT8(oryRY4twx4CfqH6Gn~RhV2pv@sdBzEU$vjn6{90g~(B z@_o}7j5ix;ynTmc9y5a>zEjF!UfZzU$LJ}l#1haOor>Q>o&6)zY87KH^-%TAJDPw2 zT$#skGtTaKQYw$r(%O`9=jqHcP_AIp`hlBy+-(KPuxB8Osro7DrW32Qyyq%?sizWh znis=T8%k9K>?*=X?*9X`Nm2pvk}+%M(nfr}w37NpXa3TcDcezj98*ZI#M0nLch-qx zod5EjDQVdbPZxybmAr?k^vdZca0IYPN#qjjO@yelMTsgG925p^H!shUzmEY2nMF3@@ZodgK|%~@7TH!aqlU{R{ilUj%%4x`JarRqC-9hvSVl9G8QIu^0|Q}+ zcs%edEiFMlK&g`ce5GOk@UXC+UbZelQ;Ak*EQ$|ScZjnNwqI~@AP#gWZs(DvD$M-r zap)>E*!!@Ila(;in;aJ@*DckeBlh*GwbX0o0tW=&V16cPb;Qs_U4L%xveP@30?cE0 z3@xapN4py;C#p^H{Hh_I2gn3x-_3hO$DNB80u?7+CCoKRtkxt-l?U-ScazemnkksmiI?m z9HDLYNGHjDg-A_-ozX!jEHQqLcSedO*(PCDD&QwUciGRw!7R{c!-1fvCW6tW9F{{I z>>GGNJ?^qm0YybhADk&>4mo!YbQ5S7 z58YP{T-?7Jthio|u~mEux4(IsnKc7PHKQq5NH=D+d4N?pP&WVL@E2oiM=N6a5pCnO z|TB&Sxl9oZ++TJ$zGQ!h67*vqSuOd2r>6OL3vjP zOFwo$j>6~z%v_tcHv540@XuO>hXye*DdLyf=)AB7tEXH87#vW02glRd6*5-*60!vt z+Tr!OCm?@8R82Ivc=KF74c*QtbNiU}{MOp}@5PbO^-P_t;x%G~grQr zIt)`aq=~R5)E_q(ANf8xT*Q$X8f_B|v=)YTjmPg1EzdXyCk;riH5wYm%F~o{0S;K+ zk2D^qwB>871dX!S6Z{&~(}ELYupW;zPqRc6ZAx7CSNs*N^xG*vvtycMv0mt=%EuGxNqfAqMpnA)4y4NtwCxcV$RX=sUs)DgD=8r8WrPeCrhwqw4hodp zRmG)Ar7ev!la1Xp7Ru-6GyN+Rk&n&Ph|rW+=eUNwKW5~5=sc6i=e>i7FGEM6rhk%S z4%Aebae*K@kFcXjAWe)h$4N5_k|J$Q=+B3X6hnR-z0q=oDVdz3{$6f-wet-M9p%k} zJL!=g6ZW}4eGpwAnA2V|wF*D2;Hl*okLo*B&+%*4bxw9je|b|C=wQYU?Ph#uBSe#5 z@u-N2jlQJoAC=e~F%1d{t_v=l2UailS?qWvFL@fCm*m z?-8u+eZC&aBjDx5bK_|PFVl7=%JuXNS7Efwe0Sa9cejl8ivN0{!Ca=^0y&sKBdn=O zT-K~X#@B<45$nkigv}r9CWpx*fkV^o8FIIlNfE=0pCyR} zn?3TH?Hx)-t(?TvLEY^x;}5M42`?4WV}gq*AcK4cpP6d0yzlHR)(%fvBjyV@s9GQK(+RdjTe zrDC|WKRoq;V<1YXP1E3Tqyc$*RjrIIk)iqcf=a`Wr5X3zuB_xyd|;_+Av(TVwO$=$iOHp zs1Ks~_QL82q1>HFy>3e9u%l4F&-bt8*5OfH{Q8>J(_UJY4?2ejDyV=H+fcz%7%{U- z3kR`GB5dH2$_&Vz?5jB}f5$Q^o)RthDmKIgeIO1v+@Wl|A#hI6eI0ldwU-3eu7)L~ zOw?fv&^fN<#2yxb5yN83Y8@xFJtEo(SL`l?D|<{b}g^~P0< z`yT+88nj2&xS{2#>_`4irz_y?!NkL|HwPq9%L^aCoSt}PtpJ&by0xw~xldm{ZyXF( z(bL+00S>nXbqx>SZ7e&dH0tt#<8UmV+pb+mD>GNm8)YwtI9=|s9K6v1_8i}1ci2NO zYh8Gf!Yx5f#b3ss^7n^cYW3oN`Qypy=H^~uaIUxHxabJ-0Zgj7$sAWrP0i-<;aW^g zj7~CAMEY=~D{Fp|Nh2+dMfyQNR#G%Fk^%6-^j!yi6)y?LP@ zxpUm2vEF>l=yw1#?CcnE#*zWe+2Z{(py>hbvbWwQ8;dROb=#Ilp8q+_I!;Ib|MtkJ zJE>zaS-Lth@EG4kU(S1#jKAf(oZz7$&uOhM5J+60wPSmYC)zxBHx zO=@*5*n1M|zL>ejhTP0pAZ~K>lw!t5j$hP24u8)OsmsyxOk;^C(41-|6hWAA5xk#) z*8(<_CobK{T-`jRLK*rWW$P@)EpfPw0vT7PDDzb_#G<9PifT^BkCpu@@)pr{3cbt2 z6ULTl-Z&Xn7@bM#ot#8b4K|3$n+{6Uf?d zyl3_h0ny4UGlHGkwLCd@RBo>3=4pQ_&UPUYGv2YBvg_7+x!gw{Dhy;w4oWrzn89~? zcege+j+V62Je`*eIF`JVHV4j1>CYIqw6t_q==b^0%qXo_jq+fQq_XF@I664^ztVcA zal0$+9UWmwr*pA4uqcOru_&sHM%x7hFkSMD8-$yeTRo`SscnDOSq2|6 z3z^n2eM~7Fpa@}|NrZss)e%Ar8VH@^cwwW9_~dFKL!Oq^*mNeLj` zhu$%UaLb1u$ZvLs2+<383qY}SRD?>r#fMW0YA~LmXl1PZx^5Y6Hq{|@FABk_l zNu@7jamgbW7%wd5&t>7H5wfweH70WtXzd3=Ci$8#W^u@>;`rr}aISxLhcSW}@^^raXRe!^t2YVx6MA>XqaO zOr+C*k)&w0+n@C+cGDX36D4@FO_PUZZcBrG>dv?}eiG6}U<4mKRs?xJLpu=iW@z!( z0x}=h^z};s@{NeXyaLnkA|b;MRITvVtV@urS8rbC7q38r5EWbo#qow)@d!cd>TjNH zT#eg%IjeH58~w;Mv}usw2M)^^1)m{0s;`O}Dr7ktQfXh}^h+6E2mSuugVOuH)K*J@ z0T#L#(9X#4#{7(u$W*9K0suLL6Qb=OYdAJxk7N;x=lF#MS^~J*l_IwVnKi9gOJ4E} z6R}nkMG3HeLnM_y=>ce3##ugpEkrfUmq(-yFSkpmwVkTBVhZjm-Nw6A@uQNB^)%Bi zbQyh;;PtZj{Q9|((()Cn0(cR_I0d4k@ORE?$2s+0Mfm9aN7K2FTyk5dWf8^rrdRl% zxTOz8M!1#9m-J_UE&7aiIGBujJfsqoMahFpf^!>DC`$8D)?{rfMz1&fxm@6k zCSBmDOe*L}K^IXzE5RJAnb?G&aB3AmszMGx)kiRh&hkb-LsWwnTkT~S9pyv(8b21b zLwFu=I6j%mWtS%Ys*WD3kJQNR?ehoK>X;~ul%g{B%7evN<*xIw}oV3#n8oWniRJa{4 z{Ax=PwrAfEf`bJZfn!Z5ES(M^?3xWaHjm0(mXsbpL2J9ut^a1O{3R`f<2Ekz!{{cD z(uIn3{jp!hdI-1~SZfK>ndZT8?V-uhvK&yzKll${SYO-x@7DhJn<(*sTA86E$! zb8HJg)Ecyg(aw_TpJ{QhBKM|DQlQrvXXj0VCris?9;HzM>dq8rxq$ZOUZI%BjuBvd zepa0>el-}aOdF+`5A&ck`33}wp4~`D-M6YTHB5sbX z8qg|-w8k!?Qc$!amrD{TTfyKgD_*REF_KX^a@@JAZJ-VR##m8t@g_^Vmju1=+UY!o zzTuwG7E|Iu9j|QDrx3{`?3;}^K0^Kysk*L#V+CSIl7D!7T+ZYbosTWD6)0!&t z32iB_!_JWr4zh(m!QIIe5Ca8*17@)Z^vk z>%x`19-b++D+RUl{MT?GGw6i1r^bOSA40radKiQ(7a6l4FFLkjUFWxbP>I3xsbFpLdRw1DJjtL z@bK{buP;0TeRAUzE1IPi>bNmzKwg%eX}=NMH;6do@Y&>*^d;Jx*RnSB?|9lbBk1k# zc2bOXhLckHJ-K|IFSEC*Uhb!20D}Fl{&z9o+o6q7 z+0jG6DnQ>m?#ApkNA#ZAYU}D)opwI~v5(|H`X^qOqb?u|M&IA$Cj+QO;|O2ffxtbt z-83_fl-Pk-w7(g@j3a@u$!%-%DvxA6iJE~{)P#YB#l{td4*;dexcAun@oWW5TQfLS zQo&XXLI%Nd|FE!(K8tRgXu0vG2ti=Vryw#VrN4`m6Wnl0;Dn}+vn#Rrex2BP+aw5B z&5kH$P{jr{6R@bN)&Y7(HnqiIC?+*B`TRDOj|o*icoQZxz)`g+fso3mUINUJCR)aI z?wfUK{WPs&Q1lo1rXUmcu*oPx@o>YpcbGR{8c}z&;z{^NinWWtVn#4*iM~=&l(CNy zIph<+CCmv53UpFP>9~@~{6NFCq9gglNyWuVzj5S$asPBpnf;NaMXciL?m@k%iWI;J zo|DlEHf?=%XM%QfK-fa@w@n>q*1E?y=fAwghi8CAT!GyWkQws%!RM6c^3=)#lw;43 zWB##~Oszt)8m2~(6h7%(auc9$?ME`sC7(yg5pdPwITh02;u3lGiDY2js;@uX{J76W z!gtm+hoxD0rQWB{N%v-W&%UfYD8kER#R{-EE5d}FhcN-H-@yAj!z+6UH`D)VQFSpD z@H43C%%F<_DU&wBdLO=^UGuq9@rpQMUKY)i(afi;s7d zlUrp*Hjp`n0%$Zye~$;#?0Oe7P*2q=;(qRifdWXlm0M*b!<{>9zJtKQPAM)=>jJ)4 zD+=3g(T>ihgvfL;_;0hJ(8Yk3ZzGsQg(`PJX@-aOK;FRxA2OMZb#aw6E`dbRwRznU zyN5*Xr@5!*hflCz1!vbi(ups`1@pUsc>=>z_~qaErH@4bCo5(P;QyfAruY2UsyID0 z|0T*Shy&)#OaXn^P~^ANy^8@)PfFgYNkFej3|U;x6>*k#KnzGDldQLkw@ z_uVI7iR7KSggASIadgTkDSMgk+&@>cfW4!@8P)Wiv$TN*Jna`$9gC_ft@|Z{8%tL` zSG{oClu40-0+YxU+sH;83Y|X%G#(($k>d}!1M!lQM3R!Cn>?@*$y8&fvG2`gCr2e~ z8JBMMTBvJw-FM$FPniG7e0bmQRa$?!!x0ZgZ#|Pqz{cy5MuQSY>tidF#yxPQ;M3Gc zDqe~G^&1KgHW1`HynjV-lXIYJ7wXFq0Y3miO^Q76aKCJTqd@Xzff`|zR(fH%;<275 zwyw9=e#GH@pd{8e+8va@&tJNBhUSnrIhV1Ye?hG~ZjWpskt-B4D(}1IPf^G%5t_I| zSaK)1P}zL?+xkU-yXEOSu;*S&EhYgWVQ-~Qt29cL7e*L;3g{K3MYtT7mv8)`uuY; z_R#Y3GVm?t!6wZ=jg%r_6#sLEn2IoD(%-%W6w^uOVEpr~3N*a(zdbA^_5b^X{;%C( zI1qXIdseyi{lh~_3*1Ny5M^D!Br*eBxtQSxnsy9m)1EvPFPJ1^;<|u|6u6HX`9C)| zTmG=b>Ia4l^y9>)CDC2gi*{ z&=T8ne15hMj?mG-SGCdtx?4`Eo{Ulln_D={SB%N?g*i}Z<-x!=yI1HD4+ir5ad3#m z(13dxQMJR8G(2v^Ux>&a1`}^b=j)F+#26va8&<)d6G{3>_c+W{w_Y;KP&6t2(Ry@8l``FLSk1(k02v;oq zga`4kdvRX-?2|nq8uo^P{Mf^Ca6#n16Ws5=!Zkyo>VJAnH^8$;X~FY~y2yC^aJLbN zCq5!ta=~T!o#N7P_wuG6AxT`=5lYknWS>_=&rEjwtWd3BC!lMF7H+S*y1<*UOmZHc zr#rp5JwiLHP#@UGMMYIHmrTUQTo%$eMPX@t#l}+_muVo zU7z3wE&S31-W7@$m(cmQ++D-D@VAgOfOhq+jgEB9elfkw+Xp@5*S*zg14W`nnS5LqB);EN9n)$~?tw3#3Qft5qiO8R44bq`f|Lmii;LqgfmQ;{nJ8Fv&}wo0(_KxS$HwdQ;z`-0;~AbwVgPcpD%+Gw z=X@i_7a^&#Xj`$JZ}nJ*^1DU*$dQ=I&NCDa=Lzff4&IIfi5ukUN#koulJiGt(WiIPjrxw7Jb;@ z%>@UspAjp6(8oo^s4cN-HAPt0)UpKIrjWgb7361U=w4RP4|uphBn~~aKRv+P8b(Dj z(X1}9V=WG;5?P8-th9Dvc(hu^ikfr%4b6q0VDKK&A%Q})P5mry3At-Em{@j3Us5Lb zTL7jD@wiIi#qNr;91N3y41;e4C&2;qn<`3a4-)tHkWwL6hnLd`%r`M<8MYgz2AN&Q6OIHO+iMG zl_~@_mj{_KEn$~lf(j(|@2*)1jVJs^L)QvJ27U6ONVJX- zurf!V>?#Ev4kQ`wp1%_eru@G8uchQ0NNQ2g+ea963NAt1(vK2 ztZX5dAOUwRyv9e!CieCI=2N)AR)?Yuj?rC>{d$B1t-0_!tLIriNfU@Tk(s&C@6HrT|8lj46_biw~07DX|{Ta%^jy9Q|DGOJHovMte&^aLO(B( z?HxnkPw4a|OiZB*5$TErSGu*5Jn6bOHz~mFFp-#q`o`hLh&*S7t%{4Yt|n*Pu%Uk$ zK4jX}Gi>V9D$`9P6C|TM;z9$uEIc$|fy3wH1h)nSvKCE|AppNc^=&2eZBV%NLeM*j z&bb3WI=t9Xo~yVY^v%K9`P|Ypy@0bXcG3olp3pgNo^h%Y-@_!?Sc~2>X1`gQFSMc; zLB5<`RkFSrcQ&En;Nl7a9Ev2O*QU_=E($w4Np99&q@KbgZZ-=i+JaucFZ z1xc|4tFW+;t`s8l=CfJ~?BAU&Z09r6-~ma>aUaEsmGK<^-5DuUvlUv(pW}Y|_c+bB z=zQ>?bncDzl$xO(u3m2n(5SwfH9<2G{do>S7<0&J7tPu?=0Wz3v4eV~>2BI`8)U`P zTa?{K-?p3zI8GIC0@mN1c?3UygxbcblVoriWKR%#Ef@$Jdj_GzywOp#bOvYIH(__# z@qJWmm2?q^&`uu$*aa?eH`!!WDrbt< z0Yr4|yHJeUcx+TlkZ(*hidBRg6CHH3=sLd4Ye zY(IHByXHbs_S9i_z}ouDy$#3A(6i~q?Vs>CM+~iFh^*l5#8u+Pr3-yuF7Z+Rre{UG zza)-1ckJMJQ!Zqk4m{YV>qZq0whM~ZfQ>ZW3k2R76xaRFWLxG)384B;{FAdpF zthabDNGq3%sU2oeo=lskBXnkD*X>mU`Do6}%T|l3LEjG0ib08<-zD17-Bd3`Dc^@X z?3_qJ2{W*;B0+7Qd9;V2Mi05BJGu6j%~QXB&lbevH&pFtWw6mY60U-pcR^Amh9+NF zB?aY;P(WoH{wYyz6gK1>q|jU~2{owVLPHmtE2T)kUi|%aI#bH;G(=;rfsHMwsV;DhjVC;uXI-VkV(|%YW<_;AT>odJo4(Mj3x%kITi|1I zPtSrOScRWt=6ceOu-{dRLRQ%G^6tUwj!!%HJA+&Sw+3@XkMpl)Gh<5hgUBxYPsLzz z@Ph;^UCVPMp9Io8_||oJnZ5M8XA6Rc<-~5DyF9+V#JjV(udod)D)jO*edwvbcL~{% zxB-)o2=2=+Kklz_5Yb~o@5!m!3#cCkEzI**)h`-+z|f3>jgNB^${4l}PoYF73YBo1 zrxdk!AD|*$hYCogy&!d@$bjp4=MhaWINfzZqT+_+=ST6<6?uop6XJ1kWuhU*duhUj zq5GBp)6y`?OU|?^!@Ppv(T8KbQk_wl)WP^N;AA}c{z*Ea=L-pi28GG_hkDACbO0#XWkxaT%TFF{on`M zJ-I9tEF%B!TYD+p>7!1@T85e(a@10 zLG&Y)NFl8U7tTi8ai#*-DKwkSi^%VV)jn5A`YVJ*oNE+~SZS%Ny(&y7MAuHFk)VS1 zGFVx%%y|~_RokYGkB!_h@F$cZ6pFu$04LQyN9i{*>tR}B?;0~4&-m8f@!VybV|7(m|Tw6;}?>PeSUs@_oZpv+L*?+VEg%MDt-$z0=);>754q>5^c=CQIAZhiu zKz-96n_#OcJ~HTMz!wIG`mU8EP=+hvMdk!9Bs5tE^~q&Y!oKx0t^hahMmO1%5E~*60XS? zOwiSV7srtgSZnH0N-?{G7AkE|MhJhG{Mkm$Y-b_`l~JQ6OpDp7?G>mGDtA^zltO_zbxy%Wb2R<5=dTn8B61yj#- zQS$}bw69QIKicvH+w%R4c~70HR^HejVp0|U+VC(2IihURFeun2MlSF z#ga51YQ+3fy`(cHghiU6A@F!nGXD^%-B004EGl zD(j#g)B5MWNxm2Hq?PkwK0eK`2ewI+M?7;NhY$Sq=0R_Yn&c9`aeOYGpQ&dxR$KleebUWoFDP;CGjIML@2+x{`W?1?ek3 zTF_duZ2#vhxDR(uA12V-FR-3u(`2-6vSfj4{qn#Jf(I-#&+Q@fYXGS@`jJ4hu)lAy z;Bf!P;@o$im7Tpe>%CLRQ!mN0d=|{~dP#fHJl#dkw_w5t=#)26ERo~*Vus4+&-=U7 zWLPI3Fef7n1000xD|y;=d04aLs7J{Uj4s?E{J4jY*)~o-7SZ@J;`V*}1J{BcOMNQ;tE|3kYtZ})WK^KPJY}W8*X7&$p*E>;QVitwIvXsFVr@WTUqe_Ud=#b+C|K-=Zk73Jj2Z0Y+<&@d+5CKv4$Dh;mq_#W1o znN8mJeT_e8bG3Mpx8F02{|)PHFnFtVnIiKT!;X4SLwq?LrS-xChWKL*OCmP{c)q>3 z61^vQGsSc5Kv!?~a)NTFsNjk3XIu1&L3KDv6Vb&(R%=LW&mSkTWS^ST#O^iPn&PB7 zR^f7})S~Mw!&cWydfwcc8de~MblJB3E3PEH9t!$X<;P?eKpMf$%^iwKBim)!&|_NH zZ5S^nXNU*GFcM&ZH{%{+5GP&0!pW(kfXvfo*Yb^8>J>?n5oX)|dK$%vCbYctc{364 zX^rq*&oO~tlE}&NV+>2v(*Z;T;x95(GaNrA2A~bakj0VN|F1w&6~4!i==^-NIh@V6 znBoF;EoRQW0TC>Ld%(7D%E!jc7ksV)cIAf1{sGAP@>tlLQTI?z29K;l9ZvKE1RHUi zzj%bpz$0qVyUwhhKlnKh#*Vhp`q}nm`J7=>6VXEVFU}?=j^465 z@#&<$SuG)z-x1Ety~>=*qW!v}c7kDqpvCt3C;iZP7X7=4v>)D}X>#!MWVHFJsl=rV ztmcwyp8FKnv|dZicRo0bVzCCaOaF5*kQ=&5uRZe@pZ|iyt#$mwf5pzUO{s4-{;cxI zo<1;+ce)gRKe;WeaGB=d%s=@$qQ7MS4$q2_py~iLQfuCFKv2!esjq?4tc}7j5&;Vu zdr8_$1l+Fs7m>{ykl!Cdi8y{Ig0!?L$)r%;nc_xxTqp2@sKeCW6yk62+EZb4x1JpBt$J8H=>k~5dFu>C8ij;O~hO9H! zHs*g%&z0{ml4M@1hX^i&iB2>bPXmqZID$qtkAe|voec3}v(y=(dRf@~ zhpm?(LDjl7*s36B&^LS-oJi;tbq0Mrn6xd4cz)i%KUP(S&%nIU^Te)$rRJQP$PkPK zTDA9B!z=7~Kz^Mft<@(Ltq$>*Hs8`|lrdTmEIi_?*4szFqh(Y}DR&*^~Yp@mhS<{CvRT@}g zzZlOwE_xPw#rhnXg}YTZyd}~4ERC**$cSFNLtw zr>gO)G@w|ngvf%r(l*L!Ze&pR_0R}+`7Fjs0|2xwhdD7(Op<(ilVAxuBHWi9>5U%J zdYi+r)5YO-D5_y%svL#(5WNP^TQ#^ljQfy)GsB?|E_?{_e;*bPa^W%tFOqHgwk+I2_XtOlrMdwo*M&`j5~KVMpl zJidA6cX?j(4L#%)>`g*_L}Y4z65wb*=C8JHMlhSm!j5G(8xIRT(;#3X0&*V@9vv~5 znwdFl^gwGj*+V!vIY|~xrDkW(@zpMrAIV4Pl?dU)e4-BgM4g|e`yq2+d6@{BAqvn z@clzs4S1!v+xardDQQ^8u|HCeLUgUpyjiuxQ-zZ^a%t#Yo7f}SPk{f>4Ym5*Lu^cO zV=y|nfV^tH%JuaFE-JVF4dCFc7OoagKV!%_)x7S1@Pk=zyKe=bIeqSG(&M}s!WJk( zjW=-8k%2i%1NIaQJ`9N6x*yCQ*nJR;o^9+zJqj6dI9YDa3;1)iP?y)m3#2Ed6;LWk zq!obvl{#kHZ})AY`k3j#Pw8IEhKM`3JA@s11g(;=B!u~e zMUQQwx!jXLU~OCV?WW3hhqJPKlHoY^pyf#%N>y5x#RlS7qy10 zKc0xP#$XCth@7y@5w~o>95L0z7Q)Q|41?iJf=rRa(E>W3uNtnd&u`%jB2Qf$TN}%6 zlhZqP?YFl?+G}1gOHbLoi-O0HOslk*-xXQuunQFJ%;}PPmX|YrpJNRqXfog^xM^0X z&RcU$&&=d@bPyvWBb%F>3jx|#AQ$Y<<>jd4WSnzz8yj&etFogE`_-ZM6_;bc{%dI| zqNJ3N>I&3@IygAcuUqJIoSmNTGTfj{BGoTgRqMX==$`dk9$%^UUf*geJ~b$BznL=k z7#u6M(4nt$KDc_pGNa)v&$S>`$z?M3IwAgnbV2ci|uYgVvi@pZ}N~F~5nu zuycSPYACI>T8OUhi~IqvQ4prGb+vm)cPNW1F1zYEQcTUTza%@swU{*Csm_4p&TPrY z;)i$Z&<4uj*MV*?3ONz|Wea^^#nTqHBJPhoE>lGWlLO$NGOtiU||&upSYK(DWj<)^$xXV2Y`|yCIB7jXY^7k z2E=gX4ZDpt4sHAi$wkdQDDFA&skWg<#csZz?)q2Mo2I>k*>8A!-nqqP}K#R zuwF5)ZKn^9Fj`sce!G#|PEC%bc1c4Cv<(Sh75dCQ80h%Iv!x;Jvf+Pc)<$bxo7%6R z@6Y^U+~<%PEBM^Rz_{P!x>2`ollaV>{<$hcr>cfB@sBSM2a%1aV4asVD-F_=(Z;@K z(6JGsqfNqWJ88R=Rp-)yKE#35Ty7+5^d(_>-0qC$cMgaY6pS@m^TnX?A?U?!e1>M~ zY}Wd-On2O%SWM@S@I~JWy{aT^eh2<;)W)IYJ6wp7L6ZzNJwX83=@llTe;mDFjAB9m zay#4y3b?+@06P4GsZ%yCp}t;Ha-CtxN$62$bU8!5bw9*Ajpw`b@BA#2WhW>S8`1Vx zk#1hUO?&N^T7PaKkrKyJu%HDB+PMX3d-`=N+(ysK(m^3NCJ=5Er=>10Pfp(yK(z+8Q#jVuLEB^{v5jQ`LkvC~lRZndwMPqF7d3<=s z(QPxF#(wavtG!FTdiNLY*nvzY6QX&b1^{MT+d%|;g?!wZedfhiLgp2rm zeWJ<~mZYX|23ij$Hem%>84;@L%e2ZpO_EbF2I1fQB&4u<6kyQjt{JBakvXo^R3ZNl zo6}cnVCqPs+qQ?3#?!#npuhC?ruS;zccT{dM7XdJ2bW2^3kbM0(YY0wYiCIpNcaJe zBGc2;IbbjjCnqPco{AY6VSY>30@l-j-C1esge0D6gi5 znqDExXK7_qT+z^NSrI&=3B=-;xv4X7V)F)Z1bYF$)H=>vI~SLg0p|pkFGojzuKfVC zaOu2vP*pE3BSTL>nBHfA5`YXrn(za}n^C>85*d>9ps&#=Y+ZF()fTmOvl=~@b=OhO zsH)f~_}}tLGr~SiP>fA-XnoRK^K}$%ce$`8dt4naIM&a_xXHhFs0K7IbIqWlKs zG`$kcbh2{FTqsW;NH0t^MJ=J&IC_4s=(e8m~K{bczwi zbK`=wxrK%B=jh-Yu~{ta{9veQ$1_N_DH{K&uM;4=p~K!=5Jh7)e05tdRO_WB))&1s(8I0+s4M-2KggOZa>T9~)7jZs zUqcmK+vSM%p!q5)iKi6tytRE`8-xd}UuDd}?1$V>8DQ&90$$=r3KuiaU#X3KL$5^OoD6xW*9Q^6`O;yc9d!-8e^D$9(&Xx;b<+AIwB$%XJ}@QEMcP! z*ssUfST)V3{Eh|~i<=*&BnLy{-o9{x^grBZ53%BCPhKeizS#ns`iRQ+uRv$e?>@N# zYKjbtgX{KzX3^Dws^4X$PaEar&XTgnfi%-dzYSBB%6n~{J3TWbG z(8VP+kn7Z8Gk`Gx2CE*;;`WtRi>3T|sh>d@2|W=*KodV0omvao*&K2B_2SXWLnb5X z^gcrQAL^|}EFj#Y?|5m^rc!Q{W`c3N@ zV^0Y;Zlx0!Wbg4?VY=Q%^m=l{qznblNG2sglIkBQfj$wF`B8bfaN4kLV^PjG{xV~H zEWGst{OZ)*ox8)w4pQlYP*T-`C11<%tbWWw*s~u?J`r|?Z=c_PL43ZC5Fb_zJqjW0 zn&s&7IMdRv#f=!)NiG`pO-AtQre|chV4nB&@zM3tkStIvZa%inc)keKm&=Aq|JI*I z@&puYzvx|Zy0v4E%J7%23s?DkaI4@DN*g&AGO~JOU@JlEBQg!FhyDFG5M8Eq zxw*MOebVA;*!Jq6ct@@doMlHDk3r#OUqTw$Q#dz=>!qG^+hqeD% zWi6fIrU7?k<^&C~O`>TfRssAI91o=cNvS?shsRac=jsi=$c67H#q}JAc3F}g`^Y{` zBN!ehexrNOpcYTjok`Rui_VyjX!c)NcWp zy`NGMbb3GX+Xc9Sf1i)MaRYD*eD2e@5S^HphuepZR>@m0q+H*yoSpo;EzC}=p2;Cd zkYlPGet6Z})r+c$O-z!fcY0YCd}zQSBtFq=htm*Bu@KBPELnomoaBUzUwjWz7%xf?+6LyiA&|G^fP4gK!iOM<{d=4 zLRGaVIv@$KqzC~7S3nNb^IY`1O1DSV?%uDVMvlgC4j}Y9DWv{jopGL;17YP36C-js z+Nn9p00AKOsL__XG@-t6)wAlKBS|B)9vh%-;Lse>j>g(yH|nl;sY+t=@kct9vtko zS1qian8(?`o@)-K4cvtT#PecD=6tCVY<@MEQ?h-FH+Aj#JOIoVdDa7n3>5VAVqb5& zyi*;?YQ3Hp1&hjL25ppQ^rG74@gp8 zYP2PHF7%g7JV7=Lh(YxIb&m8>Dyx%*Sfz63d{D8{&+?s_hcm+YEYLQ^Of;^y9IFIh zj&*)w-8(DxD{SZE>N>WjStvOmtNh?9H+&@LV(Mio#5=cG5*iuFcaWVJxUkx>(VYjF zJJX(P)6TF9>2mY0jOp|L#+dfF3_SvjDd!pAum6rO-KmrQmoLSEPdBz2 z{Zo>#$zY$WC73c2K0*j+6Z2|n&;fsLQ><8VkPc_DQ`bcs{3h1RE&8aXy9#N8?G%m4 z)1Dcnnqj_%0uRdXvyI!S34^)|`!YAE3+dU)T62}tma+rShf&~e*6V%NxvgrE$vO*S zKC3L4$gXhxGd6Vt>!k&2xy$hfz%j38ppQ`Q4wQy$*!&L>+gMFyVzx?wc8t{3El76s z>~j^!&*dky9O)C?(UBVKZ^joE)K|Bz93s<(8otiM*Yk!3KVXEN=^R9Z))zG1E2%+} z$p@N$%CBXXAcun@a&*utN3o1plGl;Nv7U|$lX#-Anq9p+{ByXCckp8_+ywo2bZJ)7 zP3qXR<@50wD$GXWHB{8S0k^Tyr3-6l8*=_?*ipx%=)?f|UqJRlKEua5E@mG&-0C!` zrS$fj(Iv3_QmIYZqt9>eBE&^69!N7e+@m(UB=?UH^Sl`t6P6g5=d$$=tsBv(24ZNN zm<|HSl_+mz&3#;vf6YYZC~b;IBa`}(dbDCCPd3;%ckD7k_lFHbWBL*Kpuq4a z-vZ!X%f}@`Y6VO$K}S0LccFE- z|FJi=RWHP(XA;1uisEFg@zCwKm+kYH2nV5DF?zpp@DNg?efhZl?gzVFXr~^U{j%%Q zQq@bj!qV*TOR+5vWY1w1W4rLrM{n&*1=1~eot!lgzAb{g0h17<4*Yl4mUroAP5HwhOarmhn&;hw6BI3sU99Pdcz|Bq6q8&Cm>+o&)B)i5*ej}bTbc5P4;au7z8rBE@73*){7 zvj8;v385LyVgdTm@nb5^vyqydE*vfKeTxM)BgvbPb5e4?s3RXF7&1iW59c|Fe4yf% zMrEB_59gnGO~_+iPv#drp}3~O$Bgo}nK;EObhCv7CLG2_|CLx4KFylVfm%v`sAMj* z8Jo*K{Fc&|@#=FbM?vgNAP@R&Z}VilZOg6?#674n5K}%LI8LO#lK=RBC6+Y_7`O;4 z?bpbC1fJUm#5{Y*rl)ChBUru#}miF{|gct7K_4y!!Y|hq}5w024*7HI3 z#*lh9|HRbllC_oKb?wi-Bg8`cw|>r44b_4 zzED25k6#U%FW0NgX7!vX_n;^>YrE?%_2&Q-yw_JOLaxmRc|L}(33w?0;`RGxfR*Fx zHu3%HGda8a6)~T#mEPDF&K~}i6=6<+*2!U7}Pmq zX0D!PV+WQfWD>Ofwn^I-=2|cH`7LM1iVJeq!+~vEx=D8}Aox;S3-q;q)A7{c)#m!R z9>pW8oK>Xj6@3P)H=rwU)Pd?qJZtBB>^cAEZjHXL?!CVyKU+YEnH?m%??7C|@W#*$ ztixt-c6fHx?T}7w&99_UE7lTne@hHcT#t+lJdB?h;wQGY8SxZoYI11u-#IDwFR@Jf z9XEXbcv74V4IopaJDz8SrdA=He(MHGq2Yxt(^E3%%f98fU$$sQ^`}~ z=i$5weM-FZoo1Cfq({cOQE_p4HAWUrr@W^b!@ArorFK1Z0&Y`0f3(Km@0<$&IDQ#4 z_6iaNb2H)Vm6^Rj-lg1ov;EOwo&js_Ot%jRJ*n($nXZ-vDTweh1U^(kqxtnLMS%FE z2?1S?#iySU$h4t~`zj?Qx}W9V4|m#)cn>5Qo{A`wS16vOL3h3Sg!f`qw|70inOR=6 zv4jlBG?+pL>|I*yZ{tzRVqq6+RB#%hJ7A~JVLmwNFVM4`4TU<~#tR0YDpH&y2EFuS z>n{+2J5J>y6MJv*rWXTW{O_~Z3h8AFz;sDQ6EUQB>hh1v*WJV%w#}v6e@er5=;ec1 zRkn!F8N1nu#YFbqoo~p0L&^Wnr7Of1H|ruRY%t4Hy52oOsSE3&aHn@5{rTf%sI}E( zjx7fCA%AzRK62OK#)xC_-J#>x6opO{s->UGR8XFTx4)(;Fzpg#OSr@R&Duo&tl}Xs z7pzEIDy{Zz$B!>Eb`QWD8KOjQup2(x2Ia4MrQyT$z7?BBxGg5+}nf$pCF0A` z?(!)w3Slj{C!98AiaggxaIaYQ`QtsbZW6)~>#{-ZSZ)JMS=LbID4??p~E zmz*o3n_Ty&{#QSJP7u50Q6?9V&AKk1<6_gfJJ%iGX!+;2{6eThce`2?1^Llr-NFDN zeMmaV0Mfor_!2^~MuIib0Qlr{Pg4{_nl`WX{>HQTBc1lf4P0Da$yp#UrJ|zZ6+Uos zVkaOV&~I>TU6~jg+vp3&tk$dmFoIIB*{cAcRIGyZi_(7)%rcvy(kUdJjXYo-7yw8G zZ4zL{uHl!(4W`K(R8$SRyzKp)KUY21zV3pO4HXDv_mt@Gf0)|;vXEe&yja(4POJ>G ztbp*?V9H-?29&a~dv1|X%Gk9$?91%=ZevlS-lswklthpm2s_g<4NapZZ^->NIuWT!{3S-8#1?&$X@vz$pcFW$^~4NuoJ*-lH=eHp3>D zRl;=Hcq8O|KUtSX!c<2w<^p#|%;nTPcL*T4wkv2A6v=JQ(2(>V)|~zrw`k|?FDd*xF0~N(mzqEhS5v?K~QuG!c8XDk1{$)0i>#wE-$p|9$kq+)xMtI zPV7w0JF?T-3;t;|osic=-0?J=?_)&0v-?UKpWqj5fx2ckTEp`P_4g?(rBGE|FG%)@ zX<;!HlT$S39!H)$7f)oyb)pnlbfln9wu(ewPdLPPQ9 z54!UGQ>5Pc@V4o8z_oXH;(88)_oG=pCef7VVD-y}@4)$<5AERquKDV27dFW)Emzy2 zsX}Vul!ZbDg6=c`u>fv_hb*+i;?JL?2-7>YeOU6&keo0iTR%|!V7rcYg=NBC74Ks2 zC0p-br8|9km#&(rYR6^%Ht8R@qgwwBht4FocsF;sjGy8C2Jjim=iCbloBC@4rh3Ox{SP4uRF9^Ry3%qTXs|O3Gtyz z5&`(&$Hz8n5oI8i7Vt`o`D+4`VsUY?HW^h5p;RJgz)PPG-7TL%eF27+=?I=`gL;nY zRqmY_Oe!Cwaqs7aexpnmJUYNQ`UN8L}*TeEsC=qbREywF(@7@ zsYSTGsxkeAR$&jLrE#M6#H+*p+#6b0p97FLU0%e1b24`1lQmMx8Uvs3+@sK7Tg_zySoR1yE}useLczh zoO8eTocsIaUjCYCdaA3ds&}v2d#$};YR|MK=HYp*FlC{ zPa9N`&xs4dHJMh(0H)4zYl5|K;TZ>5Kl=>xKX)&+kN~e9gz~c3@yK;;4pSwL1~}Dq z$1V05mx3>wR(w#88}U$+%ip;8@VI~pS(3tKqLG4rO26r1T4z!8#sR>K6soyYYdOAdnZb ztBln1-Rk=WAQV&*#CB_{BR*#0Hc^t}ec3=Q+j?Qq7xa)xQ$|+&MuU~#De?nQ8xD_* zyp0{O6<4B7Jb1=+Ds#zt8fLQ(@$8q0Gz7;Xs?6i)@P;Fo6ZIxD3LvZ=XbAvhr3x$B zX>c=WWT9M4X+f3EYPmL1rHl($Z(Q!Sf}=9vt_DBE6#m5b`}Gy2xj*W-ZO6fNh7spc zzkc3I0Y2CyDy-&gDFqr=nHS|QR#v4_DN-|h+SW^VibWzBawL&*7dTV-DZ!{{QqHGf z)Xu%#4+S$LgzlMr(Zjb;W zi4_rt^}xh`{w&-J#Lqzuz+*q|PU(6H*oDMARdweUBB$pAZPSuMA@J%@KS;{pseLGs z_xt29Ex@CK+(?U!jB~47GVJs=_M~<-G{B_NE3C<^dE|k5KNN?io~(hrh^Fx}?IRR~ z(#5hf2Jo+ts>+Fk8Tj)Luv8`h`(aVm0xC^qsCIOOaYF6ivIpGfSyTWyCW|Q!{=ApA0~A-$h3)?49&7#61IJN+D;C3I&m9oA=n zh2uD6s#yn;O|EV!1!z^eiY;SAG9(U9Dfp#!VhGUH(_#t_z7XNo9}v|9dSp*8j&Sg z;1Uecg|)MrgC=F>*|xt!)Mwl;mzDL0vnub^EeMSm5-@wduRd0()BUupCmik}&|lgU z)|N#D;`dOL&tHc_4EsUJ!gs%DC5X6#50ice4pO-4)&TZ$hOZ5Gl8qzVESYE|(n7)e zmSWOoE;4XLEp%P+=ZKrvn#Wp-?Mnk?8j0K{Tf{77b&$;6I>}3=wdP4=ok6%7fCw49 z{v9)udvlg>mN0B??v2{07TTN)HjW~W?e_4e67AoioRMt`%_Wu`S{>IJky7$RTUEVGO4UgdAQ-GBuz~1jPVEGzW1VQE(^Sgbk?gA-ON18@tAWQMe0B z6YA?h48lhjU^uGFJ{2ox%vGItHpro}5BadB~zZ-Zo1c_=uLIr7W;gxmi+DF5fV^ppsQ zV*;}Q4oude8j35brt(};SqaRK?p7)=sw`=WH2rW2d6#WxDM>t1LwS6ZrGCn`=58O5 zLlizg!l4&TlF?|(0(1gl!dz{d4gg?*ydUfq?fQreuDzBwlDqbj@Qk+4VN_;&%twA; z^F4Pm+8v~?gccSShMKppdHz=UM^LpN9V#I74rxOr&X6W9P1)?at@1#V+N0)7WxM<$ zQdKwu`*qHjXWB8dI9(oS*?nr2FEY6X$~Sb~m=n>UVgNru?nVe#_?0$Px919Uf$^1e zK(S&9&2zkS1kSn6k3B^W+I1;OO`7@K9XNoNlPKjwbD4r<_kG=oJyenUUy3WH2;~wa z9hHu%B0@iNqt0j&Rb;1Z9DIt5Hwn4n5tFZd0-CG7bfM>vD($hWq$S9OzQ&#`zo?(s zLi(42d{CGh1?ppzwu&6h#Ot4fwopYD$Pwq0XO;LE#Tv0iND&cJ_{g+ac~ZxP%3sY9 zKYi8_0sV&xu9P_=pgYIj_uI68w(w5%#P{v|%Q{tVpo4ZK@B{Cs3J0;YY`qhkVtm29S*d8_g3TST+3lVA&#$tS zWZJO^Of(9lb;n{gN>Bm@l`LOCxA4$$`jh9KSabadEXKhv99TE6E<2GXHeGEgGTobQYo9{s36 zRxJax`PCo)s_{fFnE-M&y=LudLfZp5kapDUrm@CidOb#(;nPohg@0-Gx@q!COHnoJ ztOG`jF)95JnNVQkKeH#S0W|JHWpklHqwy%=KV1=e6^8J?FWmpnJOclHHUQIq5wU5+ zyuF_larEcLXJ+aqMGJUei&d}g5GFqKb!H_T6fkA|2JVj9Mn4udozDl6x`l`j}xXm@aJ3T zY6ZW5rC(Fa32dwFeLn9oxxX?m8usJy`Ebp`HPu3Vbn5YRo$vg$&!dt3_|C z82*p!svFvb$wy&%DG{Y%^(7qBt8+3s_OF~s93`JIV)v-*;J@Ks8rr3%7FVj-KQEyIc`pvgwmR6xq#rDk}X0Genc;Rt^TFkN1L zfhO@4NWx(}mUIj-U@0fv@d)eaqZ%71k0lleRxl8NO%sW5G+G|;cxqM8tfZ2N)T2U! zlDlx++R9uKMB><=s{54t8>mATWQs7Z`uaZZdo@rkwZFLpe_8c>ZP0#bLFy=J`j3jg z;r~j-Pb3HR-osR+%AE(a3k&~A!9$b}1=kpNi7rg!*FZX^e=yOL!fixf2Q$AVGt%8+D+o zjuNrOLEq7#BJ`=BHP%vx0}16&e6VE(0i^Tn33q>D-r_&f>2-azK83O}qXusv-3361 zo_Yg_wOm`)kDR*zCpslmcMwxn=3z>QkQ~V@Z@aXlYqowp^z2`@BOQ~#@3)TheUy`( z%zvf(OUn@HK1k|6rTgSXgIRIt2`}MaFb`v*b0N7?k%6qx%jO)vcf;D!s%2>I=qAk{K!>c#Vm+zMBbD-x zfZqlp;9mp;{KfwW_*DS`f7q86fYlm|HM;Ip)#iI|?THdm=Y{ipH^1(3ibGoU=&V#r zvx3#c0x)}dt|=(@HJYwB8s#6gza>hBql9?TxB>#xjjy|#C@9LtC1lOP*hdGE9Xl^c z(Ao*&kgJ7tKKaPW1{md73JlyR>r)Bq==D;fAgxH{R#D+v+Kls-SvhR10g>JPAPg7U z{vhwo6-_vW@;@_M$xL>Zc3W4Ty+<~<;eJyo)ImK^ZCT;&UFb&JZ(R?4e$~`5&4yd4 z!k~s&T+RoiZGa(~y`w4?^wT{IRS7?rhI8}jaOsN=4U8Ue7wHiu*<5e77}XQzH&(jH z+2Z#Y_?XT$kY5+hoQ4r)5JE0FOYGfql8l87h{yFqM0b6o{hqVHq3hZesys`%@- z30JS+UAT~h{LEV%|B$##_`<{2_`b?7WB1axL4i?R?ZCW{Sicz;YL%NRPig1ow3ETp zk2ZD^#ZOQ#R%+gpo9Aqx&R9C3l!|g?TCSfEDsOHCL z2@5r7Zs9)uOuGAhMtZod+cu<5wdKnPFJa|bD-s|{gF!$xVR50`!}hCIM5x(7h6FZC zUeJ>>=aYH%$?cogMFOF7tJ{sI6^ZrYv&oQhjOB+DdD~|z!L1?I2>E+5Q}83b4z&Xc z&BAQpg{A;PZH4TNsz3fVL`VfrJs6Y&-bpA;&PO!dkc1E+cCZuIQL&C7P5T<5NXMalO`WlMErqi9#@Y|48 z;Jp}BV#moWn?1Mcx)A#-U6d6c`Brw_NE46bDKoqRKLzy#{G8=eqG6k7S0POd^CC-1 zYQVn$*nU>A1ljp*FTuzL=v6k*kvBX#Xbm<`r_)ouZVh8NIDKW?Q!*)}*&^k$-Ky#7 zjloT?s-@vvXSPI~nc7P+GI0%qqW{#U(^)uA$kT#v55;ZKzY>c-VG?^|K-teayU~8d z(^Eq5x|}1L%^TcdW4u-WS>omK5Q*;n$c9#F6?&3FS1PqH_GbXWftNM;D*D@2HD59S z<`|@xG=Z56PZc{Arw)v3Uk@MN7%;-TCxGEB7b-hPx`1l`hRDYkALT-FhXP{==_Ins#wYqbvJ7a?H^=JdV zY~erX-ZKRH+kgM)4Lx+B!^Y>1nRv_kV&fx@xBkDf2`Mn6gp`dgCEo3Wg%KtEO=vyP z7h%$QUQ=?l%?C1urUQ8Z&`dsIYub1*=2r zO?OxiKUeQM;dx2Jmw3qw3;wh=uFV2)-^7_|R*Y1qxiR155Lmvlmsw%;<)?kr z{2=iu*z>sfluBd?`T9pKR%RX#91Yag(~g1-T$(*G;ecc~tqZXRT|CRNiaZLe4_C7e zy%lM z?J7~x+qoNMc^C*Vg(CzHw&8@V)(?V3+;D%qtAUA>f}|<{a?nIJalWMNWu`tlL%V%r z)4Yf-+={H**kXnvAP!{*=s5UZRjk`A*pCGX6VlfGbi`Van$lbT>>3U?7G;k7+raM4 z=V@fdIZ&QuoQSDBl-)pW3;C!EsKkY9wtg-NhANC- z>TUz9sj9KX^O79*Mk$CM`F|~Gq(i?r>t zNY~KES99ZQ{&Ix;QqqtN17Y>EP%w6kckI^IE%!>rTJzV?87BEz*X9@(U`+QQrS(s; z2Bga&&fc8Or*Few3VV=_=66hGmR#-ai~gcM&FY1J_5M|hHj?z-d~JQpMLN;heY|Y{ zi^|rP2=BJ=9F=;89x&dE0SuI$)ZIOrD-wotUd@X+6R?}=KEF0SU5%|)30YMI>TGaK z)Nn5cGrh2E9Fp?W$n2co!+CdzUis!!g7>P#SObt?LhNqX{ax(a3(-w8JHh?{e_%ky znTiUpmzSqvpD{4@S*g6$o4P!bA_CRALFDsAlUG|q3=gmDW>9G1{5FFIAtHL#0Y%$xWLo!IcnFs+GQ%8XWz|z}DT$MB6BE{m*omU;kc=8fzw*v{< zw6&UOS!p_4$8A?-*S#;sudM4hPUxr}_7q2oPI*t5YRXt7Py3h}$9F%>Hzw7RUmUE( zP)8G~mh2svvw`)loMFwj*%$am0ZGC|>O=FWu(iVG)YS6^oe&W2)5Zw?Wm>rYWm@Ro z4RD5nNr9*IQ~hX{I%l&8M6bWSkZ@oh*E~B5VNOIHu|}q)LU()E0tvbo621Q;FMu$0 zH?5m@Xh^#tjdxhomklIzjSA)hvERS?8z7kwie9;zqs*2XylGHFjvMXw>`W(!ga))L zT)eJ=W(bUvhF!r0t>U?Jsv@}e`x`C!KX@v%7UJ&@nQV@GB#U1L23X;(d|EO|PpZZl zU_kCxbmvIe5Gp9la{375c^Y;OaL`q+>M75EV@y=q?&(6k&xWIJB zm-@?|z>@Q^8G%t+X7xaoRjfy&n|T%=k{gnrpdIpEVyeF{2hKS%4yWev&gJ9{fMt@C zQoFx)fH_!s-P-k`HQD?lESWf@!?zGH6fIv1hdF|YV=N`(jpndxzm662E2TSl?cBTn z5_-CF0WA*TwKM159hh<$j9p+ITXxOjm6!;skgw=J=Ouk1d!K{7FUy`X=K{(u<;s!G zWaNv)O}3+$7rZ=`SXP(4I=@`05_jh%&(p@ZkNj1`I)2aQ_ZoMn>{0o}@-$Pc_W+-u z;rUp1^IkbE9*>WCDBZn0G+&I` zK=HV*^C?YkmEB5Ct>zkizm$e}AZu#bCw1QC8TbA0EL~|MOy0#Z_H+ruq?t1HJvpl? zVNWifFs}`0&%k7nF>CKJIpTJSb8j}5KVPX2ywo&TWin>Txe;0Aehr?p79Nz$gma1s zHkoJgzfCxRGGotj;^9WRjKVrP+Uw(KxGn`8wAMRk?0bY3jBs znqV(~LgyJLrx@9{%}GONUX(ZPNw9?jPdhc`t;f~iv;QgC+s8T45tpkfY9s8%+*S}i zeu13n^P4_H8bhqlmU$Pq@M#60>z?JB^r9F}?unY%RA#gYkd3b$8Xt=IcLYWX%V%Y; zTlm)@{1}fGZe}<~arZY?q;{Ag7~+?;Jm%(7RM7iB47K6YOcxD;ok222Sq|*x_piC+ zVJ_8div50Q9~Le4-TrcjeQoY68s5Ry=UgJ~Uf^EEdUv>|+{ZD#0lQ;mN{Zv*-ck1$ zk^JD=2j0CfB=;Cq{{2fUs4&l;W;DoC(CMgro%bQWHud)dC&6)(4a*8bNVxQjR}m1` zkf>sQYNC8WH5X%4?|?bk{-~oIr-vjUs@4#7Zl!cTqp_s-OUnj7?8V2K!)MypQwy#+ zdH%l!;&)k%?JQn;2>lS#CD`!hxgMz(7gcGFtu@BUdyUyap)x%cuoQ%SC_js$uq7}m zZ~vUrm+cA+S|U4Aq%3fx?kMGAhv1=;SdBC>x^1#^l(^TT?`C5?(m^`At);2+UbA8B z8JQ_*XGdL7W-^gfhfjGX90PmC+l|TI`e)f(MkdcVF0=AI@n(qUZIb`!7;Z;jIzpRl zhUDq!6xC}UdEd56*n~xNK1KYP=Nl7Mv+`~QLbnIDUgr{Vwr(21tqR$T8w2NB_6?SZ z)Zb5!CcPS*1E-NDcNJOQE+UVOh1Ts{#~DTM9#)Eayx~F^j=@je;mVEbaH2m*?dR|qf7Tzj1y1ie3MdGyZJtee1ywQ*G zG%UFP$d+VNHOFk_2PrAb3#pHyB1X!yvAe)8L=tWwwY%TtQVC%}Do}jSf>Qy$izp6; zFZ=B~@|aZeKx$uvY^((lryWs=te2a)7i5E_{!0_r8IV${{RP$4 zY!ed`2H@*kj~kEHg?V`L0^o$Q~m8ScP60NwVVIp_gS?Io~@PDtp> zjuHr6vL=?5YtcEjvhjPZ47nrslmR0oP2cOJr%g)1x4@MvD=YD&<%ItB8ti6fW|lo* z7CpApWyGSOtdah$!4Sn7VsFq?&r^{)rIKqUmY|&fxIevpQl>w%KK*3A z9>MXH128*^x+QQ}*3VlH1xHDz_#5`8x+|>Xm-pw0@iuF@+DC@P2>2%ahz*Yq112NT z1&c1AE+!@vzw>*VOivs}QMC8k=cahi6TPGB)ZKVE)4HtSTOZDbsOjs%_Ku>;@fYGp(w#~2e@lvriY`7v zX3hROi3%aSPEc`UZp;Myws3$=2C|gE+SJY=x_>@7L6+Wsx7tGg%oTVfR35`K7T>uFe9WJnRzTBh0+g@ zk1>idJbvc5Vk}*MDi`uoH6YUby@Jt~m>(Hgc#su>k(9SNnsFC{C;O+5qK)0?Oq=Tg zYGbF=C$q7dZh^6Um$d}G2a$7DX^>^zvWey?v5zlX-ZHfCVf+f~>=2o@AVs-3+L-{u ztX6-xKNZ=N_)N z|1*9hR`VKe+woQXu;61!D(0&R99-EG9e&ZZclR+g;kbffKwrCKH-mC0S`jb97+Y6O z9guHtZ@)9@$^o^=pn%lh7h28znl>#xy+6!>XJTFD%~RDHY{_I<#rW(jdcB#$Z2=YX zn?2Kwz22vvFKO$h&K_5veo`wEqd1*p&ou5v(BY8Fjn6w--X8MnI7836UfmYGXW^Fl zUA~-c_tN(JdGE9-Yj79aBTZroc9n}ebwIYEX|A(7eHdD8Kt%DqpNktL<8XVQvOsa4w~2lJOkO50u+~3r{IowniTOhk zb=u;+`ttk^UN2Q@(EV%^AF+g`PRTW;yg2@Hc11-sPvjIey3)h}LG$6eiLN6AVgk=~P9_TD7*p3$p3aWG8>X6ZHY z&fkDLyzq4`vQHXLHZf<+bUrmj&ZKt%lpZe~0oSCNx*N>yf!;3+md!gAg{|?j*_tqh zJd-^RZN4}ML$k_lX!yOahxJ+lg$&Xq7w_1~Xo2U8GkM(oqo7>_6%|!Rx6a^ctza}@ z9OdNDC}M#jX&gwZBBFCI2xqieT*XWX`;0C~Se#ekKXx)hkd(nNSYd#h!2LS$tyV+P zn`C`Gz0Vso1Q9`Zd;Hru1Fa12#tk0$^8^2Wa zPKeg?!tcINS0C=3z`d^cQg%NSUduUpjF;Rm`KF>4dygttt#1Frha1kyf{Ue7>9s3U^RXQXIWA;B^@Ovz%wIRYFL5SBA70zcWW@hFEX ztZQ!X*Q!R0IZWf0gHSF9?#;jOzsxQ5K0mC)DTmkU`}?7abK%;VuEedK9)+rwW6Y=T zb>naM`&@JHhA4=aSfwI*Q8XZSzk#g7iSSlq^Zt#ujEqsEVCh*T%N)&ZTiw8b2E09W zI*0zzl%e)j5;svd6gNJAuxokkc-pz*5>c8!ztg@g>NAb|R@}clz((GKUzO47$|F=m zd^b1!YMO2lgqxZfJ{6Th7y4Bv<9LuAWm{kKoC{&PeXmRWwl7jo6ZNi43!TvDv&GVe zW%!vj`$&+UK@@&$~jMeBh4^l;bGoq(V@5uVlY4KuPQ3cbc;NUs(i zVAuOwNDC2*7(1?+KdaLjjgIJ9i}5%dOH=am6U7er>%Ui3r2te(v2%o!IuebQCqh>b zrTmAPN#h%b9IYKtl+Y-!EA@ob1Pi{=N8h%554h)iMC{?Nv0!yK4?*wCB0>Xjb}!op zrjehlKBFt95@0a)GPjiOnCWT@x&1`Pc%-I6q-eLBfAy{RMc-Q%)ipK)=z3n*I>wLf zy;G_lff%(bCb%~SMCm6cubaF8Yu(V46pKH?w9e4b(BR4kvUk|tXu8}P-<&k4(5p~q zLLr_$v@FwUks9@Vak>$qf}fufu|G8jmBP0ivcS|{FLrMCTwEHeDkvpe=H1I!g8uEG zf&57mzH=S-*V<-&=?sk1r$V<95=*XD1A7;D3xCuYMkoKBuRG=U^RKoI>{XRamA-FmGB68b)^a@HX@WWl)s>$noFM5q? z)A20PA);!Tj&Ol@H9$eMM)xmNx;mq|@`78%$w@{=Mo_i~)AWFs3nFzbRKnb0oID6cO6Ix;!Zk~U^CyI_M&grlaFuo zu^2>Xk4ELlfs_8wf?@1E$#Gkof-{Omn&($8cZiznUqVu%nKdx%ir zZkG%gf!RtohtBdODI#n9r!|!PulH)DYkkF~RZAog?DokCyvR*M^ZGgVLxhQ7`W&8e z)!cC1botKpadTHhd8@%GEIN?N0ty!wH)CgAbkUk~MWYQ=HRsVc^5c^D7;QMsSVKV|K5SU z*5BSfH3b7{tROv6j$VXg-`?0?8>V25WI>2z5ubbv>6N6Pvvf7*C-5y6_zMb^n6nun z0|J1G{&3y(Kc7NO#E4^n7d~)ILJ@N^EiKI`5GZa3Ak&W%uO|nZSEL}g<6ZpbQ=t;% ztZ!yg^C(5X_heM5AYU88WUi##6_16cK0}s21|oZ$q>T2TrUA4*BLhJ;5>n$~cYl%9 zyIc8Gn!i|nPZEq$#F#V=X?{~DNBRNg1A~t1C1E;D6n{gU3DLHj*SR}QOtY7Ia}G!KBX^}9 z2N!DyBnp>0Loqi1mM%j=7#M5~4-XFoyrcB?CUUt5(SR+$>)>_y3H%_E#P2UwI`=L4 zx`)b~b*Nj?k16f0#)41JEpbZ)%l%t;3ExCU1|=tWJJVS5QDBZiq4Xgw+lH?|YJ#v} z#ymt%c5`NW0fin3t*qY)3IfTOhX%&R5cF(qqtn80+zv|XX4REsRaI3Nxxnc2umgnv zw4f<`S=eM?LGSLcoQp_|3&4?me(z7>+%}e%V;(%{9H*7Y{j|o%S1d@-FR2L(wrZW; z)CO9*)SOor^V5NdtoW8@iS4xLR~V7Yw71iB_(l*jOpkbKJ+9K)p2qDnoiyiaHxSKn zdiOm=iY#xSXlpDi**LCXt>?7_XndXICu{#5F}dmj8#WIW66Qz&Fa)Dw{(0Tqx9Bj6 zM{-mFc7ZT5h|6V-bcay~p2Xy7rl6#x`*MJikb8bum;cr%C24Yqjfmj%IZ^GsDEOw) z$|8N$U19!>7AI*fp4RqMiy`8s{LCn9yIVnsvmq#Xe@3WFz4P)e{$4!FiP$}1Co1B- z4m0C)f6q%2a z+g8!Ud(9F{tX3|d>YJT@iFsE*%wE?0GzHcHi?ZlrXX7q?wu)Jyg7ph05_d> zC8VZoJpUUqp@l;KC355JYZ>1XzZoq#m1s#kLPGQ zF3ub>wX!{AOC8IUU7m!0=GqUaVXN+6*TN9&#d9wv=<5S7d%zl3vhJ`jaY^VXfIfia z4_%R~sJqi;>^~<8AZ=(Np||Pq3*=$k$iH1U2;AefeH$Hqds*8$R@^`^r+`lziQ#l` zb0qdX=CrOGG#*`=#-MX^UsiEhxkWhJOeJNpUPnKEscuy{cTR0il$qc)uUTd54pjoE zv%fq-irUCXDPk(?`p(#~(qXgg7&CE_r8ZpW#-^o34j6SZke@e&6m>kE zE*`5C*5lh_(81)PURBlb<&uUQ8M`||rT$K#mJY6dG*g$Co2c^mV$Imu+m-((sGbh> z*Eq4Fb@lkuB^u=d`gO$A8Xm=s^He9Hg=-3JSH1YgY=KTHYWu)Os?X7ksQ}p9Q+0e_ zyl^1mbW@@GUOZc19Lpjk9Lq`ar`5NkV68Fw(-oFi*nNV=f>tdYJfrMUSpMwK1UcH1};}`?xHZf)jV=FJ#D1UJ^VG{DT_a)~Z;z(eD6_!7RY4PFiOyg9sC% zlVQT!Ii9^A7ktqLBAmHT^i;!_gRG*I7&2=`&BQnF&SVK@t5$KFqJsJwyr=vO(_{Y= z;au8&hpeNt{|^|%m+>%RaxHI-c+?i@`B~`Z)cnAbQv#S}<2j(XbwPo|!x#d4+M|cD z$;T06RsdzBt+bt^akk!t_Mr299ohE&HqqV=#gD_d?%Z@ceRr8SvW>VQX}%}8Oq9q! zl9%;PGd&&B$ANHx9`xv>I7zD`3LaiwGZ&t{(Y{fOzIwP4AzLFKSY?+#(h_Uq+?s+F!7dGSA z&wHl13Vzga0tpH5fB)`?(mBZDEMd(2oPEhY`m|_z`WmkZ*AuqAw`xo+;N2-^ zjXW@|U?<7eZes7YnS(9B3ldMK6W(?DYKK8<^Py)5YIFD*AE5iz3*7pXi6`F{Q>M$9 zQq-7QF^5Gu*{#oV&(EmphnYq}*GIJso%3es$7SVU90t94^dJhPNtWAs8fB-+SE~3b4lEJqZzqw@bBD zLPwaGepcGWMf84nyZ|{&80q%q1z=8LhKsBFHd6J4GEa8s<9v;iYMK&6%jHm=7(=`> zbHV$b5YSCSyECIH431>K6Z59iIOpP(LPe415M50lS*(nVXn+U5P}PGAEZg8fvHW%& zju!DMyqcY zPes@?Cz;O`WJki(^}h`_0O8wA7AjKVr{6sx(_Uz`f!3Uz1|nsmE1+zUJPzZ7=gjPv zIeRoq9XQ+z?FP`S>0e(53xNd_;rMpHfCxCO?X!o?!^Y1R>%>-A92mqZU7LgZ<{wSp zh;lIx$3nsrc4tMeK6`Mas^3G(Y)e}E?n|HGTLtzAZ!e;38|ScIw>m_l^nNvg+wc=Z4>6Hszk>#6uZIurdfCZ=2@i(r zS6W>r={VlczQL}!A(7e_t+xP*k;w1_mbCpCD<%66{cdf02ZvKvzRm67K9_^B?14f6 zUI5MxT!E6gIjxp2aVam5*ZT;H*?x|QUG5*&FUW(AyRC5bw6bsOpD$HKi-~h7Tv#qe zKG{n@B;5JL2BoHemS)7eq(|5sMY^SOKw00T2oL&Mh~#RC!34C&c)dik+KGm#uFv&6 zl+4Zw_t@k4A^Yj84}kw73>&}@i#|hdhIcodM#NDCF}H(3_A>x zy2Ob+MO@_3H92hLcG;DH_DEwIM^kylMMc-WrwdLGcUXD-%sG-Ful|RpRF`@nK1b)Z z3T?^poGgt155L>sicz;P0=O>vEIH(HA$C~=EWmpAM)19{Dn(6AGEkK~XK62|ZRL3| z&-cLtr2YT}9F>rkmZpk_yk8eRW0Et(yx({cRtfV>o$dL5kLkY=T+;|8P1e z{tdlRiy{I(LC6dJuSX+B@%x`>o`lrDVsrodCw%7~KmtZO7VD3L15ApAg%wMaUJd6| zi3JHx1dC+<6Q%jTzQq5sli!-quR z)YVc|;~nIG)CSJ4l>r{&_2A0Ss{Xd=%ks9&&7PHtqh0tSlX3;fDJ(BRoG zn&}cZ!RvkTinokQj#t7?3MBfE31h-i{*=|Pa))EEQl5LHLdpCPj4j>vd8;3tz{)&- zuEP567IFV0tQ!6kqnRczrIY%Mx8v_85iBboxaynoXZVfs4_D6zHdJogF5lse)itjk zeSb*Pa(Q3ah+$5|d$wgGcVbSyx4#RvCWaWa1~LHFJ)R>h+>}g>&ZHd}f&Fs@4QE)} z^wj#}8+W7);;+VjdVzKK_&dNZ4zt%%H&~VE82aE*OYe4`TW_NJRdR`F5x+V;~P9J zhqRw?*0ZcAaGbc=5k;SC?YPBvN#H${Y|-jxcY*M<6^Er9NMsu~il{@Ta{b^k+ea&s#;@RI^85*LqIX#MB&sr3Q zs#flVjLlx6uZ5TlwXTe_G{*aFJZU*Ut+y%7IE2P{?&L3$17m`b#9g;X{Y07A=9IKfHdBf!4G|;7XfebQZ z*Y)3$1zHIk0&mynIGzsnN9L@fAW!4s27^w^0QrpB@Y3it*JFCBR_j&%oOSG<|78n2 zZlu>=+{!k}HFu?4T%a^QpS&G`FLA97Z@c-zqnn;A_5--7BOn$6>=zQpzGfbH=Utx* zjz67JUZe>)CbYIZ1o++?v!|rLZpktIN&P%EmoDklLN>4 sraFcmX1r^Ed)|3Y{ALAmOg21to7BW;+(q-DKmmV}qH-c-!g{{{0|v}P(f|Me diff --git a/doc_source/images/java-dg-ec2-instance-pub-dns.png b/doc_source/images/java-dg-ec2-instance-pub-dns.png deleted file mode 100644 index 3f98a1e6511ae4107fe31815c908ee8050cd6171..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81952 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�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%0AbW2@IF-}n}nsxfI|9RV4GM6 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 C1qy!v diff --git a/doc_source/images/java-dg-eclipse-create-project.png b/doc_source/images/java-dg-eclipse-create-project.png deleted file mode 100644 index 68258f6c241f7b9224e710dd7576744e78c1a0e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92765 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

Jr=#5e~UUCs%>wkVo{MNt7I2w-66JH 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%0Aj5NcJ4aJg~MYE9{@er;!zr%Kps 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 W?#2;^v|7inJAp_mJw-|yy!}5`6g)Hl diff --git a/doc_source/images/java-dg-eclipse-new-java-class.png b/doc_source/images/java-dg-eclipse-new-java-class.png deleted file mode 100644 index d07f5068c873e90ef06c9ced45c4d2275cf7f317..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64339 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 diff --git a/doc_source/images/java-dg-eclipse-package-explorer.png b/doc_source/images/java-dg-eclipse-package-explorer.png deleted file mode 100644 index 794d121f2cc6fdb5e4d2fa67a921424e2f09d044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76531 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
+WFvVQsTa?G-#KkX2`^qO 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 v@%6gTe~DWM4f!|os6 literal 0 HcmV?d00001 diff --git a/doc_source/images/RequestMetric-131111.png b/doc_source/images/RequestMetric-131111.png new file mode 100644 index 0000000000000000000000000000000000000000..aae9d5a09810182f1c72091f3fe282961a3a6138 GIT binary patch literal 93802 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

eG#YR8|KytL*E{!RwT94{IBc6x}spln(^ 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 YH_ybT0M#2JOrP{nRarx+Owl6vf2{K#O8@`> literal 29305 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 rzL;ehT0sQNH@l8`W$L*;8foeW*J) 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 N=Czu9sjTtW{{u6rl#KuY From a2c7f946af597eb3e597f5b2c482e1c623644e66 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Tue, 4 Apr 2017 13:20:13 -0700 Subject: [PATCH 062/225] refactor topic a bit --- doc_source/generating-sdk-metrics.rst | 54 +++++++++++++++------------ 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/doc_source/generating-sdk-metrics.rst b/doc_source/generating-sdk-metrics.rst index 08794bc..7291c92 100644 --- a/doc_source/generating-sdk-metrics.rst +++ b/doc_source/generating-sdk-metrics.rst @@ -18,7 +18,10 @@ The |sdk-java| can generate metrics for visualization and monitoring with |cw|_ * the performance of your JVMs when used with AWS * runtime environment details such as heap memory, number of threads, and opened file descriptors -This feature is *disabled by default*. To enable it for your local development environment, include +How to Enable SDK Metric Generation +=================================== + +SDK metrics are *disabled by default*. To enable it for your local development environment, include a system property that points to your AWS security credential file when starting up the JVM. For example:: @@ -32,40 +35,45 @@ datapoints to |cw| for later analysis. -Dcom.amazonaws.sdk.enableDefaultMetrics -Once you enable the feature, every time there is a service request to AWS from the |sdk-java|, -metric data points will be generated, queued for statistical summary, and uploaded asynchronously to -|cw| about once every minute. +All metrics captured by the SDK for Java are under the namespace **AWSSDK/Java**, and are uploaded +to the |cw| default region (*us-east-1*). To change the region, specify it by using the +``cloudwatchRegion`` attribute in the system property. For example, to set the |cw| region to +*us-west-2*, use:: -The default set of metrics is divided into three major categories: + -Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties,cloudwatchRegion=us-west-2 -* **AWS Request Metrics** covers areas such as the latency of the HTTP request/response, number of - requests, exceptions, and retries. +Once you enable the feature, every time there is a service request to AWS from the |sdk-java|, +metric data points will be generated, queued for statistical summary, and uploaded asynchronously to +|cw| about once every minute. Once metrics have been uploaded, you can visualize them using the +|console|_ and set alarms on potential problems such as memory leakage, file descriptor leakage, and +so on. - .. image:: images/RequestMetric-131111.png +Available Metric Types +====================== -* **AWS Service Metrics** include AWS service-specific data, such as the throughput and byte count - for S3 uploads and downloads. +The default set of metrics is divided into three major categories: - .. image:: images/ServiceMetric-131111.png +AWS Request Metrics + Covers areas such as the latency of the HTTP request/response, number of requests, exceptions, + and retries. -* **Machine Metrics** cover the runtime environment, including heap memory, number of threads, and - open file descriptors. + .. image:: images/RequestMetric-131111.png - .. image:: images/MachineMetric-131111.png +AWS Service Metrics + Include AWS service-specific data, such as the throughput and byte count for S3 uploads and + downloads. - If you want to exclude Machine Metrics, add ``excludeMachineMetrics`` to the system property:: + .. image:: images/ServiceMetric-131111.png - -Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties,excludeMachineMetrics +Machine Metrics + Cover the runtime environment, including heap memory, number of threads, and open file + descriptors. -Once you’ve uploaded metrics to |cw|, you can visualize them using the |console|_ and set alarms on -potential problems such as memory leakage, file descriptor leakage, and so on. + .. image:: images/MachineMetric-131111.png -All metrics captured by the SDK for Java are under the namespace **AWSSDK/Java**, and are uploaded -to the |cw| default region (*us-east-1*). To change the region, specify it by using the -``cloudwatchRegion`` attribute in the system property. For example, to set the |cw| region to -*us-west-2*, use:: + If you want to exclude Machine Metrics, add ``excludeMachineMetrics`` to the system property:: - -Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties,cloudwatchRegion=us-west-2 + -Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties,excludeMachineMetrics More Information ================ From 6e462f7cc4b74ed0f22b37ce39f921bf2d3e13d6 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Fri, 7 Apr 2017 01:36:21 -0700 Subject: [PATCH 063/225] some updates for S3 example topics --- doc_source/examples-s3-bucket-policies.rst | 21 ++-- doc_source/examples-s3-buckets.rst | 16 ++- .../examples-s3-website-configuration.rst | 105 ++++++++++++++++++ doc_source/examples-s3.rst | 1 + 4 files changed, 126 insertions(+), 17 deletions(-) create mode 100644 doc_source/examples-s3-website-configuration.rst diff --git a/doc_source/examples-s3-bucket-policies.rst b/doc_source/examples-s3-bucket-policies.rst index 115c9b6..a748e36 100644 --- a/doc_source/examples-s3-bucket-policies.rst +++ b/doc_source/examples-s3-bucket-policies.rst @@ -39,8 +39,8 @@ You can set the bucket policy for a particular S3 bucket by: **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java - :dedent: 6 - :lines: 113-119 + :dedent: 8 + :lines: 82-88 .. _use-s3-bucket-policy-class: @@ -54,7 +54,8 @@ When providing a bucket policy to :methodname:`setBucketPolicy`, you can do the * Build the policy using the :aws-java-class:`Policy ` class By using the :classname:`Policy` class, you don't have to be concerned about correctly formatting -your text string, as shown in the following example. +your text string. To get the JSON policy text from the :classname:`Policy` class, use its +:methodname:`toJson` method. **Imports** @@ -64,14 +65,8 @@ your text string, as shown in the following example. **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java - :dedent: 6 - :lines: 68-73 - -To get the JSON policy text from the Policy class, use its :methodname:`toJson` method. - -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java - :dedent: 6 - :lines: 74 + :dedent: 8 + :lines: 71-77 The :classname:`Policy` class also provides a :methodname:`fromJson` method that can attempt to build a policy using a passed-in JSON string. The method validates it to ensure that the text @@ -79,8 +74,8 @@ can be transformed into a valid policy structure, and will fail with an :code-ja if the policy text is invalid. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java - :dedent: 6 - :lines: 56-62 + :dedent: 8 + :lines: 56-63 You can use this technique to prevalidate a policy that you read in from a file or other means. diff --git a/doc_source/examples-s3-buckets.rst b/doc_source/examples-s3-buckets.rst index db4a63f..7111545 100644 --- a/doc_source/examples-s3-buckets.rst +++ b/doc_source/examples-s3-buckets.rst @@ -19,7 +19,8 @@ Creating, Listing, and Deleting |S3| Buckets Every object (file) in |S3| must reside within a *bucket*, which represents a collection (container) of objects. Each bucket is known by a *key* (name), which must be unique. For detailed information -about buckets and their configuration, see :s3-dg:`Working with Amazon S3 Buckets ` in the |s3-dg|. +about buckets and their configuration, see :s3-dg:`Working with Amazon S3 Buckets ` in +the |s3-dg|. .. include:: common/s3-note-incomplete-upload-policy.txt @@ -31,17 +32,22 @@ Create a Bucket =============== Use the |s3client| client's :methodname:`createBucket` method. The new :aws-java-class:`Bucket -` is returned. +` is returned. The :methodname:`createBucket` method will raise an +exception if the bucket already exists. + +.. tip:: To check whether a bucket already exists before attempting to create one with the same + name, call the :methodname:`doesBucketExist` method. It will return :code-java:`true` if the + bucket exists, and :code-java:`false` otherwise. **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java - :lines: 15-18 + :lines: 15-19 **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java - :lines: 42-50 + :lines: 42-54 :dedent: 8 See the :sdk-examples-java-s3:`complete example `. @@ -81,6 +87,8 @@ versioned objects associated with the bucket. .. note:: The :sdk-examples-java-s3:`complete example ` includes each of these steps in order, providing a complete solution for deleting an |S3| bucket and its contents. +.. contents:: + :local: Remove Objects from an Unversioned Bucket Before Deleting It ------------------------------------------------------------ diff --git a/doc_source/examples-s3-website-configuration.rst b/doc_source/examples-s3-website-configuration.rst new file mode 100644 index 0000000..664cb99 --- /dev/null +++ b/doc_source/examples-s3-website-configuration.rst @@ -0,0 +1,105 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +####################################### +Configuring an |s3| Bucket as a Website +####################################### + +.. meta:: + :description: How to set, retrieve, or delete an S3 bucket's website configuration. + :keywords: AWS for Java SDK code examples, s3, website, website configuration + +You can configure an |s3| bucket to behave as a website. To do this, you need to set its website +configuration. + +.. include:: includes/examples-note.txt + +Set a Bucket's Website Configuration +==================================== + +To set an |s3| bucket's website configuration, call the |s3client|'s +:methodname:`setWebsiteConfiguration` method with the bucket name to set the configuration for, and +a :aws-java-class:`BucketWebsiteConfiguration ` object +containing the bucket's website configuration. + +Setting an index document is *required*; all other parameters are optional. + +**Imports** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetWebsiteConfiguration.java + :lines: 15-18 + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetWebsiteConfiguration.java + :dedent: 8 + :lines: 31-50 + +.. note:: Setting a website configuration does not modify the access permissions for your bucket. + To make your files visible on the web, you will also need to set a *bucket policy* that allows + public read access to the files in the bucket. For more information, see + :doc:`examples-s3-bucket-policies`. + +See the :sdk-examples-java-s3:`complete example `. + + +Get a Bucket's Website Configuration +==================================== + +To get an |s3| bucket's website configuration, call the |s3client|'s +:methodname:`getWebsiteConfiguration` method with the name of the bucket to retrieve the +configuration for. + +The configuration will be returned as a :aws-java-class:`BucketWebsiteConfiguration +` object. If there is no website configuration for the +bucket, then :code-java:`null` will be returned. + +**Imports** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetWebsiteConfiguration.java + :lines: 15-18 + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetWebsiteConfiguration.java + :dedent: 8 + :lines: 30-46 + +See the :sdk-examples-java-s3:`complete example `. + + +Delete a Bucket's Website Configuration +======================================= + +To delete an |s3| bucket's website configuration, call the |s3client|'s +:methodname:`deleteWebsiteConfiguration` method with the name of the bucket to delete the +configuration from. + +**Imports** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteWebsiteConfiguration.java + :lines: 15-17 + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteWebsiteConfiguration.java + :dedent: 8 + :lines: 29-36 + +See the :sdk-examples-java-s3:`complete example `. + + +More Information +================ + +* :s3-api:`PUT Bucket website ` in the |s3-api| +* :s3-api:`GET Bucket website ` in the |s3-api| +* :s3-api:`DELETE Bucket website ` in the |s3-api| + diff --git a/doc_source/examples-s3.rst b/doc_source/examples-s3.rst index f2f06e0..75feaef 100644 --- a/doc_source/examples-s3.rst +++ b/doc_source/examples-s3.rst @@ -29,4 +29,5 @@ This section provides examples of programming |S3|_ using the |sdk-java|_. examples-s3-objects examples-s3-bucket-policies examples-s3-transfermanager + examples-s3-website-configuration From c6ac4a72c1b417afa17a9dcebf7090b1a6f85db6 Mon Sep 17 00:00:00 2001 From: Huntsperger Date: Sun, 16 Apr 2017 13:09:05 -0700 Subject: [PATCH 064/225] adding minimal example of getting and setting bucket acls --- doc_source/examples-s3-access-permissions.rst | 53 +++++++++++++++++++ doc_source/examples-s3.rst | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 doc_source/examples-s3-access-permissions.rst diff --git a/doc_source/examples-s3-access-permissions.rst b/doc_source/examples-s3-access-permissions.rst new file mode 100644 index 0000000..233ecd1 --- /dev/null +++ b/doc_source/examples-s3-access-permissions.rst @@ -0,0 +1,53 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +####################################### +Managing |S3| Bucket Access Permissions +####################################### + +.. meta:: + :description: How to retrieve or set the access control list for an Amazon S3 bucket. + :keywords: AWS for Java SDK code examples, bucket access permissions + +You can get or set the access control list for an Amazon S3 bucket. + +.. include:: includes/examples-note.txt + +Get the Current Bucket Access Control List +========================================== + +**Imports** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetAcl.java + :lines: 16-21 + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetAcl.java + :lines: 31-47 + :dedent: 4 + +See the :sdk-examples-java-s3:`complete example `. + +Set a Bucket Access Control List +================================ + +**Imports** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java + :lines: 16-22 + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java + :lines: 33-51 + :dedent: 4 + +See the :sdk-examples-java-s3:`complete example `. diff --git a/doc_source/examples-s3.rst b/doc_source/examples-s3.rst index 75feaef..e850b31 100644 --- a/doc_source/examples-s3.rst +++ b/doc_source/examples-s3.rst @@ -27,7 +27,7 @@ This section provides examples of programming |S3|_ using the |sdk-java|_. examples-s3-buckets examples-s3-objects + examples-s3-access-permissions examples-s3-bucket-policies examples-s3-transfermanager examples-s3-website-configuration - From a286e612362853ddfcb6aef1d72840fabc39a55f Mon Sep 17 00:00:00 2001 From: Hennessey Date: Mon, 17 Apr 2017 12:03:22 -0700 Subject: [PATCH 065/225] add Makefile --- Makefile | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5e90b8c --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# +# Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# This file is licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. A copy of the +# License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS +# OF ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +# +# ------------------------------------------------------------------ +# A simple Makefile to build docs with 'make'. +# ------------------------------------------------------------------ +all: + python build_docs.py + +html: + python build_docs.py html From a10f45e8e813f4f378a0e8bc71a6bc999b03d7d1 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Mon, 17 Apr 2017 12:47:53 -0700 Subject: [PATCH 066/225] update text in ACL topic --- doc_source/document-history.rst | 5 + doc_source/examples-s3-access-permissions.rst | 101 +++++++++++++++--- 2 files changed, 94 insertions(+), 12 deletions(-) diff --git a/doc_source/document-history.rst b/doc_source/document-history.rst index 13ffdbb..1ce0eaa 100644 --- a/doc_source/document-history.rst +++ b/doc_source/document-history.rst @@ -16,6 +16,11 @@ This topic describes important changes to the |sdk-java-dg| over the course of i **This documentation was built on:** |today| +Apr 14, 2017 + Made a number of updates to the :doc:`examples-s3` section, including new topics: + :doc:`examples-s3-access-permissions`, :doc:`examples-s3-bucket-policies` and + :doc:`examples-s3-website-configuration`. + Apr 04, 2017 A new topic, :doc:`generating-sdk-metrics` describes how to generate application and SDK performance metrics for the |sdk-java|. diff --git a/doc_source/examples-s3-access-permissions.rst b/doc_source/examples-s3-access-permissions.rst index 233ecd1..c67213f 100644 --- a/doc_source/examples-s3-access-permissions.rst +++ b/doc_source/examples-s3-access-permissions.rst @@ -8,20 +8,28 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -####################################### -Managing |S3| Bucket Access Permissions -####################################### +######################################################## +Managing |S3| Access Permissions for Buckets and Objects +######################################################## .. meta:: :description: How to retrieve or set the access control list for an Amazon S3 bucket. :keywords: AWS for Java SDK code examples, bucket access permissions -You can get or set the access control list for an Amazon S3 bucket. +You can use access control lists (ACLs) for |s3| buckets and objects for fine-grained control over +your |s3| resources. .. include:: includes/examples-note.txt -Get the Current Bucket Access Control List -========================================== + +Get the Access Control List for a Bucket +======================================== + +To get the current ACL for a bucket, call the |s3client|'s :methodname:`getBucketAcl` method, +passing it the *bucket name* to query. This method returns an :aws-java-class:`AccessControlList +` object. To get each access grant in the list, call its +:methodname:`getGrantsAsList` method, which will return a standard Java list of +:aws-java-class:`Grant ` objects. **Imports** @@ -31,23 +39,92 @@ Get the Current Bucket Access Control List **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetAcl.java - :lines: 31-47 - :dedent: 4 + :lines: 35-46 + :dedent: 8 See the :sdk-examples-java-s3:`complete example `. -Set a Bucket Access Control List -================================ + +Set the Access Control List for a Bucket +======================================== + +To add or modify permissions to an ACL for a bucket, call the |s3client|'s +:methodname:`setBucketAcl` method. It takes an :aws-java-class:`AccessControlList +` object that contains a list of grantees and access levels to +set. **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java - :lines: 16-22 + :lines: 15-21 **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java - :lines: 33-51 + :lines: 36-48 + :dedent: 8 + +.. note:: You can provide the grantee's unique identifier directly using the + :aws-java-class:`Grantee ` class, or use the + :aws-java-class:`EmailAddressGrantee ` class to set the + grantee by email, as we've done here. + +See the :sdk-examples-java-s3:`complete example `. + + +Get the Access Control List for an Object +========================================= + +To get the current ACL for an object, call the |s3client|'s :methodname:`getObjectAcl` method, +passing it the *bucket name* and *object name* to query. Like :methodname:`getBucketAcl`, this +method returns an :aws-java-class:`AccessControlList ` object +that you can use to examine each :aws-java-class:`Grant `. + +**Imports** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetAcl.java + :lines: 16-21 + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetAcl.java + :lines: 54-65 + :dedent: 8 + +See the :sdk-examples-java-s3:`complete example `. + + +Set the Access Control List for an Object +========================================= + +To add or modify permissions to an ACL for an object, call the |s3client|'s +:methodname:`setObjectAcl` method. It takes an :aws-java-class:`AccessControlList +` object that contains a list of grantees and access levels to +set. + +**Imports** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java + :lines: 15-21 + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java + :lines: 57-69 :dedent: 4 +.. note:: You can provide the grantee's unique identifier directly using the + :aws-java-class:`Grantee ` class, or use the + :aws-java-class:`EmailAddressGrantee ` class to set the + grantee by email, as we've done here. + See the :sdk-examples-java-s3:`complete example `. + +More Information +================ + +* :s3-api:`GET Bucket acl ` in the |s3-api| +* :s3-api:`PUT Bucket acl ` in the |s3-api| +* :s3-api:`GET Object acl ` in the |s3-api| +* :s3-api:`PUT Object acl ` in the |s3-api| + From 3a5122ec94b9affd652cc56e2e737d50bea3ac65 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Mon, 17 Apr 2017 12:53:00 -0700 Subject: [PATCH 067/225] removed ref to "new" topic that is not new --- doc_source/document-history.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc_source/document-history.rst b/doc_source/document-history.rst index 1ce0eaa..1666e70 100644 --- a/doc_source/document-history.rst +++ b/doc_source/document-history.rst @@ -18,8 +18,7 @@ This topic describes important changes to the |sdk-java-dg| over the course of i Apr 14, 2017 Made a number of updates to the :doc:`examples-s3` section, including new topics: - :doc:`examples-s3-access-permissions`, :doc:`examples-s3-bucket-policies` and - :doc:`examples-s3-website-configuration`. + :doc:`examples-s3-access-permissions` and :doc:`examples-s3-website-configuration`. Apr 04, 2017 A new topic, :doc:`generating-sdk-metrics` describes how to generate application and SDK @@ -33,8 +32,8 @@ Apr 03, 2017 Mar 27, 2017 Added more |EC2| examples to the :doc:`prog-services-ec2` section: :doc:`examples-ec2-instances`, - :doc:`examples-ec2-elastic-ip`, :doc:`examples-ec2-regions-zones`, :doc:`examples-ec2-key-pairs`, and - :doc:`examples-ec2-security-groups`. + :doc:`examples-ec2-elastic-ip`, :doc:`examples-ec2-regions-zones`, :doc:`examples-ec2-key-pairs`, + and :doc:`examples-ec2-security-groups`. Mar 21, 2017 Added a new set of |IAM| examples to the :doc:`examples-iam` section: From 002ef477e8325be6f2c2b1f28a45174a28442d91 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Fri, 19 May 2017 14:59:04 -0700 Subject: [PATCH 068/225] fixing typo per tt - https://tt.amazon.com/E027426928 --- doc_source/credentials.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 18aee76..6ca53c4 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -130,7 +130,7 @@ can set the environment variable in your user or system environment to change it AWS Credentials File Format --------------------------- -When you use the :code:`aws configure` command to create an AWS credentials file, the commmand creates +When you use the :code:`aws configure` command to create an AWS credentials file, the command creates a file with the following format. .. code-block:: ini @@ -244,4 +244,3 @@ More Info * :doc:`signup-create-iam-user` * :doc:`setup-credentials` * :doc:`java-dg-roles` - From 58e102b44aae9eba1670290b6cdf6f01e82723e5 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Fri, 9 Jun 2017 11:08:52 -0700 Subject: [PATCH 069/225] fixing line references for code samples --- doc_source/examples-s3-access-permissions.rst | 5 ++--- doc_source/examples-s3-bucket-policies.rst | 7 +++---- doc_source/examples-s3-buckets.rst | 3 +-- doc_source/examples-s3-objects.rst | 3 +-- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/doc_source/examples-s3-access-permissions.rst b/doc_source/examples-s3-access-permissions.rst index c67213f..dd3c927 100644 --- a/doc_source/examples-s3-access-permissions.rst +++ b/doc_source/examples-s3-access-permissions.rst @@ -61,7 +61,7 @@ set. **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java - :lines: 36-48 + :lines: 35-48 :dedent: 8 .. note:: You can provide the grantee's unique identifier directly using the @@ -110,7 +110,7 @@ set. **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java - :lines: 57-69 + :lines: 56-69 :dedent: 4 .. note:: You can provide the grantee's unique identifier directly using the @@ -127,4 +127,3 @@ More Information * :s3-api:`PUT Bucket acl ` in the |s3-api| * :s3-api:`GET Object acl ` in the |s3-api| * :s3-api:`PUT Object acl ` in the |s3-api| - diff --git a/doc_source/examples-s3-bucket-policies.rst b/doc_source/examples-s3-bucket-policies.rst index a748e36..851e510 100644 --- a/doc_source/examples-s3-bucket-policies.rst +++ b/doc_source/examples-s3-bucket-policies.rst @@ -40,7 +40,7 @@ You can set the bucket policy for a particular S3 bucket by: .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java :dedent: 8 - :lines: 82-88 + :lines: 81-88 .. _use-s3-bucket-policy-class: @@ -66,7 +66,7 @@ your text string. To get the JSON policy text from the :classname:`Policy` class .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java :dedent: 8 - :lines: 71-77 + :lines: 70-77 The :classname:`Policy` class also provides a :methodname:`fromJson` method that can attempt to build a policy using a passed-in JSON string. The method validates it to ensure that the text @@ -75,7 +75,7 @@ if the policy text is invalid. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java :dedent: 8 - :lines: 56-63 + :lines: 55-63 You can use this technique to prevalidate a policy that you read in from a file or other means. @@ -137,4 +137,3 @@ More Info * :s3-dg:`Access Policy Language Overview ` in the |S3-dg| * :s3-dg:`Bucket Policy Examples ` in the |S3-dg| - diff --git a/doc_source/examples-s3-buckets.rst b/doc_source/examples-s3-buckets.rst index 7111545..b9ef86e 100644 --- a/doc_source/examples-s3-buckets.rst +++ b/doc_source/examples-s3-buckets.rst @@ -69,7 +69,7 @@ Use the |s3client| client's :methodname:`listBucket` method. If successful, a li **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListBuckets.java - :lines: 31-36 + :lines: 30-36 :dedent: 8 See the :sdk-examples-java-s3:`complete example `. @@ -153,4 +153,3 @@ bucket itself by using the |s3client| client's :methodname:`deleteBucket` method :dedent: 8 See the :sdk-examples-java-s3:`complete example `. - diff --git a/doc_source/examples-s3-objects.rst b/doc_source/examples-s3-objects.rst index e349e06..f66bb73 100644 --- a/doc_source/examples-s3-objects.rst +++ b/doc_source/examples-s3-objects.rst @@ -72,7 +72,7 @@ name. **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListObjects.java - :lines: 45-50 + :lines: 44-50 :dedent: 8 See the :sdk-examples-java-s3:`complete example `. @@ -178,4 +178,3 @@ from the same bucket by passing their names to the :aws-java-class:`DeleteObject :dedent: 8 See the :sdk-examples-java-s3:`complete example `. - From 4cd6fcd3ce7c99261c52391dc12c65bc70b281df Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Mon, 12 Jun 2017 18:29:49 -0700 Subject: [PATCH 070/225] fixing missing topics list --- doc_source/how-to-ec2.rst | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/doc_source/how-to-ec2.rst b/doc_source/how-to-ec2.rst index a6c5538..003969c 100644 --- a/doc_source/how-to-ec2.rst +++ b/doc_source/how-to-ec2.rst @@ -14,12 +14,6 @@ Tutorial: Starting an EC2 Instance This tutorial demonstrates how to use the AWS SDK for Java to start an EC2 instance. -Prerequisites -============= - -Before you begin, be sure that you have created an AWS account and that you have set up your AWS -credentials. For more information, see :doc:`getting-started`. - .. toctree:: :maxdepth: 1 @@ -27,3 +21,8 @@ credentials. For more information, see :doc:`getting-started`. create-key-pair run-instance +Prerequisites +============= + +Before you begin, be sure that you have created an AWS account and that you have set up your AWS +credentials. For more information, see :doc:`getting-started`. From 8c1015e6235c56fefba611e37c899a79523fcdb9 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Wed, 14 Jun 2017 17:16:50 -0700 Subject: [PATCH 071/225] adding default value for maxErrorRetry to client configuration topic --- doc_source/section-client-configuration.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc_source/section-client-configuration.rst b/doc_source/section-client-configuration.rst index e3084e2..69a9665 100644 --- a/doc_source/section-client-configuration.rst +++ b/doc_source/section-client-configuration.rst @@ -97,9 +97,9 @@ You can set options related to timeouts and handling errors with HTTP connection * :strong:`Maximum Error Retries` - You can set the maximum retry count for retriable errors by using the - :aws-java-ref:`ClientConfiguration.setMaxErrorRetry - ` method. + The default maximum retry count for retriable errors is 3. You can set a different value + by using the :aws-java-ref:`ClientConfiguration.setMaxErrorRetry + ` method. TCP Socket Buffer Size Hints @@ -128,4 +128,3 @@ TCP settings, including the following: * `TCP Tuning and Network Troubleshooting `_ * `Host Tuning `_ - From 99882293012f4f2ac276a702724dc45d00de7c0f Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Tue, 11 Jul 2017 14:42:51 -0700 Subject: [PATCH 072/225] fixing entity reference --- doc_source/basics.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc_source/basics.rst b/doc_source/basics.rst index 028d6b8..4808aed 100644 --- a/doc_source/basics.rst +++ b/doc_source/basics.rst @@ -19,7 +19,7 @@ Using the |sdk-java| This section provides important general information about programming with the |sdk-java| that applies to all services you might use with the SDK. -For service-specific programming information and examples (for |EC2|, |S3|, SWF|, etc.), see +For service-specific programming information and examples (for |EC2|, |S3|, |SWF|, etc.), see :doc:`prog-services`. .. toctree:: @@ -36,4 +36,3 @@ For service-specific programming information and examples (for |EC2|, |S3|, SWF| java-dg-access-control java-dg-jvm-ttl generating-sdk-metrics - From 214dc2a6e97f655e6744130627af0fdffb4cd1c9 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Mon, 17 Jul 2017 10:12:45 -0700 Subject: [PATCH 073/225] adding reference to 2.0 in 1.* dev guide and fixing a broken link --- README.rst | 7 ++++++- doc_source/_includes.txt | 1 - doc_source/basics-async.rst | 3 +-- doc_source/welcome.rst | 9 ++++++++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/README.rst b/README.rst index 56af2e5..5c96b34 100644 --- a/README.rst +++ b/README.rst @@ -19,6 +19,11 @@ The guide content is written in reStructuredText_ and built using Sphinx_. It re which is provided in the AWS documentation team's `shared content`_ and `SDK examples`_ repositories. +2.0 Developer Preview Release +============================== +Check out the new developer preview 2.0 release of the AWS SDK for Java at https://github.com/aws/aws-sdk-java-v2/. +It includes some much awaited features like pluggable HTTP implementation. To get started with 2.0, +see `AWS Java Developer Guide 2.0`_. Reporting issues ================ @@ -100,6 +105,7 @@ repository. .. _`available sphinx builders`: http://www.sphinx-doc.org/en/stable/builders.html .. _`aws java developer guide`: http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/welcome.html +.. _`aws java developer guide 2.0`: http://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/welcome.html .. _`aws sdk for java`: https://aws.amazon.com/sdk-for-java/ .. _`forking the repository`: https://help.github.com/articles/fork-a-repo/ .. _`pull request`: https://help.github.com/articles/using-pull-requests/ @@ -110,4 +116,3 @@ repository. .. _restructuredtext: http://docutils.sourceforge.net/rst.html .. _sphinx: http://www.sphinx-doc.org/en/stable/ .. _substitutions: http://www.sphinx-doc.org/en/stable/rest.html#substitutions - diff --git a/doc_source/_includes.txt b/doc_source/_includes.txt index 0d8bcd6..9f44984 100644 --- a/doc_source/_includes.txt +++ b/doc_source/_includes.txt @@ -31,4 +31,3 @@ .. |s3client| replace:: :aws-java-class:`AmazonS3 ` .. |sqsclient| replace:: :aws-java-class:`AmazonSQS ` .. |xfermgr| replace:: :aws-java-class:`TransferManager ` - diff --git a/doc_source/basics-async.rst b/doc_source/basics-async.rst index cf5915a..3e60ebc 100644 --- a/doc_source/basics-async.rst +++ b/doc_source/basics-async.rst @@ -97,8 +97,7 @@ are named, or to log additional information about thread usage. |S3| Asynchronous Access ------------------------ -The :aws-java-class:`TransferManager ` class in the +The :aws-java-class:`TransferManager ` class in the SDK offers asynchronous support for working with the |S3|. :classname:`TransferManager` manages asynchronous uploads and downloads, provides detailed progress reporting on transfers, and supports callbacks into different events. - diff --git a/doc_source/welcome.rst b/doc_source/welcome.rst index e58f76a..8faa809 100644 --- a/doc_source/welcome.rst +++ b/doc_source/welcome.rst @@ -12,6 +12,9 @@ :description: Welcome to the AWS Java Developer Guide +.. _`aws java developer guide 2.0`: http://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/welcome.html + + ################################ AWS SDK for Java Developer Guide ################################ @@ -21,6 +24,11 @@ applications that work with |S3|, |EC2|, |SDB|, and more. We regularly add suppo to the |sdk-java|. For a list of the supported services and their API versions that are included with each release of the SDK, view the `release notes`_ for the version that you're working with. +2.0 Developer Preview Release +============================== +Check out the new developer preview 2.0 release of the AWS SDK for Java at https://github.com/aws/aws-sdk-java-v2. +It includes some much awaited features like pluggable HTTP implementation. To get started with 2.0, +see `AWS Java Developer Guide 2.0`_. .. _additional-resources: @@ -117,4 +125,3 @@ instructions to build the reference documentation. #. After building is complete, you'll find the generated HTML documentation in the :file:`aws-java-sdk/target/site/apidocs/` directory. - From de757d590d702a102244a23d66bf9f04af579a6e Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Mon, 17 Jul 2017 11:41:01 -0700 Subject: [PATCH 074/225] edits from edit review --- README.rst | 12 ++++++------ doc_source/welcome.rst | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.rst b/README.rst index 5c96b34..7ac8f27 100644 --- a/README.rst +++ b/README.rst @@ -19,11 +19,11 @@ The guide content is written in reStructuredText_ and built using Sphinx_. It re which is provided in the AWS documentation team's `shared content`_ and `SDK examples`_ repositories. -2.0 Developer Preview Release -============================== -Check out the new developer preview 2.0 release of the AWS SDK for Java at https://github.com/aws/aws-sdk-java-v2/. -It includes some much awaited features like pluggable HTTP implementation. To get started with 2.0, -see `AWS Java Developer Guide 2.0`_. +AWS SDK for Java 2.0 Developer Preview +====================================== +Take a look at the new AWS SDK for Java 2.0 developer preview at https://github.com/aws/aws-sdk-java-v2/. +It includes much awaited features, such as a way to plug in a HTTP implementation. To get started, +see the `AWS SDK for Java 2.0 Developer Guide`_. Reporting issues ================ @@ -105,7 +105,7 @@ repository. .. _`available sphinx builders`: http://www.sphinx-doc.org/en/stable/builders.html .. _`aws java developer guide`: http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/welcome.html -.. _`aws java developer guide 2.0`: http://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/welcome.html +.. _`aws sdk for java 2.0 developer guide`: http://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/welcome.html .. _`aws sdk for java`: https://aws.amazon.com/sdk-for-java/ .. _`forking the repository`: https://help.github.com/articles/fork-a-repo/ .. _`pull request`: https://help.github.com/articles/using-pull-requests/ diff --git a/doc_source/welcome.rst b/doc_source/welcome.rst index 8faa809..ae9d55b 100644 --- a/doc_source/welcome.rst +++ b/doc_source/welcome.rst @@ -12,7 +12,7 @@ :description: Welcome to the AWS Java Developer Guide -.. _`aws java developer guide 2.0`: http://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/welcome.html +.. _`aws sdk for java 2.0 developer guide`: http://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/welcome.html ################################ @@ -24,11 +24,11 @@ applications that work with |S3|, |EC2|, |SDB|, and more. We regularly add suppo to the |sdk-java|. For a list of the supported services and their API versions that are included with each release of the SDK, view the `release notes`_ for the version that you're working with. -2.0 Developer Preview Release -============================== -Check out the new developer preview 2.0 release of the AWS SDK for Java at https://github.com/aws/aws-sdk-java-v2. -It includes some much awaited features like pluggable HTTP implementation. To get started with 2.0, -see `AWS Java Developer Guide 2.0`_. +AWS SDK for Java 2.0 Developer Preview +====================================== +Take a look at the new AWS SDK for Java 2.0 developer preview at https://github.com/aws/aws-sdk-java-v2/. +It includes much awaited features, such as a way to plug in a HTTP implementation. To get started, +see the `AWS SDK for Java 2.0 Developer Guide`_. .. _additional-resources: From b8899b2520d144355d746e64097528044be46eb5 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Thu, 7 Sep 2017 11:33:13 -0700 Subject: [PATCH 075/225] adding language metadata to literal includes for syntax highlighting in zonbook builds --- .../examples-cloudwatch-create-alarms.rst | 7 ++++++- .../examples-cloudwatch-get-metrics.rst | 3 ++- ...ples-cloudwatch-publish-custom-metrics.rst | 3 ++- .../examples-cloudwatch-send-events.rst | 8 ++++++-- .../examples-cloudwatch-use-alarm-actions.rst | 5 ++++- doc_source/examples-dynamodb-items.rst | 7 ++++++- doc_source/examples-dynamodb-tables.rst | 12 ++++++++++- doc_source/examples-ec2-elastic-ip.rst | 7 ++++++- doc_source/examples-ec2-instances.rst | 15 +++++++++++++- doc_source/examples-ec2-key-pairs.rst | 7 ++++++- doc_source/examples-ec2-regions-zones.rst | 5 ++++- doc_source/examples-ec2-security-groups.rst | 9 ++++++++- doc_source/examples-iam-access-keys.rst | 11 +++++++++- doc_source/examples-iam-account-aliases.rst | 7 ++++++- doc_source/examples-iam-policies.rst | 12 ++++++++++- .../examples-iam-server-certificates.rst | 9 ++++++++- doc_source/examples-iam-users.rst | 9 ++++++++- doc_source/examples-s3-access-permissions.rst | 8 ++++++++ doc_source/examples-s3-bucket-policies.rst | 9 +++++++++ doc_source/examples-s3-buckets.rst | 10 ++++++++++ doc_source/examples-s3-objects.rst | 12 +++++++++++ doc_source/examples-s3-transfermanager.rst | 20 ++++++++++++++++++- .../examples-s3-website-configuration.rst | 7 ++++++- .../examples-sqs-dead-letter-queues.rst | 5 ++++- doc_source/examples-sqs-long-polling.rst | 7 ++++++- doc_source/examples-sqs-message-queues.rst | 12 ++++++++++- doc_source/examples-sqs-messages.rst | 8 +++++++- .../examples-sqs-visibility-timeout.rst | 5 ++++- doc_source/tutorial-spot-adv-java.rst | 7 ++++++- 29 files changed, 220 insertions(+), 26 deletions(-) diff --git a/doc_source/examples-cloudwatch-create-alarms.rst b/doc_source/examples-cloudwatch-create-alarms.rst index 8918872..3b8dfac 100644 --- a/doc_source/examples-cloudwatch-create-alarms.rst +++ b/doc_source/examples-cloudwatch-create-alarms.rst @@ -28,12 +28,14 @@ filled with the alarm conditions. .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutMetricAlarm.java :lines: 16-23 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutMetricAlarm.java :lines: 43-66 :dedent: 8 + :language: java List Alarms @@ -47,12 +49,14 @@ method with a :aws-java-class:`DescribeAlarmsRequest .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DescribeAlarms.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DescribeAlarms.java :lines: 29-48 :dedent: 8 + :language: java The list of alarms can be obtained by calling :methodname:`getMetricAlarms` on the :aws-java-class:`DescribeAlarmsResult ` that is @@ -78,12 +82,14 @@ or more names of alarms that you want to delete. .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DeleteAlarm.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DeleteAlarm.java :lines: 38-44 :dedent: 8 + :language: java More Information @@ -93,4 +99,3 @@ More Information * :cw-api:`PutMetricAlarm` in the |cw-api| * :cw-api:`DescribeAlarms` in the |cw-api| * :cw-api:`DeleteAlarms` in the |cw-api| - diff --git a/doc_source/examples-cloudwatch-get-metrics.rst b/doc_source/examples-cloudwatch-get-metrics.rst index 1f0b046..e5caac2 100644 --- a/doc_source/examples-cloudwatch-get-metrics.rst +++ b/doc_source/examples-cloudwatch-get-metrics.rst @@ -31,12 +31,14 @@ metric name, or dimensions. .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/ListMetrics.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/ListMetrics.java :lines: 41-63 :dedent: 8 + :language: java The metrics are returned in a :aws-java-class:`ListMetricsResult ` by calling its :methodname:`getMetrics` method. The @@ -49,4 +51,3 @@ More Information ================ * :cw-api:`ListMetrics` in the |cw-api|. - diff --git a/doc_source/examples-cloudwatch-publish-custom-metrics.rst b/doc_source/examples-cloudwatch-publish-custom-metrics.rst index 4c4865b..5544ec1 100644 --- a/doc_source/examples-cloudwatch-publish-custom-metrics.rst +++ b/doc_source/examples-cloudwatch-publish-custom-metrics.rst @@ -38,12 +38,14 @@ information about the data point itself in a :aws-java-class:`MetricDatum .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutMetricData.java :lines: 16-22 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutMetricData.java :lines: 41-58 :dedent: 8 + :language: java More Information ================ @@ -51,4 +53,3 @@ More Information * :cw-ug:`Using Amazon CloudWatch Metrics ` in the |cw-ug|. * :cw-ug:`AWS Namespaces ` in the |cw-ug|. * :cw-api:`PutMetricData` in the |cw-api|. - diff --git a/doc_source/examples-cloudwatch-send-events.rst b/doc_source/examples-cloudwatch-send-events.rst index 7d52aa3..3e2d9c2 100644 --- a/doc_source/examples-cloudwatch-send-events.rst +++ b/doc_source/examples-cloudwatch-send-events.rst @@ -35,12 +35,14 @@ resources associated with the event, and so on. .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutEvents.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutEvents.java :lines: 40-55 :dedent: 8 + :language: java Add Rules @@ -56,12 +58,14 @@ expression ` that describes how often the rule is run. .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutRule.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutRule.java :lines: 41-50 :dedent: 8 + :language: java Add Targets @@ -78,12 +82,14 @@ the rule to update and a list of targets to add to the rule. .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutTargets.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutTargets.java :lines: 45-56 :dedent: 8 + :language: java More Information @@ -96,5 +102,3 @@ More Information * :cwe-api:`PutEvents` in the |cwe-api| * :cwe-api:`PutTargets` in the |cwe-api| * :cwe-api:`PutRule` in the |cwe-api| - - diff --git a/doc_source/examples-cloudwatch-use-alarm-actions.rst b/doc_source/examples-cloudwatch-use-alarm-actions.rst index ad1a73b..7c28cab 100644 --- a/doc_source/examples-cloudwatch-use-alarm-actions.rst +++ b/doc_source/examples-cloudwatch-use-alarm-actions.rst @@ -37,12 +37,14 @@ actions you want to enable. .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/EnableAlarmActions.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/EnableAlarmActions.java :lines: 39-45 :dedent: 8 + :language: java Disable Alarm Actions @@ -57,12 +59,14 @@ actions you want to disable. .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DisableAlarmActions.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DisableAlarmActions.java :lines: 39-45 :dedent: 8 + :language: java More Information ================ @@ -72,4 +76,3 @@ More Information * :cw-api:`PutMetricAlarm` in the |cw-api| * :cw-api:`EnableAlarmActions` in the |cw-api| * :cw-api:`DisableAlarmActions` in the |cw-api| - diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index cdced4d..3789c5d 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -41,12 +41,14 @@ the item. .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/GetItem.java :lines: 15-21 + :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/GetItem.java :lines: 68-102 :dedent: 8 + :language: java See the :sdk-examples-java-dynamodb:`complete sample `. @@ -68,12 +70,14 @@ item identified by the primary key already exists, its fields are *updated* by t .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/PutItem.java :lines: 15-20 + :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/PutItem.java :lines: 76-96 :dedent: 8 + :language: java See the :sdk-examples-java-dynamodb:`complete sample `. @@ -95,12 +99,14 @@ update. .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java :lines: 15-22 + :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java :lines: 82-105 :dedent: 8 + :language: java See the :sdk-examples-java-dynamodb:`complete sample `. @@ -110,4 +116,3 @@ More Info * :ddb-dg:`Guidelines for Working with Items ` in the |ddb-dg| * :ddb-dg:`Working with Items in DynamoDB ` in the |ddb-dg| - diff --git a/doc_source/examples-dynamodb-tables.rst b/doc_source/examples-dynamodb-tables.rst index 354cb40..2446a3a 100644 --- a/doc_source/examples-dynamodb-tables.rst +++ b/doc_source/examples-dynamodb-tables.rst @@ -64,6 +64,7 @@ must also supply initial provisioned throughput values and a table name. .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java :lines: 15-23 + :language: java .. _dynamodb-create-table-simple: @@ -77,6 +78,7 @@ This code creates a table with a simple primary key ("Name"). .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java :lines: 58-73 :dedent: 8 + :language: java See the :sdk-examples-java-dynamodb:`complete sample `. @@ -95,6 +97,7 @@ Add another .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTableCompositeKey.java :lines: 58-67 :dedent: 8 + :language: java See the :sdk-examples-java-dynamodb:`complete sample `. @@ -114,12 +117,14 @@ You can list the tables in a particular region by calling the :aws-java-class:`D .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java :lines: 15-18 + :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java :lines: 32-64 :dedent: 8 + :language: java By default, up to 100 tables are returned per call |mdash| use :methodname:`getLastEvaluatedTableName` on the returned :aws-java-class:`ListTablesResult <>` object @@ -145,12 +150,14 @@ Call the :aws-java-class:`DynamoDB client .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/DescribeTable.java :lines: 15-20 + :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/DescribeTable.java :lines: 50-87 :dedent: 8 + :language: java See the :sdk-examples-java-dynamodb:`complete sample `. @@ -172,12 +179,14 @@ method. .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java :lines: 15-17 + :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java :lines: 57-67 :dedent: 8 + :language: java See the :sdk-examples-java-dynamodb:`complete sample `. @@ -198,12 +207,14 @@ Call the :aws-java-class:`DynamoDB client `' .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/DeleteTable.java :lines: 15-16 + :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/DeleteTable.java :lines: 51-58 :dedent: 8 + :language: java See the :sdk-examples-java-dynamodb:`complete sample `. @@ -212,4 +223,3 @@ More Info * :ddb-dg:`Guidelines for Working with Tables ` in the |ddb-dg| * :ddb-dg:`Working with Tables in DynamoDB ` in the |ddb-dg| - diff --git a/doc_source/examples-ec2-elastic-ip.rst b/doc_source/examples-ec2-elastic-ip.rst index 48ca8a1..74d4693 100644 --- a/doc_source/examples-ec2-elastic-ip.rst +++ b/doc_source/examples-ec2-elastic-ip.rst @@ -39,12 +39,14 @@ method. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/AllocateAddress.java :lines: 16-22 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/AllocateAddress.java :lines: 42-58 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -62,12 +64,14 @@ addresses on your account. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeAddresses.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeAddresses.java :lines: 28-42 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -83,12 +87,14 @@ containing the allocation ID of the Elastic IP address you want to release. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/ReleaseAddress.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/ReleaseAddress.java :lines: 39-44 :dedent: 8 + :language: java After you release an Elastic IP address, it is released to the AWS IP address pool and might be unavailable to you afterward. Be sure to update your DNS records and any servers or devices that @@ -115,4 +121,3 @@ More Information * :ec2-api:`AllocateAddress` in the |ec2-api| * :ec2-api:`DescribeAddresses` in the |ec2-api| * :ec2-api:`ReleaseAddress` in the |ec2-api| - diff --git a/doc_source/examples-ec2-instances.rst b/doc_source/examples-ec2-instances.rst index adfafbb..5179312 100644 --- a/doc_source/examples-ec2-instances.rst +++ b/doc_source/examples-ec2-instances.rst @@ -30,12 +30,14 @@ containing the :ec2-ug:`Amazon Machine Image (AMI) ` to use and an :ec2-ug .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/CreateInstance.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/CreateInstance.java :lines: 44-54 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -51,12 +53,14 @@ the ID of the instance to start. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/StartStopInstance.java :lines: 16-17, 20 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/StartStopInstance.java :lines: 30-31, 49-52 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -72,12 +76,14 @@ the ID of the instance to stop. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/StartStopInstance.java :lines: 16-17, 21 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/StartStopInstance.java :lines: 59-60, 77-80 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -93,12 +99,14 @@ the ID of the instance to reboot. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/RebootInstance.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/RebootInstance.java :lines: 39-44 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -122,12 +130,14 @@ the :classname:`DescribeInstancesResult` class' :methodname:`getReservations' me .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeInstances.java :lines: 16-21 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeInstances.java :lines: 30-58 :dedent: 8 + :language: java Results are paged; you can get further results by passing the value returned from the result object's :methodname:`getNextToken` method to your original request object's @@ -152,12 +162,14 @@ the |ec2client|'s :methodname:`monitorInstances` method. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/MonitorInstance.java :lines: 16-18 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/MonitorInstance.java :lines: 30-31, 50-53 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -173,12 +185,14 @@ pass it to the |ec2client|'s :methodname:`unmonitorInstances` method. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/MonitorInstance.java :lines: 16-17, 19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/MonitorInstance.java :lines: 62-63, 82-85 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -194,4 +208,3 @@ More Information * :ec2-api:`DescribeInstances` in the |ec2-api| * :ec2-api:`MonitorInstances` in the |ec2-api| * :ec2-api:`UnmonitorInstances` in the |ec2-api| - diff --git a/doc_source/examples-ec2-key-pairs.rst b/doc_source/examples-ec2-key-pairs.rst index a1bb4a5..80681d9 100644 --- a/doc_source/examples-ec2-key-pairs.rst +++ b/doc_source/examples-ec2-key-pairs.rst @@ -29,12 +29,14 @@ key's name. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/CreateKeyPair.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/CreateKeyPair.java :lines: 39-44 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -52,12 +54,14 @@ calling its :methodname:`getKeyPairs` method, which returns a list of :aws-java- .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeKeyPairs.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeKeyPairs.java :lines: 28-38 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -73,12 +77,14 @@ name of the key pair to delete. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DeleteKeyPair.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DeleteKeyPair.java :lines: 39-44 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -90,4 +96,3 @@ More Information * :ec2-api:`CreateKeyPair` in the |ec2-api| * :ec2-api:`DescribeKeyPairs` in the |ec2-api| * :ec2-api:`DeleteKeyPair` in the |ec2-api| - diff --git a/doc_source/examples-ec2-regions-zones.rst b/doc_source/examples-ec2-regions-zones.rst index 52eddf4..edcbfac 100644 --- a/doc_source/examples-ec2-regions-zones.rst +++ b/doc_source/examples-ec2-regions-zones.rst @@ -31,12 +31,14 @@ each region. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeRegionsAndZones.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeRegionsAndZones.java :lines: 30-40 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -55,12 +57,14 @@ objects that represent each availability zone. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeRegionsAndZones.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeRegionsAndZones.java :lines: 42-53 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -71,4 +75,3 @@ More Information * :ec2-ug:`Regions and Availability Zones ` in the |ec2-ug| * :ec2-api:`DescribeRegions` in the |ec2-api| * :ec2-api:`DescribeAvailabilityZones` in the |ec2-api| - diff --git a/doc_source/examples-ec2-security-groups.rst b/doc_source/examples-ec2-security-groups.rst index fd659b2..f39735f 100644 --- a/doc_source/examples-ec2-security-groups.rst +++ b/doc_source/examples-ec2-security-groups.rst @@ -29,12 +29,14 @@ contains the key's name. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/CreateSecurityGroup.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/CreateSecurityGroup.java :lines: 45-54 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -56,12 +58,14 @@ to add IP permissions to a security group. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/CreateSecurityGroup.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/CreateSecurityGroup.java :lines: 60-81 :dedent: 8 + :language: java To add an egress rule to the security group, provide similar data in an :aws-java-class:`AuthorizeSecurityGroupEgressRequest @@ -85,12 +89,14 @@ that you can use to access the list of security groups by calling its .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeSecurityGroups.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeSecurityGroups.java :lines: 28-38 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -106,12 +112,14 @@ that contains the ID of the security group to delete. .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DeleteSecurityGroup.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DeleteSecurityGroup.java :lines: 39-44 :dedent: 8 + :language: java See the :sdk-examples-java-ec2:`complete example `. @@ -125,4 +133,3 @@ More Information * :ec2-api:`DescribeSecurityGroups` in the |ec2-api| * :ec2-api:`DeleteSecurityGroup` in the |ec2-api| * :ec2-api:`AuthorizeSecurityGroupIngress` in the |ec2-api| - diff --git a/doc_source/examples-iam-access-keys.rst b/doc_source/examples-iam-access-keys.rst index 594a066..a951830 100644 --- a/doc_source/examples-iam-access-keys.rst +++ b/doc_source/examples-iam-access-keys.rst @@ -34,12 +34,14 @@ using the :methodname:`withUserName` setter method before passing it to the .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/CreateAccessKey.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/CreateAccessKey.java :lines: 39-45 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -58,12 +60,14 @@ list keys for, and pass it to the |iamclient|'s :methodname:`listAccessKeys` met .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/ListAccessKeys.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/ListAccessKeys.java :lines: 39-61 :dedent: 8 + :language: java The results of :methodname:`listAccessKeys` are paged (with a default maximum of 100 records per call). You can call :methodname:`getIsTruncated` on the returned @@ -92,12 +96,14 @@ used time. .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/AccessKeyLastUsed.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/AccessKeyLastUsed.java :lines: 38-47 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -117,12 +123,14 @@ optionally the user name, and the desired :aws-java-class:`Status .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/UpdateAccessKey.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/UpdateAccessKey.java :lines: 41-49 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -143,12 +151,14 @@ username. .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DeleteAccessKey.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DeleteAccessKey.java :lines: 39-46 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -161,4 +171,3 @@ More Information * :iam-api:`GetAccessKeyLastUsed` in the |iam-api| * :iam-api:`UpdateAccessKey` in the |iam-api| * :iam-api:`DeleteAccessKey` in the |iam-api| - diff --git a/doc_source/examples-iam-account-aliases.rst b/doc_source/examples-iam-account-aliases.rst index 65c2b87..855d3f3 100644 --- a/doc_source/examples-iam-account-aliases.rst +++ b/doc_source/examples-iam-account-aliases.rst @@ -33,12 +33,14 @@ To create an account alias, call the |iamclient|'s :methodname:`createAccountAli .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/CreateAccountAlias.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/CreateAccountAlias.java :lines: 38-44 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -58,12 +60,14 @@ method. .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/ListAccountAliases.java :lines: 16-18 + :language: java **code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/ListAccountAliases.java :lines: 26-33 :dedent: 8 + :language: java see the :sdk-examples-java-iam:`complete example `. @@ -80,12 +84,14 @@ deleting an account alias, you must supply its name using a .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DeleteAccountAlias.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DeleteAccountAlias.java :lines: 38-44 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -96,4 +102,3 @@ More Information * :iam-api:`CreateAccountAlias` in the |iam-api| * :iam-api:`ListAccountAliases` in the |iam-api| * :iam-api:`DeleteAccountAlias` in the |iam-api| - diff --git a/doc_source/examples-iam-policies.rst b/doc_source/examples-iam-policies.rst index a6b0eea..d63a5f3 100644 --- a/doc_source/examples-iam-policies.rst +++ b/doc_source/examples-iam-policies.rst @@ -27,12 +27,14 @@ To create a new policy, provide the policy's name and a JSON-formatted policy do .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/CreatePolicy.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/CreatePolicy.java :lines: 62-69 :dedent: 8 + :language: java |iam| policy documents are JSON strings with a :iam-ug:`well-documented syntax `. Here is an example that provides access to make particular requests @@ -41,6 +43,7 @@ to |ddb|. .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/CreatePolicy.java :lines: 26-47 :dedent: 4 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -56,12 +59,14 @@ policy's ARN within a :aws-java-class:`GetPolicyRequest .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/GetPolicy.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/GetPolicy.java :lines: 39-45 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -78,12 +83,14 @@ You can attach a policy to an |IAM| :iam-ug:`role ` by calling the |ia .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/AttachRolePolicy.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/AttachRolePolicy.java :lines: 43-45, 76-81 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -108,12 +115,14 @@ call :methodname:`listAttachedRolePolicies` again to get the next batch of resul .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/AttachRolePolicy.java :lines: 16-17, 20-24 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/AttachRolePolicy.java :lines: 43-68 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -129,12 +138,14 @@ providing it with the role name and policy ARN in a :aws-java-class:`DetachRoleP .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DetachRolePolicy.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DetachRolePolicy.java :lines: 39-46 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -149,4 +160,3 @@ More Information * :iam-api:`AttachRolePolicy` in the |iam-api| * :iam-api:`ListAttachedRolePolicies` in the |iam-api| * :iam-api:`DetachRolePolicy` in the |iam-api| - diff --git a/doc_source/examples-iam-server-certificates.rst b/doc_source/examples-iam-server-certificates.rst index 0a080d0..b832859 100644 --- a/doc_source/examples-iam-server-certificates.rst +++ b/doc_source/examples-iam-server-certificates.rst @@ -37,12 +37,14 @@ You can retrieve a server certificate by calling the |iamclient|'s .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/GetServerCertificate.java :lines: 15-18 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/GetServerCertificate.java :lines: 38-44 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -71,12 +73,14 @@ call :methodname:`listServerCertificates` again to get the next batch of results .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/ListServerCertificates.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/ListServerCertificates.java :lines: 28-51 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -94,12 +98,14 @@ certificate's current name and either a new name or new path to use. .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/UpdateServerCertificate.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/UpdateServerCertificate.java :lines: 40-49 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -116,12 +122,14 @@ name. .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DeleteServerCertificate.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DeleteServerCertificate.java :lines: 38-46 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -135,4 +143,3 @@ More Information * :iam-api:`UpdateServerCertificate` in the |iam-api| * :iam-api:`DeleteServerCertificate` in the |iam-api| * |acm-ug|_ - diff --git a/doc_source/examples-iam-users.rst b/doc_source/examples-iam-users.rst index 9d71d95..86544d8 100644 --- a/doc_source/examples-iam-users.rst +++ b/doc_source/examples-iam-users.rst @@ -27,12 +27,14 @@ method, either directly or using a :aws-java-class:`CreateUserRequest .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/CreateUser.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/CreateUser.java :lines: 39-45 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -55,12 +57,14 @@ it the return value of the response object's :methodname:`getMarker()` method. .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/ListUsers.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/ListUsers.java :lines: 28-46 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -76,12 +80,14 @@ that you can use to change the user's *name* or *path*. .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/UpdateUser.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/UpdateUser.java :lines: 40-47 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -97,12 +103,14 @@ with the user name to delete. .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DeleteUser.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/iam/src/main/java/aws/example/iam/DeleteUser.java :lines: 39-51 :dedent: 8 + :language: java See the :sdk-examples-java-iam:`complete example `. @@ -115,4 +123,3 @@ More Information * :iam-api:`ListUsers` in the |iam-api| * :iam-api:`UpdateUser` in the |iam-api| * :iam-api:`DeleteUser` in the |iam-api| - diff --git a/doc_source/examples-s3-access-permissions.rst b/doc_source/examples-s3-access-permissions.rst index dd3c927..cbc0463 100644 --- a/doc_source/examples-s3-access-permissions.rst +++ b/doc_source/examples-s3-access-permissions.rst @@ -35,12 +35,14 @@ passing it the *bucket name* to query. This method returns an :aws-java-class:`A .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetAcl.java :lines: 16-21 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetAcl.java :lines: 35-46 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -57,12 +59,14 @@ set. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java :lines: 15-21 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java :lines: 35-48 :dedent: 8 + :language: java .. note:: You can provide the grantee's unique identifier directly using the :aws-java-class:`Grantee ` class, or use the @@ -84,12 +88,14 @@ that you can use to examine each :aws-java-class:`Grant `. @@ -106,12 +112,14 @@ set. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java :lines: 15-21 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetAcl.java :lines: 56-69 :dedent: 4 + :language: java .. note:: You can provide the grantee's unique identifier directly using the :aws-java-class:`Grantee ` class, or use the diff --git a/doc_source/examples-s3-bucket-policies.rst b/doc_source/examples-s3-bucket-policies.rst index 851e510..4d79e0e 100644 --- a/doc_source/examples-s3-bucket-policies.rst +++ b/doc_source/examples-s3-bucket-policies.rst @@ -35,12 +35,14 @@ You can set the bucket policy for a particular S3 bucket by: .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java :lines: 16-18 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java :dedent: 8 :lines: 81-88 + :language: java .. _use-s3-bucket-policy-class: @@ -61,12 +63,14 @@ your text string. To get the JSON policy text from the :classname:`Policy` class .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java :lines: 19-24 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java :dedent: 8 :lines: 70-77 + :language: java The :classname:`Policy` class also provides a :methodname:`fromJson` method that can attempt to build a policy using a passed-in JSON string. The method validates it to ensure that the text @@ -76,6 +80,7 @@ if the policy text is invalid. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java :dedent: 8 :lines: 55-63 + :language: java You can use this technique to prevalidate a policy that you read in from a file or other means. @@ -94,12 +99,14 @@ To retrieve the policy for an |S3| bucket, call the |s3client| client's .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetBucketPolicy.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetBucketPolicy.java :dedent: 6 :lines: 49-56 + :language: java If the named bucket doesn't exist, if you don't have access to it, or if it has no bucket policy, an :classname:`AmazonServiceException` is thrown. @@ -119,12 +126,14 @@ providing it with the bucket name. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucketPolicy.java :lines: 16-18 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucketPolicy.java :dedent: 6 :lines: 48-54 + :language: java This method succeeds even if the bucket doesn't already have a policy. If you specify a bucket name that doesn't exist or if you don't have access to the bucket, an :classname:`AmazonServiceException` diff --git a/doc_source/examples-s3-buckets.rst b/doc_source/examples-s3-buckets.rst index b9ef86e..dfdd9c8 100644 --- a/doc_source/examples-s3-buckets.rst +++ b/doc_source/examples-s3-buckets.rst @@ -43,12 +43,14 @@ exception if the bucket already exists. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java :lines: 15-19 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java :lines: 42-54 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -65,12 +67,14 @@ Use the |s3client| client's :methodname:`listBucket` method. If successful, a li .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListBuckets.java :lines: 15-19 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListBuckets.java :lines: 30-36 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -101,12 +105,14 @@ delete each one. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 15-17, 19-20, 23 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 51, 53-70, 94-97 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -125,12 +131,14 @@ objects, and then :methodname:`deleteVersion` to delete each one. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 15-23 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 51, 53-90, 94-97 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -145,11 +153,13 @@ bucket itself by using the |s3client| client's :methodname:`deleteBucket` method .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 15-17 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java :lines: 51, 53, 93-97 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. diff --git a/doc_source/examples-s3-objects.rst b/doc_source/examples-s3-objects.rst index f66bb73..a5c8128 100644 --- a/doc_source/examples-s3-objects.rst +++ b/doc_source/examples-s3-objects.rst @@ -40,12 +40,14 @@ name, and file to upload. *The bucket must exist, or an error will result*. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/PutObject.java :lines: 15-17 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/PutObject.java :lines: 46-52 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -68,12 +70,14 @@ name. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListObjects.java :lines: 16-20 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListObjects.java :lines: 44-50 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -99,12 +103,14 @@ name as the object's key). .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetObject.java :lines: 15-23 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetObject.java :lines: 50-71 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -121,12 +127,14 @@ and the destination bucket and name. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CopyObject.java :lines: 15-17 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CopyObject.java :lines: 46-52 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -147,12 +155,14 @@ object to delete. *The specified bucket and object key must exist, or an error w .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteObject.java :lines: 15-17 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteObject.java :lines: 47-53 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -170,11 +180,13 @@ from the same bucket by passing their names to the :aws-java-class:`DeleteObject .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteObjects.java :lines: 15-18 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteObjects.java :lines: 52-60 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. diff --git a/doc_source/examples-s3-transfermanager.rst b/doc_source/examples-s3-transfermanager.rst index 72b1c26..b0112c9 100644 --- a/doc_source/examples-s3-transfermanager.rst +++ b/doc_source/examples-s3-transfermanager.rst @@ -53,6 +53,7 @@ represents the file to upload. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java :lines: 16-18, 20 + :language: java **Code** @@ -61,6 +62,7 @@ represents the file to upload. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java :lines: 93-97, 99, 101-105 :dedent: 8 + :language: java The :methodname:`upload` method returns *immediately*, providing an :code-java:`Upload` object to use to check the transfer state or to wait for it to complete. @@ -90,6 +92,7 @@ providing the following: .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java :lines: 16-17, 19-21 + :language: java **Code** @@ -98,6 +101,7 @@ providing the following: .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java :lines: 60-69, 71, 73-77 :dedent: 8 + :language: java .. include:: includes/transfermanager-complete-get-status-note.txt @@ -121,6 +125,7 @@ recursively (*true* or *false*). .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java :lines: 16-20 + :language: java **Code** @@ -129,6 +134,7 @@ recursively (*true* or *false*). .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java :lines: 38-42, 44, 46-50 :dedent: 8 + :language: java .. include:: includes/transfermanager-complete-get-status-note.txt @@ -163,6 +169,7 @@ Use the |xfermgr|'s :methodname:`download` method, providing the .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java :lines: 16-18, 20 + :language: java **Code** @@ -171,6 +178,7 @@ Use the |xfermgr|'s :methodname:`download` method, providing the .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java :lines: 57-61, 63, 65-69 :dedent: 8 + :language: java .. include:: includes/transfermanager-complete-get-status-note.txt @@ -192,6 +200,7 @@ into on your local system. If the named directory doesn't exist yet, it will be .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java :lines: 16-17, 19-20 + :language: java **Code** @@ -200,6 +209,7 @@ into on your local system. If the named directory doesn't exist yet, it will be .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java :lines: 36-40, 42, 44-48 :dedent: 8 + :language: java .. include:: includes/transfermanager-complete-get-status-note.txt @@ -217,6 +227,7 @@ To copy an object from one S3 bucket to another, use the |xfermgr| :methodname:` .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrCopy.java :lines: 16-18 + :language: java **Code** @@ -225,6 +236,7 @@ To copy an object from one S3 bucket to another, use the |xfermgr| :methodname:` .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrCopy.java :lines: 35-38, 40, 42-46 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -244,6 +256,7 @@ occurs. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java :lines: 34-45 :dedent: 8 + :language: java .. Already said that the method blocks til complete @@ -306,6 +319,7 @@ prints its final state. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java :lines: 22 + :language: java **Code** @@ -314,6 +328,7 @@ prints its final state. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java :lines: 56-61, 64-67, 70 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -337,6 +352,7 @@ object. You can use the object to get the total bytes of the operation by callin .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java :lines: 16-18, 23, 25 + :language: java **Code** @@ -345,6 +361,7 @@ object. You can use the object to get the total bytes of the operation by callin .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java :lines: 146-149, 152-154, 157-159, 162-168 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -364,6 +381,7 @@ subtransfer. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java :lines: 23-24, 26-27 + :language: java **Code** @@ -372,6 +390,7 @@ subtransfer. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java :lines: 82-83 :dedent: 8 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -382,4 +401,3 @@ More Info ========= * :s3-dg:`Object Keys ` in the |s3-dg| - diff --git a/doc_source/examples-s3-website-configuration.rst b/doc_source/examples-s3-website-configuration.rst index 664cb99..3583237 100644 --- a/doc_source/examples-s3-website-configuration.rst +++ b/doc_source/examples-s3-website-configuration.rst @@ -35,12 +35,14 @@ Setting an index document is *required*; all other parameters are optional. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetWebsiteConfiguration.java :lines: 15-18 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetWebsiteConfiguration.java :dedent: 8 :lines: 31-50 + :language: java .. note:: Setting a website configuration does not modify the access permissions for your bucket. To make your files visible on the web, you will also need to set a *bucket policy* that allows @@ -65,12 +67,14 @@ bucket, then :code-java:`null` will be returned. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetWebsiteConfiguration.java :lines: 15-18 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetWebsiteConfiguration.java :dedent: 8 :lines: 30-46 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -86,12 +90,14 @@ configuration from. .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteWebsiteConfiguration.java :lines: 15-17 + :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteWebsiteConfiguration.java :dedent: 8 :lines: 29-36 + :language: java See the :sdk-examples-java-s3:`complete example `. @@ -102,4 +108,3 @@ More Information * :s3-api:`PUT Bucket website ` in the |s3-api| * :s3-api:`GET Bucket website ` in the |s3-api| * :s3-api:`DELETE Bucket website ` in the |s3-api| - diff --git a/doc_source/examples-sqs-dead-letter-queues.rst b/doc_source/examples-sqs-dead-letter-queues.rst index e577ebb..00b1e81 100644 --- a/doc_source/examples-sqs-dead-letter-queues.rst +++ b/doc_source/examples-sqs-dead-letter-queues.rst @@ -37,12 +37,14 @@ Here we create two identical |SQS| queues, one of which will serve as the dead l .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/DeadLetterQueues.java :lines: 16-18 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/DeadLetterQueues.java :lines: 36-54 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete example `. @@ -66,12 +68,14 @@ attribute with your JSON redrive policy. .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/DeadLetterQueues.java :lines: 19-21 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/DeadLetterQueues.java :lines: 57-76 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete example `. @@ -81,4 +85,3 @@ More Info * :sqs-dg:`Using Amazon SQS Dead Letter Queues ` in the |sqs-dg| * :sqs-api:`SetQueueAttributes` in the |sqs-api| - diff --git a/doc_source/examples-sqs-long-polling.rst b/doc_source/examples-sqs-long-polling.rst index d4c2fd7..4a9d15b 100644 --- a/doc_source/examples-sqs-long-polling.rst +++ b/doc_source/examples-sqs-long-polling.rst @@ -38,12 +38,14 @@ before calling the |sqsclient| class' :methodname:`createQueue` method. .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/LongPolling.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/LongPolling.java :lines: 40-53 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete example `. @@ -62,12 +64,14 @@ queue by setting ``ReceiveMessageWaitTimeSeconds`` on the :aws-java-class:`SetQu .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/LongPolling.java :lines: 20 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/LongPolling.java :lines: 56-59 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete example `. @@ -89,12 +93,14 @@ you supply to the |sqsclient| class' :methodname:`receiveMessage` method. .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/LongPolling.java :lines: 21 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/LongPolling.java :lines: 62-65 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete example `. @@ -105,4 +111,3 @@ More Info * :sqs-api:`CreateQueue` in the |sqs-api| * :sqs-api:`ReceiveMessage` in the |sqs-api| * :sqs-api:`SetQueueAttributes` in the |sqs-api| - diff --git a/doc_source/examples-sqs-message-queues.rst b/doc_source/examples-sqs-message-queues.rst index e43b26f..62c77a7 100644 --- a/doc_source/examples-sqs-message-queues.rst +++ b/doc_source/examples-sqs-message-queues.rst @@ -37,12 +37,14 @@ the queue parameters. .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 16-19 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 31, 34-44 :dedent: 8 + :language: java You can use the simplified form of :methodname:`createQueue`, which needs only a queue name, to create a standard queue. @@ -50,6 +52,7 @@ create a standard queue. .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 54 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete sample `. @@ -66,12 +69,14 @@ method. .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 16-17, 21 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 31, 57-61 :dedent: 8 + :language: java Using the :methodname:`listQueues` overload without any parameters returns *all queues*. You can filter the returned results by passing it a :code-java:`ListQueuesRequest` object. @@ -80,12 +85,14 @@ filter the returned results by passing it a :code-java:`ListQueuesRequest` objec .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 16-17, 20 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 31, 64-69 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete sample `. @@ -101,12 +108,14 @@ Call the |sqsclient| client's :methodname:`getQueueUrl` method. .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 16-17 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 31, 47 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete sample `. @@ -123,12 +132,14 @@ Provide the queue's :ref:`URL ` to the |sqsclient| client's .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 16-17 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/UsingQueues.java :lines: 31, 50 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete sample `. @@ -140,4 +151,3 @@ More Info * :sqs-api:`GetQueueUrl` in the |sqs-api| * :sqs-api:`ListQueues` in the |sqs-api| * :sqs-api:`DeleteQueues` in the |sqs-api| - diff --git a/doc_source/examples-sqs-messages.rst b/doc_source/examples-sqs-messages.rst index 82d6aaf..5bab262 100644 --- a/doc_source/examples-sqs-messages.rst +++ b/doc_source/examples-sqs-messages.rst @@ -36,12 +36,14 @@ Add a single message to an |SQS| queue by calling the |sqsclient| client's .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java :lines: 16-17, 23 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java :lines: 45-49 :dedent: 8 + :language: java .. _sqs-messages-send-multiple: @@ -60,12 +62,14 @@ value per message. .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java :lines: 21-22 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java :lines: 53-61 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete sample `. @@ -83,12 +87,14 @@ Retrieve any messages that are currently in the queue by calling the |sqsclient| .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java :lines: 17-18, 21 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java :lines: 64 :dedent: 8 + :language: java .. _sqs-messages-delete: @@ -104,6 +110,7 @@ the message's receipt handle and queue URL to the |sqsclient| client's .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java :lines: 67-69 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete sample `. @@ -116,4 +123,3 @@ More Info * :sqs-api:`SendMessageBatch` in the |sqs-api| * :sqs-api:`ReceiveMessage` in the |sqs-api| * :sqs-api:`DeleteMessage` in the |sqs-api| - diff --git a/doc_source/examples-sqs-visibility-timeout.rst b/doc_source/examples-sqs-visibility-timeout.rst index 1577160..777b473 100644 --- a/doc_source/examples-sqs-visibility-timeout.rst +++ b/doc_source/examples-sqs-visibility-timeout.rst @@ -39,12 +39,14 @@ handle in a :aws-java-class:`ChangeMessageVisibilityRequest .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/VisibilityTimeout.java :lines: 16-17 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/VisibilityTimeout.java :lines: 31-39 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete example `. @@ -62,12 +64,14 @@ string and a receipt handle. Then, pass the list to the |sqs| client class' .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/VisibilityTimeout.java :lines: 16-18, 21-22 + :language: java **Code** .. literalinclude:: example_code/sqs/src/main/java/aws/example/sqs/VisibilityTimeout.java :lines: 46-67 :dedent: 8 + :language: java See the :sdk-examples-java-sqs:`complete example `. @@ -81,4 +85,3 @@ More Info * :sqs-api:`ReceiveMessage` in the |sqs-api| * :sqs-api:`ChangeMessageVisibility` in the |sqs-api| * :sqs-api:`ChangeMessageVisibilityBatch` in the |sqs-api| - diff --git a/doc_source/tutorial-spot-adv-java.rst b/doc_source/tutorial-spot-adv-java.rst index 1bb7c19..7453e2c 100644 --- a/doc_source/tutorial-spot-adv-java.rst +++ b/doc_source/tutorial-spot-adv-java.rst @@ -567,6 +567,7 @@ you can use to get the spot request IDs for tagging: .. literalinclude:: snippets/ec2/tag-spot-requests.java :lines: 18-30 + :language: java Once you have the IDs, you can tag the requests by adding their IDs to a :aws-java-class:`CreateTagsRequest ` and calling the EC2 client's @@ -574,6 +575,7 @@ Once you have the IDs, you can tag the requests by adding their IDs to a .. literalinclude:: snippets/ec2/tag-spot-requests.java :lines: 32-51 + :language: java Tagging instances ----------------- @@ -595,11 +597,13 @@ Once the spot request is no longer open, you can retrieve its instance ID from t .. literalinclude:: snippets/ec2/tag-spot-instances.java :lines: 18-59 + :language: java Now you can tag the instances that are returned: .. literalinclude:: snippets/ec2/tag-spot-instances.java :lines: 61-81 + :language: java Canceling spot requests and terminating instances @@ -614,6 +618,7 @@ with a :aws-java-class:`CancelSpotInstanceRequestsRequest .. literalinclude:: snippets/ec2/cancel-terminate-spot-request.java :lines: 18-27 + :language: java Terminating spot instances -------------------------- @@ -623,6 +628,7 @@ You can terminate any spot instances that are running by passing their IDs to th .. literalinclude:: snippets/ec2/cancel-terminate-spot-request.java :lines: 29-38 + :language: java .. _tutor-spot-adv-bring-together: @@ -640,4 +646,3 @@ The complete source code for this example can be viewed or downloaded at :github Congratulations! You've completed the Advanced Request Features tutorial for developing Spot Instance software with the |sdk-java|. - From d8e763b6cccca544f3ba19df5f1dbd32dc4327a4 Mon Sep 17 00:00:00 2001 From: Henri Yandell Date: Wed, 4 Oct 2017 11:34:52 -0700 Subject: [PATCH 076/225] Relicensing to CC-BY-SA 4.0 --- LICENSE | 378 +++++++++++++++++++------------------------------------- 1 file changed, 124 insertions(+), 254 deletions(-) diff --git a/LICENSE b/LICENSE index 3dbca7b..7785b90 100644 --- a/LICENSE +++ b/LICENSE @@ -1,282 +1,152 @@ -###################################################################################### -Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License -###################################################################################### +Creative Commons Attribution-ShareAlike 4.0 International Public License -By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and -conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public -License ("Public License"). To the extent this Public License may be interpreted as a contract, You -are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, -and the Licensor grants You such rights in consideration of benefits the Licensor receives from -making the Licensed Material available under these terms and conditions. +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. Section 1 – Definitions. -======================== - -a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or - based upon the Licensed Material and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright - and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, Adapted Material is always produced - where the Licensed Material is synched in timed relation with a moving image. - -b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your - contributions to Adapted Material in accordance with the terms and conditions of this Public - License. - -c. BY-NC-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, - approved by Creative Commons as essentially the equivalent of this Public License. - -d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright - including, without limitation, performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or categorized. For purposes of this Public - License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. - -e. Effective Technological Measures means those measures that, in the absence of proper authority, - may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international agreements. - -f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation - to Copyright and Similar Rights that applies to Your use of the Licensed Material. - -g. License Elements means the license attributes listed in the name of a Creative Commons Public - License. The License Elements of this Public License are Attribution, NonCommercial, and - ShareAlike. - -h. Licensed Material means the artistic or literary work, database, or other material to which the - Licensor applied this Public License. - -i. Licensed Rights means the rights granted to You subject to the terms and conditions of this - Public License, which are limited to all Copyright and Similar Rights that apply to Your use of - the Licensed Material and that the Licensor has authority to license. - -j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. - -k. NonCommercial means not primarily intended for or directed towards commercial advantage or - monetary compensation. For purposes of this Public License, the exchange of the Licensed Material - for other material subject to Copyright and Similar Rights by digital file-sharing or similar - means is NonCommercial provided there is no payment of monetary compensation in connection with - the exchange. -l. Share means to provide material to the public by any means or process that requires permission - under the Licensed Rights, such as reproduction, public display, public performance, - distribution, dissemination, communication, or importation, and to make material available to the - public including in ways that members of the public may access the material from a place and at a - time individually chosen by them. -m. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of - the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the - world. - -n. You means the individual or entity exercising the Licensed Rights under this Public License. Your - has a corresponding meaning. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. Section 2 – Scope. -================== - -a. License grant. - - 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a - worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the - Licensed Rights in the Licensed Material to: - - A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes - only; and - - B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. - - 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply - to Your use, this Public License does not apply, and You do not need to comply with its terms - and conditions. - - 3. Term. The term of this Public License is specified in Section 6(a). - - 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise - the Licensed Rights in all media and formats whether now known or hereafter created, and to - make technical modifications necessary to do so. The Licensor waives and/or agrees not to - assert any right or authority to forbid You from making technical modifications necessary to - exercise the Licensed Rights, including technical modifications necessary to circumvent - Effective Technological Measures. For purposes of this Public License, simply making - modifications authorized by this Section 2(a)(4) never produces Adapted Material. - - 5. Downstream recipients. - - A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material - automatically receives an offer from the Licensor to exercise the Licensed Rights under the - terms and conditions of this Public License. - - B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material - from You automatically receives an offer from the Licensor to exercise the Licensed Rights - in the Adapted Material under the conditions of the Adapter’s License You apply. - - C. No downstream restrictions. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological Measures to, the Licensed Material - if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed - Material. - - D. No endorsement. Nothing in this Public License constitutes or may be construed as - permission to assert or imply that You are, or that Your use of the Licensed Material is, - connected with, or sponsored, endorsed, or granted official status by, the Licensor or - others designated to receive attribution as provided in Section 3(a)(1)(A)(i). - -b. Other rights. - - 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor - are publicity, privacy, and/or other similar personality rights; however, to the extent - possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor - to the limited extent necessary to allow You to exercise the Licensed Rights, but not - otherwise. - - 2. Patent and trademark rights are not licensed under this Public License. - - 3. To the extent possible, the Licensor waives any right to collect royalties from You for the - exercise of the Licensed Rights, whether directly or through a collecting society under any - voluntary or waivable statutory or compulsory licensing scheme. In all other cases the - Licensor expressly reserves any right to collect such royalties, including when the Licensed - Material is used other than for NonCommercial purposes. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. + + C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. Section 3 – License Conditions. -=============================== Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified form), You must: -a. Attribution. - - 1. If You Share the Licensed Material (including in modified form), You must: + A. retain the following if it is supplied by the Licensor with the Licensed Material: - A. retain the following if it is supplied by the Licensor with the Licensed Material: + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); - i. identification of the creator(s) of the Licensed Material and any others designated to - receive attribution, in any reasonable manner requested by the Licensor (including by - pseudonym if designated); + ii. a copyright notice; - ii. a copyright notice; + iii. a notice that refers to this Public License; - iii. a notice that refers to this Public License; + iv. a notice that refers to the disclaimer of warranties; - iv. a notice that refers to the disclaimer of warranties; + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; - v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and - B. indicate if You modified the Licensed Material and retain an indication of any previous - modifications; and - - C. indicate the Licensed Material is licensed under this Public License, and include the text - of, or the URI or hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the - medium, means, and context in which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that - includes the required information. - - 3. If requested by the Licensor, You must remove any of the information required by Section - 3(a)(1)(A) to the extent reasonably practicable. - -b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the - following conditions also apply. - - 1. The Adapter’s License You apply must be a Creative Commons license with the same License - Elements, this version or later, or a BY-NC-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You - may satisfy this condition in any reasonable manner based on the medium, means, and context in - which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms or conditions on, or apply any - Effective Technological Measures to, Adapted Material that restrict exercise of the rights - granted under the Adapter's License You apply. + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. + + 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. Section 4 – Sui Generis Database Rights. -======================================== -Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed -Material: - -a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, - and Share all or a substantial portion of the contents of the database for NonCommercial purposes - only; - -b. if You include all or a substantial portion of the database contents in a database in which You - have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights - (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); - and - -c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of - the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under -this Public License where the Licensed Rights include other Copyright and Similar Rights. +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; + + b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. Section 5 – Disclaimer of Warranties and Limitation of Liability. -================================================================= - -a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor - offers the Licensed Material as-is and as-available, and makes no representations or warranties - of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This - includes, without limitation, warranties of title, merchantability, fitness for a particular - purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or - absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not - allowed in full or in part, this disclaimer may not apply to You. - -b. To the extent possible, in no event will the Licensor be liable to You on any legal theory - (including, without limitation, negligence) or otherwise for any direct, special, indirect, - incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages - arising out of this Public License or use of the Licensed Material, even if the Licensor has been - advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of - liability is not allowed in full or in part, this limitation may not apply to You. - -c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a - manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver - of all liability. + + a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. + + b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. Section 6 – Term and Termination. -================================= - -a. This Public License applies for the term of the Copyright and Similar Rights licensed here. - However, if You fail to comply with this Public License, then Your rights under this Public - License terminate automatically. - -b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided it is cured within 30 days of - Your discovery of the violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to - seek remedies for Your violations of this Public License. - -c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate - terms or conditions or stop distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - -d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + + d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. Section 7 – Other Terms and Conditions. -======================================= - -a. The Licensor shall not be bound by any additional or different terms or conditions communicated - by You unless expressly agreed. - -b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein - are separate from and independent of the terms and conditions of this Public License. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. Section 8 – Interpretation. -=========================== - -a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, - reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could - lawfully be made without permission under this Public License. - -b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall - be automatically reformed to the minimum extent necessary to make it enforceable. If the - provision cannot be reformed, it shall be severed from this Public License without affecting the - enforceability of the remaining terms and conditions. - -c. No term or condition of this Public License will be waived and no failure to comply consented to - unless expressly agreed to by the Licensor. - -d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver - of, any privileges and immunities that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. From c8c364c0909f75f3eaa1686838ded241ed9298fb Mon Sep 17 00:00:00 2001 From: Henri Yandell Date: Wed, 4 Oct 2017 11:35:13 -0700 Subject: [PATCH 077/225] Create LICENSE-SAMPLECODE --- LICENSE-SAMPLECODE | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 LICENSE-SAMPLECODE diff --git a/LICENSE-SAMPLECODE b/LICENSE-SAMPLECODE new file mode 100644 index 0000000..7e0bd89 --- /dev/null +++ b/LICENSE-SAMPLECODE @@ -0,0 +1,14 @@ +Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 32f0573c69c7443a8e63b39eec66f9b06e173ec0 Mon Sep 17 00:00:00 2001 From: Henri Yandell Date: Wed, 4 Oct 2017 11:35:29 -0700 Subject: [PATCH 078/225] Create LICENSE-SUMMARY --- LICENSE-SUMMARY | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 LICENSE-SUMMARY diff --git a/LICENSE-SUMMARY b/LICENSE-SUMMARY new file mode 100644 index 0000000..fa2e570 --- /dev/null +++ b/LICENSE-SUMMARY @@ -0,0 +1,5 @@ +Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +The documentation is made available under the Creative Commons Attribution-ShareAlike 4.0 International License. See the LICENSE file. + +The sample code within this documentation is made available under a modified MIT license. See the LICENSE-SAMPLECODE file. From d44f65c5174e1d570fd3875a15e77141e5621a68 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Fri, 3 Nov 2017 00:01:12 -0700 Subject: [PATCH 079/225] adding s3 encryption examples --- doc_source/document-history.rst | 5 +- doc_source/examples-crypto-kms.rst | 142 +++++++++++++++++++++ doc_source/examples-crypto-masterkey.rst | 153 +++++++++++++++++++++++ doc_source/examples-crypto.rst | 35 ++++++ doc_source/examples-s3.rst | 1 + 5 files changed, 335 insertions(+), 1 deletion(-) create mode 100644 doc_source/examples-crypto-kms.rst create mode 100644 doc_source/examples-crypto-masterkey.rst create mode 100644 doc_source/examples-crypto.rst diff --git a/doc_source/document-history.rst b/doc_source/document-history.rst index 1666e70..02377a6 100644 --- a/doc_source/document-history.rst +++ b/doc_source/document-history.rst @@ -16,6 +16,10 @@ This topic describes important changes to the |sdk-java-dg| over the course of i **This documentation was built on:** |today| +Nov 2, 2017 + Added cryptography examples for |S3| encryption client, including new topics: + :doc:`examples-crypto` and :doc:`examples-crypto-kms` and :doc:`examples-crypto-masterkey`. + Apr 14, 2017 Made a number of updates to the :doc:`examples-s3` section, including new topics: :doc:`examples-s3-access-permissions` and :doc:`examples-s3-website-configuration`. @@ -139,4 +143,3 @@ May 9, 2014 Sep 9, 2013 This topic, *Document History*, tracks changes to the |sdk-java-dg|. It is intended as a companion to the release notes history. - diff --git a/doc_source/examples-crypto-kms.rst b/doc_source/examples-crypto-kms.rst new file mode 100644 index 0000000..e2a4482 --- /dev/null +++ b/doc_source/examples-crypto-kms.rst @@ -0,0 +1,142 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +################################################### +|S3| Client-Side Encryption with |KMS| Managed Keys +################################################### + +.. meta:: + :description: How to use the cryptography configuration settings for the AWS SDK for Java + :keywords: cryptography, encryption, example code + +The following examples use the +:aws-java-class:`AmazonS3EncryptionClientBuilder ` +to create an |S3| client with client-side encryption enabled. Once configured, +any object you upload to |S3| using this client +will be encrypted. Any objects you get from |S3| using this client will automatically +be decrypted. + +.. note:: + The examples here demonstrate using the |S3| client-side + encryption with |KMS| managed keys. To learn how to use encryption with your own keys, + see the :doc:`examples-crypto-masterkey` topic. + +You can choose from three encryption modes when enabling client-side |S3| encryption. +The sections below show how to enable each type. To learn which algorithms each mode uses, +see :aws-java-class:`CryptoMode ` definition. + + +Required Imports +================ + +Import the following libraries for the examples on this page. + +**Imports** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 16-31 + :language: java + +.. _encryption-only: + +Encryption only Mode +==================== + +This is the default mode, if no :classname:`CryptoMode` is not specified. To use |KMS| +managed key for encryption, pass the |KMS| key ID or alias to the +:aws-java-class:`KMSEncryptionMaterialsProvider` constructor. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 237-243 + :dedent: 8 + :language: java + +You can retrieve the object with the same client. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 249 + :dedent: 8 + :language: java + +See the :sdk-examples-java-s3:`complete example `. + +.. _authenticated-encryption: + +Authenticated Encryption Mode +============================= + +When :classname:`AuthenticatedEncryption` mode is used, an improved key wrapping algorithm is applied +applied during encryption. When decrypting in this mode, the algorithm is able to verify the integrity +of the decrypted object and throw an exception if the check fails. +To get more details about how authenticated encryption works, see the +:blog:`Amazon S3 Client-Side Authenticated Encryption ` +blog post. + +To use client-side authenticated encryption, two steps are required: + + #. Include the latest `Bouncy Castle jar `_ + in the classpath. + #. Explicitly specify the cryptographic mode of authenticated encryption when + instantiating an S3 encryption client. + +Use the :aws-java-class:`CryptoMode ` to specify +:classname:`AuthenticatedEncryption`. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 257-263 + :dedent: 8 + :language: java + +The :classname:`AuthenticatedEncryption` mode can retrieve unencrypted objects as well as +objects encrypted with :classname:`EncryptionOnly` mode. This example shows the +|S3| encryption client retrieving an unencrypted object. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 257-270 + :dedent: 8 + :language: java + +See the :sdk-examples-java-s3:`complete example `. + +.. _strict-authenticated-encryption: + +Strict Authenticated Encryption +=============================== + +Use the :aws-java-class:`CryptoMode ` to specify +:classname:`StrictAuthenticatedEncryption`. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 278-284 + :dedent: 8 + :language: java + +In :classname:`StrictAuthenticatedEncryption` mode, the |S3| client will throw an +exception when retrieving an object that was not encrypted using an +authenticated mode. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 278-295 + :dedent: 8 + :language: java + +See the :sdk-examples-java-s3:`complete example `. diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst new file mode 100644 index 0000000..ab73534 --- /dev/null +++ b/doc_source/examples-crypto-masterkey.rst @@ -0,0 +1,153 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +########################################################## +|S3| Client-Side Encryption with Client Master Keys +########################################################## + +.. meta:: + :description: How to use the cryptography configuration settings for the AWS SDK for Java + :keywords: cryptography, encryption, example code + +The following examples use the +:aws-java-class:`AmazonS3EncryptionClientBuilder ` +to create an |S3| client with client-side encryption enabled. Once configured, +any object you upload to |S3| using this client +will be encrypted. Any objects you get from |S3| using this client will automatically +be decrypted. + +.. note:: + The examples here demonstrate using the |S3| client-side + encryption with customer managed client master keys. To learn how to use encryption + with |KMS| managed keys, see the :doc:`examples-crypto-kms` topic. + +You can choose from three encryption modes when enabling client-side |S3| encryption. +The sections below show how to enable each type. To learn which algorithms each mode uses, +see :aws-java-class:`CryptoMode ` definition. + +Required Imports +================ + +Import the following libraries for the examples on this page. + +**Imports** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 16-24,26-31 + :language: java + +.. _encryption-only: + +Encryption only Mode +==================== + +This is the default mode, if no :classname:`CryptoMode` is not specified. To use a +symmetric key for encryption, pass the symmetric key to the +:aws-java-class:`EncryptionMaterials` constructor. The example below uses +the Java class :class:`KeyGenerator` to generate a symmetric private key. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 198-204 + :dedent: 8 + :language: java + +To use an asymmetric key, simply pass the key pair to the same class +:aws-java-class:`EncryptionMaterials`. The example below uses the +:class:`KeyPairGenerator` class to generate a key pair. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 217-223 + :dedent: 8 + :language: java + +You can retrieve the object with the same client. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 229 + :dedent: 8 + :language: java + +See the :sdk-examples-java-s3:`complete example `. + +.. _authenticated-encryption: + +Authenticated Encryption Mode +============================= + +When :classname:`AuthenticatedEncryption` mode is used, an improved key wrapping algorithm is applied +applied during encryption. When decrypting in this mode, the algorithm is able to verify the integrity +of the decrypted object and throw an exception if the check fails. +To get more details about how authenticated encryption works, see the +:blog:`Amazon S3 Client-Side Authenticated Encryption ` +blog post. + +To use client-side authenticated encryption, two steps are required: + + #. Include the latest `Bouncy Castle jar `_ + in the classpath. + #. Explicitly specify the cryptographic mode of authenticated encryption when + instantiating an S3 encryption client. + +Use the :aws-java-class:`CryptoMode ` to specify +:classname:`AuthenticatedEncryption`. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 67-72 + :dedent: 8 + :language: java + +The :classname:`AuthenticatedEncryption` mode can retrieve unencrypted objects as well as +objects encrypted with :classname:`EncryptionOnly` mode. This example shows the +|S3| encryption client retrieving an unencrypted object. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 66-79 + :dedent: 8 + :language: java + +See the :sdk-examples-java-s3:`complete example `. + +.. _strict-authenticated-encryption: + +Strict Authenticated Encryption +=============================== + +Use the :aws-java-class:`CryptoMode ` to specify +:classname:`StrictAuthenticatedEncryption`. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 132-137 + :dedent: 8 + :language: java + +In :classname:`StrictAuthenticatedEncryption`, the |S3| client will throw an +exception when retrieving an object that was not encrypted using an +authenticated mode. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 131-149 + :dedent: 8 + :language: java + +See the :sdk-examples-java-s3:`complete example `. diff --git a/doc_source/examples-crypto.rst b/doc_source/examples-crypto.rst new file mode 100644 index 0000000..0f63c5a --- /dev/null +++ b/doc_source/examples-crypto.rst @@ -0,0 +1,35 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +################################# +Using |S3| Client-Side Encryption +################################# + +.. meta:: + :description: How to use the cryptography configuration settings for the AWS SDK for Java + :keywords: cryptography, encryption, example code + +Encrypting data using the |S3| encryption client is one way you can provide an +additional layer of protection for sensitive information you store in |S3|. +If you are new to cryptography, +see the :KMS-dg:`Cryptography Basics ` in the |KMS-dg| for a basic overview of +cryptography terms and algorithms. + +.. include:: includes/examples-note.txt + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + examples-crypto-masterkey + examples-crypto-kms + +For information about cryptography support across all AWS SDKs, see +:AWS-gr:`AWS SDK Support for Amazon S3 Client-Side Encryption ` in the |AWS-gr|. diff --git a/doc_source/examples-s3.rst b/doc_source/examples-s3.rst index e850b31..bfc5932 100644 --- a/doc_source/examples-s3.rst +++ b/doc_source/examples-s3.rst @@ -31,3 +31,4 @@ This section provides examples of programming |S3|_ using the |sdk-java|_. examples-s3-bucket-policies examples-s3-transfermanager examples-s3-website-configuration + examples-crypto From ac6a148ff6f94a685e2a725d6c4d2b1708e67bbe Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Fri, 3 Nov 2017 11:05:23 -0700 Subject: [PATCH 080/225] additional fixes for the crypto example topics --- doc_source/examples-crypto-kms.rst | 22 +++++++++-------- doc_source/examples-crypto-masterkey.rst | 31 ++++++++++++------------ doc_source/examples-crypto.rst | 2 ++ 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/doc_source/examples-crypto-kms.rst b/doc_source/examples-crypto-kms.rst index e2a4482..5d3f63d 100644 --- a/doc_source/examples-crypto-kms.rst +++ b/doc_source/examples-crypto-kms.rst @@ -76,22 +76,20 @@ See the :sdk-examples-java-s3:`complete example `. Authenticated Encryption Mode ============================= -When :classname:`AuthenticatedEncryption` mode is used, an improved key wrapping algorithm is applied +When :classname:`AuthenticatedEncryption` mode is used, an improved key wrapping algorithm is applied during encryption. When decrypting in this mode, the algorithm is able to verify the integrity of the decrypted object and throw an exception if the check fails. To get more details about how authenticated encryption works, see the :blog:`Amazon S3 Client-Side Authenticated Encryption ` blog post. -To use client-side authenticated encryption, two steps are required: +.. note:: To use client-side authenticated encryption, you must include the latest + `Bouncy Castle jar `_ + in the classpath of your application. - #. Include the latest `Bouncy Castle jar `_ - in the classpath. - #. Explicitly specify the cryptographic mode of authenticated encryption when - instantiating an S3 encryption client. +To enable this mode, specify the :classname:`AuthenticatedEncryption` value in +:method:`withCryptoConfiguration` method. -Use the :aws-java-class:`CryptoMode ` to specify -:classname:`AuthenticatedEncryption`. **Code** @@ -118,8 +116,12 @@ See the :sdk-examples-java-s3:`complete example `. Strict Authenticated Encryption =============================== -Use the :aws-java-class:`CryptoMode ` to specify -:classname:`StrictAuthenticatedEncryption`. +To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in +:method:`withCryptoConfiguration` method. + +.. note:: To use client-side authenticated encryption, you must include the latest + `Bouncy Castle jar `_ + in the classpath of your application. **Code** diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index ab73534..1a7e42a 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -48,9 +48,9 @@ Import the following libraries for the examples on this page. Encryption only Mode ==================== -This is the default mode, if no :classname:`CryptoMode` is not specified. To use a -symmetric key for encryption, pass the symmetric key to the -:aws-java-class:`EncryptionMaterials` constructor. The example below uses +This is the default mode, if no :classname:`CryptoMode` is not specified. To enable +encryption, you must pass a key to the :aws-java-class:`EncryptionMaterials` +constructor. The example below uses the Java class :class:`KeyGenerator` to generate a symmetric private key. **Code** @@ -60,7 +60,7 @@ the Java class :class:`KeyGenerator` to generate a symmetric private key. :dedent: 8 :language: java -To use an asymmetric key, simply pass the key pair to the same class +To use an asymmetric key, or a key pair, simply pass the key pair to the same class :aws-java-class:`EncryptionMaterials`. The example below uses the :class:`KeyPairGenerator` class to generate a key pair. @@ -87,22 +87,19 @@ See the :sdk-examples-java-s3:`complete example `. Authenticated Encryption Mode ============================= -When :classname:`AuthenticatedEncryption` mode is used, an improved key wrapping algorithm is applied +When :classname:`AuthenticatedEncryption` mode is used, an improved key wrapping algorithm is applied during encryption. When decrypting in this mode, the algorithm is able to verify the integrity of the decrypted object and throw an exception if the check fails. To get more details about how authenticated encryption works, see the :blog:`Amazon S3 Client-Side Authenticated Encryption ` blog post. -To use client-side authenticated encryption, two steps are required: +.. note:: To use client-side authenticated encryption, you must include the latest + `Bouncy Castle jar `_ + in the classpath of your application. - #. Include the latest `Bouncy Castle jar `_ - in the classpath. - #. Explicitly specify the cryptographic mode of authenticated encryption when - instantiating an S3 encryption client. - -Use the :aws-java-class:`CryptoMode ` to specify -:classname:`AuthenticatedEncryption`. +To enable this mode, specify the :classname:`AuthenticatedEncryption` value in +:method:`withCryptoConfiguration` method. **Code** @@ -129,9 +126,13 @@ See the :sdk-examples-java-s3:`complete example `. Strict Authenticated Encryption =============================== -Use the :aws-java-class:`CryptoMode ` to specify -:classname:`StrictAuthenticatedEncryption`. +To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in +:method:`withCryptoConfiguration` method. +.. note:: To use client-side authenticated encryption, you must include the latest + `Bouncy Castle jar `_ + in the classpath of your application. + **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java diff --git a/doc_source/examples-crypto.rst b/doc_source/examples-crypto.rst index 0f63c5a..27d8e7f 100644 --- a/doc_source/examples-crypto.rst +++ b/doc_source/examples-crypto.rst @@ -18,6 +18,8 @@ Using |S3| Client-Side Encryption Encrypting data using the |S3| encryption client is one way you can provide an additional layer of protection for sensitive information you store in |S3|. +The examples in the linked topics demonstrate how to create and configure the |S3| +encryption client for your application. If you are new to cryptography, see the :KMS-dg:`Cryptography Basics ` in the |KMS-dg| for a basic overview of cryptography terms and algorithms. From 4a29eb2dc272f4ef605afa14ee2fdb422f859f30 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Fri, 3 Nov 2017 12:04:05 -0700 Subject: [PATCH 081/225] updating s3 crypto topics from dev feedback --- doc_source/examples-crypto-kms.rst | 20 +++++++++++++++----- doc_source/examples-crypto-masterkey.rst | 22 ++++++++++++++++------ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/doc_source/examples-crypto-kms.rst b/doc_source/examples-crypto-kms.rst index 5d3f63d..eacdb8f 100644 --- a/doc_source/examples-crypto-kms.rst +++ b/doc_source/examples-crypto-kms.rst @@ -36,7 +36,7 @@ see :aws-java-class:`CryptoMode ` definition. Required Imports ================ -Import the following libraries for the examples on this page. +Import the following classes for the examples on this page. **Imports** @@ -60,7 +60,17 @@ managed key for encryption, pass the |KMS| key ID or alias to the :dedent: 8 :language: java -You can retrieve the object with the same client. +Call the :methodname:`putObject` method on the |S3| encryption client to upload objects. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 247 + :dedent: 8 + :language: java + +You can retrieve the object using the same client. This example calls the +:methodname:`getObjectAsString` method to retrieve the string that was stored. **Code** @@ -69,7 +79,7 @@ You can retrieve the object with the same client. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _authenticated-encryption: @@ -109,7 +119,7 @@ objects encrypted with :classname:`EncryptionOnly` mode. This example shows the :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _strict-authenticated-encryption: @@ -141,4 +151,4 @@ authenticated mode. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example `. diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index 1a7e42a..b89a943 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -35,7 +35,7 @@ see :aws-java-class:`CryptoMode ` definition. Required Imports ================ -Import the following libraries for the examples on this page. +Import the following classes for the examples on this page. **Imports** @@ -71,7 +71,17 @@ To use an asymmetric key, or a key pair, simply pass the key pair to the same cl :dedent: 8 :language: java -You can retrieve the object with the same client. +Call the :methodname:`putObject` method on the |S3| encryption client to upload objects. + +**Code** + +.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java + :lines: 227 + :dedent: 8 + :language: java + +You can retrieve the object using the same client. This example calls the +:methodname:`getObjectAsString` method to retrieve the string that was stored. **Code** @@ -80,7 +90,7 @@ You can retrieve the object with the same client. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _authenticated-encryption: @@ -119,7 +129,7 @@ objects encrypted with :classname:`EncryptionOnly` mode. This example shows the :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example `. .. _strict-authenticated-encryption: @@ -132,7 +142,7 @@ To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` valu .. note:: To use client-side authenticated encryption, you must include the latest `Bouncy Castle jar `_ in the classpath of your application. - + **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java @@ -151,4 +161,4 @@ authenticated mode. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example `. From d3dbf5eae41df96fee66927d56ac89ad69f479b9 Mon Sep 17 00:00:00 2001 From: Beck Date: Fri, 3 Nov 2017 14:27:34 -0700 Subject: [PATCH 082/225] Edits for crypto files and general SEO edits for titles in other files --- ...ples-cloudwatch-publish-custom-metrics.rst | 2 +- doc_source/examples-cloudwatch.rst | 6 +- doc_source/examples-crypto-kms.rst | 56 ++++++++-------- doc_source/examples-crypto-masterkey.rst | 67 ++++++++++--------- doc_source/examples-crypto.rst | 6 +- doc_source/examples-dynamodb-items.rst | 6 +- doc_source/examples-dynamodb-tables.rst | 12 ++-- doc_source/examples-dynamodb.rst | 6 +- doc_source/examples-iam-access-keys.rst | 10 +-- doc_source/examples-iam-account-aliases.rst | 6 +- doc_source/examples-iam-policies.rst | 10 +-- .../examples-iam-server-certificates.rst | 8 +-- doc_source/examples-iam-users.rst | 8 +-- doc_source/examples-iam.rst | 6 +- doc_source/examples-s3-access-permissions.rst | 8 +-- doc_source/examples-s3-bucket-policies.rst | 6 +- doc_source/examples-s3-buckets.rst | 10 +-- doc_source/examples-s3-objects.rst | 12 ++-- doc_source/examples-s3-transfermanager.rst | 20 +++--- .../examples-s3-website-configuration.rst | 6 +- doc_source/examples-s3.rst | 6 +- .../examples-sqs-dead-letter-queues.rst | 4 +- doc_source/examples-sqs-long-polling.rst | 6 +- doc_source/examples-sqs-message-queues.rst | 8 +-- doc_source/examples-sqs-messages.rst | 4 +- .../examples-sqs-visibility-timeout.rst | 4 +- doc_source/examples-sqs.rst | 6 +- doc_source/includes/examples-note.txt | 2 +- doc_source/index.rst | 2 +- doc_source/java-dg-samples.rst | 6 +- doc_source/prog-services-ec2.rst | 6 +- doc_source/prog-services-swf.rst | 6 +- doc_source/prog-services.rst | 22 +++--- 33 files changed, 178 insertions(+), 175 deletions(-) diff --git a/doc_source/examples-cloudwatch-publish-custom-metrics.rst b/doc_source/examples-cloudwatch-publish-custom-metrics.rst index 5544ec1..68a638a 100644 --- a/doc_source/examples-cloudwatch-publish-custom-metrics.rst +++ b/doc_source/examples-cloudwatch-publish-custom-metrics.rst @@ -32,7 +32,7 @@ information about the data point itself in a :aws-java-class:`MetricDatum ` object. .. note:: You cannot specify a namespace that begins with "AWS/". Namespaces that begin with - "AWS/" are reserved for use by Amazon Web Services products. . + "AWS/" are reserved for use by Amazon Web Services products. **Imports** diff --git a/doc_source/examples-cloudwatch.rst b/doc_source/examples-cloudwatch.rst index 7ad5360..95b0596 100644 --- a/doc_source/examples-cloudwatch.rst +++ b/doc_source/examples-cloudwatch.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -############# -|CW| Examples -############# +################################## +|CW| Examples Using the |sdk-java| +################################## .. meta:: :description: Programming Amazon Cloudwatch using the AWS SDK for Java diff --git a/doc_source/examples-crypto-kms.rst b/doc_source/examples-crypto-kms.rst index 5d3f63d..d42b1c4 100644 --- a/doc_source/examples-crypto-kms.rst +++ b/doc_source/examples-crypto-kms.rst @@ -14,29 +14,30 @@ .. meta:: :description: How to use the cryptography configuration settings for the AWS SDK for Java - :keywords: cryptography, encryption, example code + :keywords: AWS SDK for Java code examples, cryptography, encryption The following examples use the -:aws-java-class:`AmazonS3EncryptionClientBuilder ` +:aws-java-class:`AmazonS3EncryptionClientBuilder ` class to create an |S3| client with client-side encryption enabled. Once configured, -any object you upload to |S3| using this client -will be encrypted. Any objects you get from |S3| using this client will automatically -be decrypted. +any objects you upload to |S3| using this client +will be encrypted. Any objects you get from |S3| using this client are automatically +decrypted. .. note:: - The examples here demonstrate using the |S3| client-side + The following examples demonstrate how to use the |S3| client-side encryption with |KMS| managed keys. To learn how to use encryption with your own keys, - see the :doc:`examples-crypto-masterkey` topic. + see :doc:`examples-crypto-masterkey`. -You can choose from three encryption modes when enabling client-side |S3| encryption. -The sections below show how to enable each type. To learn which algorithms each mode uses, -see :aws-java-class:`CryptoMode ` definition. +You can choose from three encryption modes when enabling client-side |S3| encryption: encryption-only, +authenticated, and strict authenticated. +The following sections show how to enable each type. To learn which algorithms each mode uses, +see the :aws-java-class:`CryptoMode ` definition. Required Imports ================ -Import the following libraries for the examples on this page. +Import the following libraries for these examples. **Imports** @@ -46,10 +47,11 @@ Import the following libraries for the examples on this page. .. _encryption-only: -Encryption only Mode +Encryption-Only Mode ==================== -This is the default mode, if no :classname:`CryptoMode` is not specified. To use |KMS| +Encryption-only is the default mode, if no :classname:`CryptoMode` is specified. +To use an |KMS| managed key for encryption, pass the |KMS| key ID or alias to the :aws-java-class:`KMSEncryptionMaterialsProvider` constructor. @@ -60,7 +62,7 @@ managed key for encryption, pass the |KMS| key ID or alias to the :dedent: 8 :language: java -You can retrieve the object with the same client. +You can retrieve the object using the same client. **Code** @@ -69,25 +71,25 @@ You can retrieve the object with the same client. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _authenticated-encryption: Authenticated Encryption Mode ============================= -When :classname:`AuthenticatedEncryption` mode is used, an improved key wrapping algorithm is -applied during encryption. When decrypting in this mode, the algorithm is able to verify the integrity +When you use :classname:`AuthenticatedEncryption` mode, an improved key wrapping algorithm is +applied during encryption. When decrypting in this mode, the algorithm can verify the integrity of the decrypted object and throw an exception if the check fails. -To get more details about how authenticated encryption works, see the +For more details about how authenticated encryption works, see the :blog:`Amazon S3 Client-Side Authenticated Encryption ` blog post. .. note:: To use client-side authenticated encryption, you must include the latest `Bouncy Castle jar `_ - in the classpath of your application. + file in the classpath of your application. -To enable this mode, specify the :classname:`AuthenticatedEncryption` value in +To enable this mode, specify the :classname:`AuthenticatedEncryption` value in the :method:`withCryptoConfiguration` method. @@ -98,8 +100,8 @@ To enable this mode, specify the :classname:`AuthenticatedEncryption` value in :dedent: 8 :language: java -The :classname:`AuthenticatedEncryption` mode can retrieve unencrypted objects as well as -objects encrypted with :classname:`EncryptionOnly` mode. This example shows the +The :classname:`AuthenticatedEncryption` mode can retrieve unencrypted objects and +objects encrypted with :classname:`EncryptionOnly` mode. The following example shows the |S3| encryption client retrieving an unencrypted object. **Code** @@ -109,18 +111,18 @@ objects encrypted with :classname:`EncryptionOnly` mode. This example shows the :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _strict-authenticated-encryption: Strict Authenticated Encryption =============================== -To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in +To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in the :method:`withCryptoConfiguration` method. .. note:: To use client-side authenticated encryption, you must include the latest - `Bouncy Castle jar `_ + `Bouncy Castle jar `_ file in the classpath of your application. **Code** @@ -130,7 +132,7 @@ To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` valu :dedent: 8 :language: java -In :classname:`StrictAuthenticatedEncryption` mode, the |S3| client will throw an +In :classname:`StrictAuthenticatedEncryption` mode, the |S3| client throws an exception when retrieving an object that was not encrypted using an authenticated mode. @@ -141,4 +143,4 @@ authenticated mode. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index 1a7e42a..6fb70c4 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -8,34 +8,35 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -########################################################## +################################################### |S3| Client-Side Encryption with Client Master Keys -########################################################## +################################################### .. meta:: :description: How to use the cryptography configuration settings for the AWS SDK for Java - :keywords: cryptography, encryption, example code + :keywords: AWS SDK for Java code examples The following examples use the -:aws-java-class:`AmazonS3EncryptionClientBuilder ` -to create an |S3| client with client-side encryption enabled. Once configured, -any object you upload to |S3| using this client +:aws-java-class:`AmazonS3EncryptionClientBuilder ` class +to create an |S3| client with client-side encryption enabled. Once enabled, +any objects you upload to |S3| using this client will be encrypted. Any objects you get from |S3| using this client will automatically be decrypted. .. note:: - The examples here demonstrate using the |S3| client-side - encryption with customer managed client master keys. To learn how to use encryption - with |KMS| managed keys, see the :doc:`examples-crypto-kms` topic. + The following examples demonstrate using the |S3| client-side + encryption with customer-managed client master keys. To learn how to use encryption + with |KMS| managed keys, see :doc:`examples-crypto-kms`. -You can choose from three encryption modes when enabling client-side |S3| encryption. -The sections below show how to enable each type. To learn which algorithms each mode uses, -see :aws-java-class:`CryptoMode ` definition. +You can choose from three encryption modes when enabling client-side |S3| encryption: encryption-only, +authenticated, and strict authenticated. +The following sections show how to enable each type. To learn which algorithms each mode uses, +see the :aws-java-class:`CryptoMode ` definition. Required Imports ================ -Import the following libraries for the examples on this page. +Import the following libraries for these examples. **Imports** @@ -45,13 +46,13 @@ Import the following libraries for the examples on this page. .. _encryption-only: -Encryption only Mode +Encryption-Only Mode ==================== -This is the default mode, if no :classname:`CryptoMode` is not specified. To enable +Encryption-only is the default mode, if no :classname:`CryptoMode` is specified. To enable encryption, you must pass a key to the :aws-java-class:`EncryptionMaterials` constructor. The example below uses -the Java class :class:`KeyGenerator` to generate a symmetric private key. +the :class:`KeyGenerator` Java class generate a symmetric private key. **Code** @@ -60,8 +61,8 @@ the Java class :class:`KeyGenerator` to generate a symmetric private key. :dedent: 8 :language: java -To use an asymmetric key, or a key pair, simply pass the key pair to the same class -:aws-java-class:`EncryptionMaterials`. The example below uses the +To use an asymmetric key or a key pair, simply pass the key pair to the same +:aws-java-class:`EncryptionMaterials` class. The example below uses the :class:`KeyPairGenerator` class to generate a key pair. **Code** @@ -71,7 +72,7 @@ To use an asymmetric key, or a key pair, simply pass the key pair to the same cl :dedent: 8 :language: java -You can retrieve the object with the same client. +You can retrieve the object using the same client. **Code** @@ -80,25 +81,25 @@ You can retrieve the object with the same client. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _authenticated-encryption: Authenticated Encryption Mode ============================= -When :classname:`AuthenticatedEncryption` mode is used, an improved key wrapping algorithm is -applied during encryption. When decrypting in this mode, the algorithm is able to verify the integrity +When you use :classname:`AuthenticatedEncryption` mode, an improved key wrapping algorithm is +applied during encryption. When decrypting in this mode, the algorithm can verify the integrity of the decrypted object and throw an exception if the check fails. -To get more details about how authenticated encryption works, see the +For more details about how authenticated encryption works, see the :blog:`Amazon S3 Client-Side Authenticated Encryption ` blog post. .. note:: To use client-side authenticated encryption, you must include the latest - `Bouncy Castle jar `_ + `Bouncy Castle jar `_ file in the classpath of your application. -To enable this mode, specify the :classname:`AuthenticatedEncryption` value in +To enable this mode, specify the :classname:`AuthenticatedEncryption` value in the :method:`withCryptoConfiguration` method. **Code** @@ -108,8 +109,8 @@ To enable this mode, specify the :classname:`AuthenticatedEncryption` value in :dedent: 8 :language: java -The :classname:`AuthenticatedEncryption` mode can retrieve unencrypted objects as well as -objects encrypted with :classname:`EncryptionOnly` mode. This example shows the +The :classname:`AuthenticatedEncryption` mode can retrieve unencrypted objects and +objects encrypted with :classname:`EncryptionOnly` mode. The following example shows the |S3| encryption client retrieving an unencrypted object. **Code** @@ -119,20 +120,20 @@ objects encrypted with :classname:`EncryptionOnly` mode. This example shows the :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _strict-authenticated-encryption: Strict Authenticated Encryption =============================== -To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in +To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in the :method:`withCryptoConfiguration` method. .. note:: To use client-side authenticated encryption, you must include the latest - `Bouncy Castle jar `_ + `Bouncy Castle jar `_ file in the classpath of your application. - + **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java @@ -140,7 +141,7 @@ To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` valu :dedent: 8 :language: java -In :classname:`StrictAuthenticatedEncryption`, the |S3| client will throw an +In :classname:`StrictAuthenticatedEncryption` mode, the |S3| client throws an exception when retrieving an object that was not encrypted using an authenticated mode. @@ -151,4 +152,4 @@ authenticated mode. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. diff --git a/doc_source/examples-crypto.rst b/doc_source/examples-crypto.rst index 27d8e7f..54fed24 100644 --- a/doc_source/examples-crypto.rst +++ b/doc_source/examples-crypto.rst @@ -14,12 +14,12 @@ Using |S3| Client-Side Encryption .. meta:: :description: How to use the cryptography configuration settings for the AWS SDK for Java - :keywords: cryptography, encryption, example code + :keywords: AWS SDK for Java code examples Encrypting data using the |S3| encryption client is one way you can provide an additional layer of protection for sensitive information you store in |S3|. -The examples in the linked topics demonstrate how to create and configure the |S3| -encryption client for your application. +The examples in this section demonstrate how to create and configure the |S3| +encryption client for your application. If you are new to cryptography, see the :KMS-dg:`Cryptography Basics ` in the |KMS-dg| for a basic overview of cryptography terms and algorithms. diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 3789c5d..301f5e1 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -50,7 +50,7 @@ the item. :dedent: 8 :language: java -See the :sdk-examples-java-dynamodb:`complete sample `. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. .. _dynamodb-add-item: @@ -79,7 +79,7 @@ item identified by the primary key already exists, its fields are *updated* by t :dedent: 8 :language: java -See the :sdk-examples-java-dynamodb:`complete sample `. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. .. _dynamodb-update-item: @@ -108,7 +108,7 @@ update. :dedent: 8 :language: java -See the :sdk-examples-java-dynamodb:`complete sample `. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. More Info diff --git a/doc_source/examples-dynamodb-tables.rst b/doc_source/examples-dynamodb-tables.rst index 2446a3a..4717184 100644 --- a/doc_source/examples-dynamodb-tables.rst +++ b/doc_source/examples-dynamodb-tables.rst @@ -80,7 +80,7 @@ This code creates a table with a simple primary key ("Name"). :dedent: 8 :language: java -See the :sdk-examples-java-dynamodb:`complete sample `. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. .. _dynamodb-create-table-composite: @@ -99,7 +99,7 @@ Add another :dedent: 8 :language: java -See the :sdk-examples-java-dynamodb:`complete sample `. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. .. _dynamodb-list-tables: @@ -132,7 +132,7 @@ to get the last table that was evaluated. You can use this value to start the li returned value of the previous listing. -See the :sdk-examples-java-dynamodb:`complete sample `. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. .. _dynamodb-describe-table: @@ -159,7 +159,7 @@ Call the :aws-java-class:`DynamoDB client :dedent: 8 :language: java -See the :sdk-examples-java-dynamodb:`complete sample `. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. .. _dynamodb-update-table: @@ -188,7 +188,7 @@ method. :dedent: 8 :language: java -See the :sdk-examples-java-dynamodb:`complete sample `. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. .. _dynamodb-delete-table: @@ -216,7 +216,7 @@ Call the :aws-java-class:`DynamoDB client `' :dedent: 8 :language: java -See the :sdk-examples-java-dynamodb:`complete sample `. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. More Info ========= diff --git a/doc_source/examples-dynamodb.rst b/doc_source/examples-dynamodb.rst index 90d895a..0bb24dd 100644 --- a/doc_source/examples-dynamodb.rst +++ b/doc_source/examples-dynamodb.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -############## -|ddb| Examples -############## +################################### +|ddb| Examples Using the |sdk-java| +################################### This section provides examples of programming |ddb|_ using the |sdk-java|_. diff --git a/doc_source/examples-iam-access-keys.rst b/doc_source/examples-iam-access-keys.rst index a951830..2d0a085 100644 --- a/doc_source/examples-iam-access-keys.rst +++ b/doc_source/examples-iam-access-keys.rst @@ -43,7 +43,7 @@ using the :methodname:`withUserName` setter method before passing it to the :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Listing Access Keys @@ -76,7 +76,7 @@ object to see if the query returned fewer results then are available. If so, the :methodname:`setMarker` on the :classname:`ListAccessKeysRequest` and pass it back to the next invocation of :methodname:`listAccessKeys`. -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Retrieving an Access Key's Last Used Time @@ -105,7 +105,7 @@ used time. :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. .. _iam-access-keys-update: @@ -132,7 +132,7 @@ optionally the user name, and the desired :aws-java-class:`Status :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Deleting an Access Key @@ -160,7 +160,7 @@ username. :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. More Information diff --git a/doc_source/examples-iam-account-aliases.rst b/doc_source/examples-iam-account-aliases.rst index 855d3f3..f83f041 100644 --- a/doc_source/examples-iam-account-aliases.rst +++ b/doc_source/examples-iam-account-aliases.rst @@ -42,7 +42,7 @@ To create an account alias, call the |iamclient|'s :methodname:`createAccountAli :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Listing Account Aliases @@ -69,7 +69,7 @@ method. :dedent: 8 :language: java -see the :sdk-examples-java-iam:`complete example `. +see the :sdk-examples-java-iam:`complete example ` on GitHub. Deleting an account alias @@ -93,7 +93,7 @@ deleting an account alias, you must supply its name using a :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. More Information ================ diff --git a/doc_source/examples-iam-policies.rst b/doc_source/examples-iam-policies.rst index d63a5f3..7d0684d 100644 --- a/doc_source/examples-iam-policies.rst +++ b/doc_source/examples-iam-policies.rst @@ -45,7 +45,7 @@ to |ddb|. :dedent: 4 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Getting a Policy @@ -68,7 +68,7 @@ policy's ARN within a :aws-java-class:`GetPolicyRequest :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Attaching a Role Policy @@ -92,7 +92,7 @@ You can attach a policy to an |IAM| :iam-ug:`role ` by calling the |ia :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Listing Attached Role Policies @@ -124,7 +124,7 @@ call :methodname:`listAttachedRolePolicies` again to get the next batch of resul :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Detaching a Role Policy @@ -147,7 +147,7 @@ providing it with the role name and policy ARN in a :aws-java-class:`DetachRoleP :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. More Information diff --git a/doc_source/examples-iam-server-certificates.rst b/doc_source/examples-iam-server-certificates.rst index b832859..4c4cd98 100644 --- a/doc_source/examples-iam-server-certificates.rst +++ b/doc_source/examples-iam-server-certificates.rst @@ -46,7 +46,7 @@ You can retrieve a server certificate by calling the |iamclient|'s :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Listing Server Certificates @@ -82,7 +82,7 @@ call :methodname:`listServerCertificates` again to get the next batch of results :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Updating a Server Certificate @@ -107,7 +107,7 @@ certificate's current name and either a new name or new path to use. :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Deleting a Server Certificate @@ -131,7 +131,7 @@ name. :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. More Information diff --git a/doc_source/examples-iam-users.rst b/doc_source/examples-iam-users.rst index 86544d8..ca38475 100644 --- a/doc_source/examples-iam-users.rst +++ b/doc_source/examples-iam-users.rst @@ -36,7 +36,7 @@ method, either directly or using a :aws-java-class:`CreateUserRequest :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Listing Users @@ -66,7 +66,7 @@ it the return value of the response object's :methodname:`getMarker()` method. :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Updating a User @@ -89,7 +89,7 @@ that you can use to change the user's *name* or *path*. :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. Deleting a User @@ -112,7 +112,7 @@ with the user name to delete. :dedent: 8 :language: java -See the :sdk-examples-java-iam:`complete example `. +See the :sdk-examples-java-iam:`complete example ` on GitHub. More Information ================ diff --git a/doc_source/examples-iam.rst b/doc_source/examples-iam.rst index bc1631a..a393205 100644 --- a/doc_source/examples-iam.rst +++ b/doc_source/examples-iam.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -############## -|IAM| Examples -############## +################################### +|IAM| Examples Using the |sdk-java| +################################### .. meta:: :description: Programming AWS Identity and Access Management using the AWS SDK for Java diff --git a/doc_source/examples-s3-access-permissions.rst b/doc_source/examples-s3-access-permissions.rst index cbc0463..64d39e2 100644 --- a/doc_source/examples-s3-access-permissions.rst +++ b/doc_source/examples-s3-access-permissions.rst @@ -44,7 +44,7 @@ passing it the *bucket name* to query. This method returns an :aws-java-class:`A :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. Set the Access Control List for a Bucket @@ -73,7 +73,7 @@ set. :aws-java-class:`EmailAddressGrantee ` class to set the grantee by email, as we've done here. -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. Get the Access Control List for an Object @@ -97,7 +97,7 @@ that you can use to examine each :aws-java-class:`Grant `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. Set the Access Control List for an Object @@ -126,7 +126,7 @@ set. :aws-java-class:`EmailAddressGrantee ` class to set the grantee by email, as we've done here. -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. More Information ================ diff --git a/doc_source/examples-s3-bucket-policies.rst b/doc_source/examples-s3-bucket-policies.rst index 4d79e0e..25b788c 100644 --- a/doc_source/examples-s3-bucket-policies.rst +++ b/doc_source/examples-s3-bucket-policies.rst @@ -84,7 +84,7 @@ if the policy text is invalid. You can use this technique to prevalidate a policy that you read in from a file or other means. -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _get-s3-bucket-policy: @@ -111,7 +111,7 @@ To retrieve the policy for an |S3| bucket, call the |s3client| client's If the named bucket doesn't exist, if you don't have access to it, or if it has no bucket policy, an :classname:`AmazonServiceException` is thrown. -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _delete-s3-bucket-policy: @@ -139,7 +139,7 @@ This method succeeds even if the bucket doesn't already have a policy. If you sp name that doesn't exist or if you don't have access to the bucket, an :classname:`AmazonServiceException` is thrown. -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. More Info ========= diff --git a/doc_source/examples-s3-buckets.rst b/doc_source/examples-s3-buckets.rst index dfdd9c8..d2a1c3a 100644 --- a/doc_source/examples-s3-buckets.rst +++ b/doc_source/examples-s3-buckets.rst @@ -52,7 +52,7 @@ exception if the bucket already exists. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _list-buckets: @@ -76,7 +76,7 @@ Use the |s3client| client's :methodname:`listBucket` method. If successful, a li :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _delete-bucket: @@ -114,7 +114,7 @@ delete each one. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. Remove Objects from a Versioned Bucket Before Deleting It @@ -140,7 +140,7 @@ objects, and then :methodname:`deleteVersion` to delete each one. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. Delete an Empty Bucket @@ -162,4 +162,4 @@ bucket itself by using the |s3client| client's :methodname:`deleteBucket` method :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. diff --git a/doc_source/examples-s3-objects.rst b/doc_source/examples-s3-objects.rst index a5c8128..4a398ef 100644 --- a/doc_source/examples-s3-objects.rst +++ b/doc_source/examples-s3-objects.rst @@ -49,7 +49,7 @@ name, and file to upload. *The bucket must exist, or an error will result*. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _list-objects: @@ -79,7 +79,7 @@ name. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _download-object: @@ -112,7 +112,7 @@ name as the object's key). :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _copy-object: @@ -136,7 +136,7 @@ and the destination bucket and name. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. note:: You can use :methodname:`copyObject` with :ref:`deleteObject ` to **move** or **rename** an object, by first copying the object to a new name (you can use the same bucket @@ -164,7 +164,7 @@ object to delete. *The specified bucket and object key must exist, or an error w :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _delete-objects: @@ -189,4 +189,4 @@ from the same bucket by passing their names to the :aws-java-class:`DeleteObject :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. diff --git a/doc_source/examples-s3-transfermanager.rst b/doc_source/examples-s3-transfermanager.rst index b0112c9..850baf3 100644 --- a/doc_source/examples-s3-transfermanager.rst +++ b/doc_source/examples-s3-transfermanager.rst @@ -69,7 +69,7 @@ to check the transfer state or to wait for it to complete. .. include:: includes/transfermanager-complete-get-status-note.txt -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _transfermanager-upload-file-list: @@ -107,7 +107,7 @@ providing the following: .. include:: includes/transfermanager-multifileupload-notes.txt -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _transfermanager-upload-directory: @@ -140,7 +140,7 @@ recursively (*true* or *false*). .. include:: includes/transfermanager-multifileupload-notes.txt -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _transfermanager-downloading: @@ -182,7 +182,7 @@ Use the |xfermgr|'s :methodname:`download` method, providing the .. include:: includes/transfermanager-complete-get-status-note.txt -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _tranfermanager-download-directory: @@ -213,7 +213,7 @@ into on your local system. If the named directory doesn't exist yet, it will be .. include:: includes/transfermanager-complete-get-status-note.txt -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _transfermanager-copy-object: @@ -238,7 +238,7 @@ To copy an object from one S3 bucket to another, use the |xfermgr| :methodname:` :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _transfermanager-wait-for-completion: @@ -265,7 +265,7 @@ events *before* calling :methodname:`waitForCompletion`, implement a polling mec thread, or receive progress updates asynchronously using a :aws-java-class:`ProgressListener `. -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _transfermanager-get-status-and-progress: @@ -330,7 +330,7 @@ prints its final state. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _transfermanager-progress-listener: @@ -363,7 +363,7 @@ object. You can use the object to get the total bytes of the operation by callin :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _transfermanager-get-subtransfer-progress: @@ -392,7 +392,7 @@ subtransfer. :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _transfermanager-see-also: diff --git a/doc_source/examples-s3-website-configuration.rst b/doc_source/examples-s3-website-configuration.rst index 3583237..da8e3f7 100644 --- a/doc_source/examples-s3-website-configuration.rst +++ b/doc_source/examples-s3-website-configuration.rst @@ -49,7 +49,7 @@ Setting an index document is *required*; all other parameters are optional. public read access to the files in the bucket. For more information, see :doc:`examples-s3-bucket-policies`. -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. Get a Bucket's Website Configuration @@ -76,7 +76,7 @@ bucket, then :code-java:`null` will be returned. :lines: 30-46 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. Delete a Bucket's Website Configuration @@ -99,7 +99,7 @@ configuration from. :lines: 29-36 :language: java -See the :sdk-examples-java-s3:`complete example `. +See the :sdk-examples-java-s3:`complete example ` on GitHub. More Information diff --git a/doc_source/examples-s3.rst b/doc_source/examples-s3.rst index bfc5932..e019f0a 100644 --- a/doc_source/examples-s3.rst +++ b/doc_source/examples-s3.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -############# -|S3| Examples -############# +################################## +|S3| Examples Using the |sdk-java| +################################## .. meta:: :description: Programming Amazon S3 using the AWS SDK for Java diff --git a/doc_source/examples-sqs-dead-letter-queues.rst b/doc_source/examples-sqs-dead-letter-queues.rst index 00b1e81..56258a5 100644 --- a/doc_source/examples-sqs-dead-letter-queues.rst +++ b/doc_source/examples-sqs-dead-letter-queues.rst @@ -46,7 +46,7 @@ Here we create two identical |SQS| queues, one of which will serve as the dead l :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete example `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. .. _sqs-dead-letter-queue-set-redrive-policy: @@ -77,7 +77,7 @@ attribute with your JSON redrive policy. :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete example `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. More Info diff --git a/doc_source/examples-sqs-long-polling.rst b/doc_source/examples-sqs-long-polling.rst index 4a9d15b..ef95f91 100644 --- a/doc_source/examples-sqs-long-polling.rst +++ b/doc_source/examples-sqs-long-polling.rst @@ -47,7 +47,7 @@ before calling the |sqsclient| class' :methodname:`createQueue` method. :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete example `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. .. _sqs-long-polling-existing-queue: @@ -73,7 +73,7 @@ queue by setting ``ReceiveMessageWaitTimeSeconds`` on the :aws-java-class:`SetQu :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete example `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. .. _sqs-long-polling-receive-message: @@ -102,7 +102,7 @@ you supply to the |sqsclient| class' :methodname:`receiveMessage` method. :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete example `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. More Info ========= diff --git a/doc_source/examples-sqs-message-queues.rst b/doc_source/examples-sqs-message-queues.rst index 62c77a7..74622ac 100644 --- a/doc_source/examples-sqs-message-queues.rst +++ b/doc_source/examples-sqs-message-queues.rst @@ -54,7 +54,7 @@ create a standard queue. :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete sample `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. .. _sqs-list-queues: @@ -94,7 +94,7 @@ filter the returned results by passing it a :code-java:`ListQueuesRequest` objec :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete sample `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. .. _sqs-get-queue-url: @@ -117,7 +117,7 @@ Call the |sqsclient| client's :methodname:`getQueueUrl` method. :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete sample `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. .. _sqs-delete-queue: @@ -141,7 +141,7 @@ Provide the queue's :ref:`URL ` to the |sqsclient| client's :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete sample `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. More Info ========= diff --git a/doc_source/examples-sqs-messages.rst b/doc_source/examples-sqs-messages.rst index 5bab262..630bef8 100644 --- a/doc_source/examples-sqs-messages.rst +++ b/doc_source/examples-sqs-messages.rst @@ -71,7 +71,7 @@ value per message. :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete sample `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. .. _sqs-messages-receive: @@ -112,7 +112,7 @@ the message's receipt handle and queue URL to the |sqsclient| client's :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete sample `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. More Info diff --git a/doc_source/examples-sqs-visibility-timeout.rst b/doc_source/examples-sqs-visibility-timeout.rst index 777b473..c843f82 100644 --- a/doc_source/examples-sqs-visibility-timeout.rst +++ b/doc_source/examples-sqs-visibility-timeout.rst @@ -48,7 +48,7 @@ handle in a :aws-java-class:`ChangeMessageVisibilityRequest :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete example `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. Setting the Message Visibility Timeout for Multiple Messages at Once @@ -73,7 +73,7 @@ string and a receipt handle. Then, pass the list to the |sqs| client class' :dedent: 8 :language: java -See the :sdk-examples-java-sqs:`complete example `. +See the :sdk-examples-java-sqs:`complete example ` on GitHub. More Info diff --git a/doc_source/examples-sqs.rst b/doc_source/examples-sqs.rst index 4d94d1b..b1a36c5 100644 --- a/doc_source/examples-sqs.rst +++ b/doc_source/examples-sqs.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -############## -|sqs| Examples -############## +################################### +|sqs| Examples Using the |sdk-java| +################################### .. meta:: :description: Programming Amazon SQS using the AWS SDK for Java diff --git a/doc_source/includes/examples-note.txt b/doc_source/includes/examples-note.txt index 1393735..0f103f9 100644 --- a/doc_source/includes/examples-note.txt +++ b/doc_source/includes/examples-note.txt @@ -8,6 +8,6 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -.. note:: These code snippets assume that you understand the material in :doc:`basics` and have +.. note:: These code examples assume that you understand the material in :doc:`basics` and have configured default AWS credentials using the information in :doc:`setup-credentials`. diff --git a/doc_source/index.rst b/doc_source/index.rst index 1f734b0..c61b046 100644 --- a/doc_source/index.rst +++ b/doc_source/index.rst @@ -23,7 +23,7 @@ welcome getting-started basics - prog-services + Code Examples document-history .. include:: about-aws.txt diff --git a/doc_source/java-dg-samples.rst b/doc_source/java-dg-samples.rst index 32069c2..b061253 100644 --- a/doc_source/java-dg-samples.rst +++ b/doc_source/java-dg-samples.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -################ -SDK Code Samples -################ +####################### +|sdk-java| Code Samples +####################### The |sdk-java| comes packaged with code samples that demonstrate many of the features of the SDK in buildable, runnable programs. You can study or modify these to implement your own AWS diff --git a/doc_source/prog-services-ec2.rst b/doc_source/prog-services-ec2.rst index 52d912e..d3c9e38 100644 --- a/doc_source/prog-services-ec2.rst +++ b/doc_source/prog-services-ec2.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -############## -|EC2| Examples -############## +################################### +|EC2| Examples Using the |sdk-java| +################################### .. meta:: :description: Programming Amazon EC2 using the AWS SDK for Java diff --git a/doc_source/prog-services-swf.rst b/doc_source/prog-services-swf.rst index ff9332f..ee7c760 100644 --- a/doc_source/prog-services-swf.rst +++ b/doc_source/prog-services-swf.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -##### -|SWF| -##### +################################### +|SWF| Examples Using the |sdk-java| +################################### |SWF|_ is a workflow-management service that helps developers build and scale distributed workflows that can have parallel or sequential steps consisting of activities, child workflows or diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index 00d3b3b..a448d1f 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -#################### -Programming Examples -#################### +######################## +|sdk-java| Code Examples +######################## This section provides tutorials and examples of using the |sdk-java| to program AWS services. @@ -21,12 +21,12 @@ This section provides tutorials and examples of using the |sdk-java| to program :maxdepth: 1 :titlesonly: - java-dg-samples - examples-cloudwatch - examples-dynamodb - prog-services-ec2 - examples-iam - examples-s3 - examples-sqs + SDK Code Samples + Amazon CloudWatch Examples + Amazon DynamoDB Examples + Amazon EC2 Examples + AWS Identity and Access Management (IAM) Examples + Amazon S3 Examples + Amazon SQS Examples prog-services-sts - prog-services-swf + Amazon SWF Examples From 207ccfd27d76fd2f58c83d369411170b29292ffe Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Fri, 3 Nov 2017 17:11:13 -0700 Subject: [PATCH 083/225] fixing broken link to sample code --- doc_source/tutorial-spot-adv-java.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/tutorial-spot-adv-java.rst b/doc_source/tutorial-spot-adv-java.rst index 7453e2c..2bab320 100644 --- a/doc_source/tutorial-spot-adv-java.rst +++ b/doc_source/tutorial-spot-adv-java.rst @@ -642,7 +642,7 @@ that performs these actions. We also create a :code:`GettingStartedApp` class, w method where we perform the high level function calls. The complete source code for this example can be viewed or downloaded at :github:`GitHub -`. +`. Congratulations! You've completed the Advanced Request Features tutorial for developing Spot Instance software with the |sdk-java|. From 4b67838149f2c93bcbdcaf15cbfb01dd6884db44 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Thu, 9 Nov 2017 14:58:05 -0800 Subject: [PATCH 084/225] updating gradle topic to include a complete build.gradle file --- doc_source/setup-project-gradle.rst | 42 ++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index 25c0320..0fd33dc 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -27,7 +27,7 @@ used to import the SDK's Maven Bill of Materials (BOM) to manage SDK dependencie mavenCentral() } dependencies { - classpath "io.spring.gradle:dependency-management-plugin:1.0.0.RC2" + classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE" } } @@ -39,7 +39,7 @@ used to import the SDK's Maven Bill of Materials (BOM) to manage SDK dependencie dependencyManagement { imports { - mavenBom 'com.amazonaws:aws-java-sdk-bom:1.10.77' + mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.228' } } @@ -55,6 +55,42 @@ used to import the SDK's Maven Bill of Materials (BOM) to manage SDK dependencie Gradle will automatically resolve the correct version of your SDK dependencies using the information from the BOM. +Here's the complete :file:`build.gradle` file: + +.. code-block:: groovy + + group 'aws.test' + version '1.0-SNAPSHOT' + + apply plugin: 'java' + + sourceCompatibility = 1.8 + + repositories { + mavenCentral() + } + + buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE" + } + } + + apply plugin: "io.spring.dependency-management" + + dependencyManagement { + imports { + mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.228' + } + } + + dependencies { + compile 'com.amazonaws:aws-java-sdk-s3' + testCompile group: 'junit', name: 'junit', version: '4.11' + } + .. note:: For more detail about specifying SDK dependencies using the BOM, see :doc:`setup-project-maven`. - From 077da2e76e2c16621706deca2757de67bc5425c8 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Tue, 14 Nov 2017 11:35:19 -0800 Subject: [PATCH 085/225] fixing typo in java-dg-roles per customer ticket --- doc_source/java-dg-roles.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc_source/java-dg-roles.rst b/doc_source/java-dg-roles.rst index 47cb837..e2380b3 100644 --- a/doc_source/java-dg-roles.rst +++ b/doc_source/java-dg-roles.rst @@ -138,7 +138,7 @@ Next, copy the |sdk-java| libraries into your newly-created directory. If you do cp -r ~/Downloads/aws-java-sdk-{1.7.5}/lib . cp -r ~/Downloads/aws-java-sdk-{1.7.5}/third-party . -Open a new file, call it :file:`GetS3Ojbect.java`, and add the following code: +Open a new file, call it :file:`GetS3Object.java`, and add the following code: .. literalinclude:: snippets/GetS3ObjectApp/GetS3Object.java :language: java @@ -234,4 +234,3 @@ Then, run the program using :code:`ant` as follows: ant run The program will write the contents of your |S3| object to your command window. - From 517166f4e058179a628c14416cc4a0e491de26e5 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Tue, 14 Nov 2017 11:56:45 -0800 Subject: [PATCH 086/225] updating line numbers to cover full examples --- doc_source/examples-dynamodb-tables.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/doc_source/examples-dynamodb-tables.rst b/doc_source/examples-dynamodb-tables.rst index 4717184..b79e987 100644 --- a/doc_source/examples-dynamodb-tables.rst +++ b/doc_source/examples-dynamodb-tables.rst @@ -63,7 +63,7 @@ must also supply initial provisioned throughput values and a table name. **Imports** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java - :lines: 15-23 + :lines: 15-24 :language: java .. _dynamodb-create-table-simple: @@ -76,7 +76,7 @@ This code creates a table with a simple primary key ("Name"). **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTable.java - :lines: 58-73 + :lines: 59-75 :dedent: 8 :language: java @@ -95,7 +95,7 @@ Add another **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/CreateTableCompositeKey.java - :lines: 58-67 + :lines: 59-68 :dedent: 8 :language: java @@ -122,7 +122,7 @@ You can list the tables in a particular region by calling the :aws-java-class:`D **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java - :lines: 32-64 + :lines: 33-63 :dedent: 8 :language: java @@ -155,7 +155,7 @@ Call the :aws-java-class:`DynamoDB client **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/DescribeTable.java - :lines: 50-87 + :lines: 51-88 :dedent: 8 :language: java @@ -178,13 +178,13 @@ method. **Imports** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java - :lines: 15-17 + :lines: 15-18 :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateTable.java - :lines: 57-67 + :lines: 57-68 :dedent: 8 :language: java @@ -206,13 +206,13 @@ Call the :aws-java-class:`DynamoDB client `' **Imports** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/DeleteTable.java - :lines: 15-16 + :lines: 15-17 :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/DeleteTable.java - :lines: 51-58 + :lines: 52-59 :dedent: 8 :language: java From 1880dbc700a1caedd33023884a1da019e6f77127 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Wed, 6 Dec 2017 21:22:13 -0800 Subject: [PATCH 087/225] fixing duplicate reference names and incorrect role names --- doc_source/examples-crypto-kms.rst | 10 +++++----- doc_source/examples-crypto-masterkey.rst | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc_source/examples-crypto-kms.rst b/doc_source/examples-crypto-kms.rst index 571819e..40d333b 100644 --- a/doc_source/examples-crypto-kms.rst +++ b/doc_source/examples-crypto-kms.rst @@ -45,7 +45,7 @@ Import the following classes for these examples. :lines: 16-31 :language: java -.. _encryption-only: +.. _encryption-only-kms: Encryption-Only Mode ==================== @@ -84,7 +84,7 @@ You can retrieve the object using the same client. This example calls the See the :sdk-examples-java-s3:`complete example ` on GitHub. -.. _authenticated-encryption: +.. _authenticated-encryption-kms: Authenticated Encryption Mode ============================= @@ -101,7 +101,7 @@ blog post. file in the classpath of your application. To enable this mode, specify the :classname:`AuthenticatedEncryption` value in the -:method:`withCryptoConfiguration` method. +:methodName:`withCryptoConfiguration` method. **Code** @@ -124,13 +124,13 @@ objects encrypted with :classname:`EncryptionOnly` mode. The following example s See the :sdk-examples-java-s3:`complete example ` on GitHub. -.. _strict-authenticated-encryption: +.. _strict-authenticated-encryption-kms: Strict Authenticated Encryption =============================== To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in the -:method:`withCryptoConfiguration` method. +:methodName:`withCryptoConfiguration` method. .. note:: To use client-side authenticated encryption, you must include the latest `Bouncy Castle jar `_ file diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index 0b96960..c300776 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -110,7 +110,7 @@ blog post. in the classpath of your application. To enable this mode, specify the :classname:`AuthenticatedEncryption` value in the -:method:`withCryptoConfiguration` method. +:methodName:`withCryptoConfiguration` method. **Code** @@ -138,7 +138,7 @@ Strict Authenticated Encryption =============================== To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in the -:method:`withCryptoConfiguration` method. +:methodName:`withCryptoConfiguration` method. .. note:: To use client-side authenticated encryption, you must include the latest `Bouncy Castle jar `_ file From b04dbf2b51031750fa898299fc1fba9cf81a030d Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Mon, 11 Dec 2017 16:38:43 -0800 Subject: [PATCH 088/225] adjusting sample code lines --- doc_source/examples-dynamodb-tables.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/examples-dynamodb-tables.rst b/doc_source/examples-dynamodb-tables.rst index b79e987..0894259 100644 --- a/doc_source/examples-dynamodb-tables.rst +++ b/doc_source/examples-dynamodb-tables.rst @@ -116,13 +116,13 @@ You can list the tables in a particular region by calling the :aws-java-class:`D **Imports** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java - :lines: 15-18 + :lines: 15-19 :language: java **Code** .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/ListTables.java - :lines: 33-63 + :lines: 33-67 :dedent: 8 :language: java From c1a3663e18e2e3b7a42bf0514638dbd961363bf8 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Fri, 29 Dec 2017 17:41:13 -0800 Subject: [PATCH 089/225] fixing broken links --- doc_source/examples-cloudwatch-create-alarms.rst | 6 +++--- doc_source/examples-cloudwatch-get-metrics.rst | 2 +- doc_source/examples-cloudwatch-publish-custom-metrics.rst | 2 +- doc_source/examples-cloudwatch-send-events.rst | 6 +++--- doc_source/examples-cloudwatch-use-alarm-actions.rst | 6 +++--- doc_source/examples-cloudwatch.rst | 3 +-- doc_source/examples-dynamodb-items.rst | 4 ++-- doc_source/examples-dynamodb-tables.rst | 4 ++-- doc_source/examples-ec2-key-pairs.rst | 4 ++-- 9 files changed, 18 insertions(+), 19 deletions(-) diff --git a/doc_source/examples-cloudwatch-create-alarms.rst b/doc_source/examples-cloudwatch-create-alarms.rst index 3b8dfac..ec85007 100644 --- a/doc_source/examples-cloudwatch-create-alarms.rst +++ b/doc_source/examples-cloudwatch-create-alarms.rst @@ -96,6 +96,6 @@ More Information ================ * :cw-ug:`Creating Amazon CloudWatch Alarms ` in the |cw-ug| -* :cw-api:`PutMetricAlarm` in the |cw-api| -* :cw-api:`DescribeAlarms` in the |cw-api| -* :cw-api:`DeleteAlarms` in the |cw-api| +* :cw-api:`PutMetricAlarm ` in the |cw-api| +* :cw-api:`DescribeAlarms ` in the |cw-api| +* :cw-api:`DeleteAlarms ` in the |cw-api| diff --git a/doc_source/examples-cloudwatch-get-metrics.rst b/doc_source/examples-cloudwatch-get-metrics.rst index e5caac2..8c20fe9 100644 --- a/doc_source/examples-cloudwatch-get-metrics.rst +++ b/doc_source/examples-cloudwatch-get-metrics.rst @@ -50,4 +50,4 @@ the original request object with the return value of the :classname:`ListMetrics More Information ================ -* :cw-api:`ListMetrics` in the |cw-api|. +* :cw-api:`ListMetrics ` in the |cw-api|. diff --git a/doc_source/examples-cloudwatch-publish-custom-metrics.rst b/doc_source/examples-cloudwatch-publish-custom-metrics.rst index 68a638a..05d46f3 100644 --- a/doc_source/examples-cloudwatch-publish-custom-metrics.rst +++ b/doc_source/examples-cloudwatch-publish-custom-metrics.rst @@ -52,4 +52,4 @@ More Information * :cw-ug:`Using Amazon CloudWatch Metrics ` in the |cw-ug|. * :cw-ug:`AWS Namespaces ` in the |cw-ug|. -* :cw-api:`PutMetricData` in the |cw-api|. +* :cw-api:`PutMetricData ` in the |cw-api|. diff --git a/doc_source/examples-cloudwatch-send-events.rst b/doc_source/examples-cloudwatch-send-events.rst index 3e2d9c2..f85ffd1 100644 --- a/doc_source/examples-cloudwatch-send-events.rst +++ b/doc_source/examples-cloudwatch-send-events.rst @@ -99,6 +99,6 @@ More Information * :cwe-ug:`Schedule Expressions for Rules ` in the |cwe-ug| * :cwe-ug:`Event Types for CloudWatch Events ` in the |cwe-ug| * :cwe-ug:`Events and Event Patterns ` in the |cwe-ug| -* :cwe-api:`PutEvents` in the |cwe-api| -* :cwe-api:`PutTargets` in the |cwe-api| -* :cwe-api:`PutRule` in the |cwe-api| +* :cwe-api:`PutEvents ` in the |cwe-api| +* :cwe-api:`PutTargets ` in the |cwe-api| +* :cwe-api:`PutRule ` in the |cwe-api| diff --git a/doc_source/examples-cloudwatch-use-alarm-actions.rst b/doc_source/examples-cloudwatch-use-alarm-actions.rst index 7c28cab..46239d5 100644 --- a/doc_source/examples-cloudwatch-use-alarm-actions.rst +++ b/doc_source/examples-cloudwatch-use-alarm-actions.rst @@ -73,6 +73,6 @@ More Information * :cw-ug:`Create Alarms to Stop, Terminate, Reboot, or Recover an Instance ` in the |cw-ug| -* :cw-api:`PutMetricAlarm` in the |cw-api| -* :cw-api:`EnableAlarmActions` in the |cw-api| -* :cw-api:`DisableAlarmActions` in the |cw-api| +* :cw-api:`PutMetricAlarm ` in the |cw-api| +* :cw-api:`EnableAlarmActions ` in the |cw-api| +* :cw-api:`DisableAlarmActions ` in the |cw-api| diff --git a/doc_source/examples-cloudwatch.rst b/doc_source/examples-cloudwatch.rst index 95b0596..2a8ab9c 100644 --- a/doc_source/examples-cloudwatch.rst +++ b/doc_source/examples-cloudwatch.rst @@ -14,7 +14,7 @@ .. meta:: :description: Programming Amazon Cloudwatch using the AWS SDK for Java - :keywords: AWS SDK for Java code examples, IAM + :keywords: AWS SDK for Java code examples, Cloudwatch This section provides examples of programming |cw|_ using the |sdk-java|_. @@ -33,4 +33,3 @@ For more information about |cw|, see the |cw-ug|_. examples-cloudwatch-create-alarms examples-cloudwatch-use-alarm-actions examples-cloudwatch-send-events - diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 301f5e1..a6d5440 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -28,8 +28,8 @@ Retrieve (Get) an Item from a Table Call the |ddbclient|'s :methodname:`getItem` method and pass it a :aws-java-class:`GetItemRequest ` object with the table -name and primary key value of the item you want. It returns a `GetItemResult -` object. +name and primary key value of the item you want. It returns a +:aws-java-class:`GetItemResult ` object. You can use the returned :classname:`GetItemResult` object's :methodname:`getItem()` method to retrieve a :javase-ref:`Map ` of key (String) and value diff --git a/doc_source/examples-dynamodb-tables.rst b/doc_source/examples-dynamodb-tables.rst index 0894259..888669e 100644 --- a/doc_source/examples-dynamodb-tables.rst +++ b/doc_source/examples-dynamodb-tables.rst @@ -90,7 +90,7 @@ Create a Table with a Composite Primary Key Add another :aws-java-class:`AttributeDefinition ` and :aws-java-class:`KeySchemaElement ` to -:aws-java-class:`CreateTableRequest `. +:aws-java-class:`CreateTableRequest `. **Code** @@ -127,7 +127,7 @@ You can list the tables in a particular region by calling the :aws-java-class:`D :language: java By default, up to 100 tables are returned per call |mdash| use -:methodname:`getLastEvaluatedTableName` on the returned :aws-java-class:`ListTablesResult <>` object +:methodname:`getLastEvaluatedTableName` on the returned :aws-java-class:`ListTablesResult ` object to get the last table that was evaluated. You can use this value to start the listing after the last returned value of the previous listing. diff --git a/doc_source/examples-ec2-key-pairs.rst b/doc_source/examples-ec2-key-pairs.rst index 80681d9..b94a2c9 100644 --- a/doc_source/examples-ec2-key-pairs.rst +++ b/doc_source/examples-ec2-key-pairs.rst @@ -45,8 +45,8 @@ Describing Key Pairs ==================== To list your key pairs or to get information about them, call the |ec2client|'s -:methodname:`describeKeyPairs` method. It returns a :aws-java-class:`DescribeKeyPairsRequest -` that you can use to access the list of key pairs by +:methodname:`describeKeyPairs` method. It returns a :aws-java-class:`DescribeKeyPairsResult +` that you can use to access the list of key pairs by calling its :methodname:`getKeyPairs` method, which returns a list of :aws-java-class:`KeyPairInfo ` objects. From 07813760bf0cc4112be7bf82b46388bab6f3b731 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Tue, 2 Jan 2018 16:13:32 -0800 Subject: [PATCH 090/225] removing invalid code in java spot instance tutorial --- doc_source/tutorial-spot-instances-java.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc_source/tutorial-spot-instances-java.rst b/doc_source/tutorial-spot-instances-java.rst index 9962d51..90d91fc 100644 --- a/doc_source/tutorial-spot-instances-java.rst +++ b/doc_source/tutorial-spot-instances-java.rst @@ -114,7 +114,6 @@ address indicates the subnet for the specified IP address. We also configure the .. code-block:: java - // Create the AmazonEC2 client so we can call various APIs. AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); @@ -531,5 +530,3 @@ Next Steps ========== Proceed with :doc:`tutorial-spot-adv-java`. - - From 825c6b5c7fb451e2facc0e27344457126b30ccf1 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Wed, 3 Jan 2018 10:39:30 -0800 Subject: [PATCH 091/225] updating copyright to 2018 --- doc_source/_includes.txt | 2 +- doc_source/basics-async.rst | 2 +- doc_source/basics.rst | 2 +- doc_source/best-practices.rst | 2 +- doc_source/conf.py | 2 +- doc_source/create-key-pair.rst | 2 +- doc_source/create-security-group.rst | 2 +- doc_source/creating-clients.rst | 2 +- doc_source/credentials.rst | 2 +- doc_source/document-history.rst | 2 +- doc_source/examples-cloudwatch-create-alarms.rst | 2 +- doc_source/examples-cloudwatch-get-metrics.rst | 2 +- doc_source/examples-cloudwatch-publish-custom-metrics.rst | 2 +- doc_source/examples-cloudwatch-send-events.rst | 2 +- doc_source/examples-cloudwatch-use-alarm-actions.rst | 2 +- doc_source/examples-cloudwatch.rst | 2 +- doc_source/examples-crypto-kms.rst | 2 +- doc_source/examples-crypto-masterkey.rst | 2 +- doc_source/examples-crypto.rst | 2 +- doc_source/examples-dynamodb-items.rst | 2 +- doc_source/examples-dynamodb-query-scan.rst | 2 +- doc_source/examples-dynamodb-tables.rst | 2 +- doc_source/examples-dynamodb.rst | 2 +- doc_source/examples-ec2-elastic-ip.rst | 2 +- doc_source/examples-ec2-instances.rst | 2 +- doc_source/examples-ec2-key-pairs.rst | 2 +- doc_source/examples-ec2-regions-zones.rst | 2 +- doc_source/examples-ec2-security-groups.rst | 2 +- doc_source/examples-iam-access-keys.rst | 2 +- doc_source/examples-iam-account-aliases.rst | 2 +- doc_source/examples-iam-policies.rst | 2 +- doc_source/examples-iam-server-certificates.rst | 2 +- doc_source/examples-iam-users.rst | 2 +- doc_source/examples-iam.rst | 2 +- doc_source/examples-s3-access-permissions.rst | 2 +- doc_source/examples-s3-bucket-policies.rst | 2 +- doc_source/examples-s3-buckets.rst | 2 +- doc_source/examples-s3-objects.rst | 2 +- doc_source/examples-s3-transfermanager.rst | 2 +- doc_source/examples-s3-website-configuration.rst | 2 +- doc_source/examples-s3.rst | 2 +- doc_source/examples-sqs-dead-letter-queues.rst | 2 +- doc_source/examples-sqs-long-polling.rst | 2 +- doc_source/examples-sqs-message-queues.rst | 2 +- doc_source/examples-sqs-messages.rst | 2 +- doc_source/examples-sqs-visibility-timeout.rst | 2 +- doc_source/examples-sqs.rst | 2 +- doc_source/generating-sdk-metrics.rst | 2 +- doc_source/getting-started.rst | 2 +- doc_source/how-to-ec2.rst | 2 +- doc_source/includes/complete-examples-note.txt | 2 +- doc_source/includes/examples-note.txt | 2 +- .../includes/transfermanager-complete-get-status-note.txt | 2 +- doc_source/includes/transfermanager-multifileupload-notes.txt | 2 +- doc_source/index.rst | 2 +- doc_source/java-dg-access-control.rst | 2 +- doc_source/java-dg-exceptions.rst | 2 +- doc_source/java-dg-jvm-ttl.rst | 2 +- doc_source/java-dg-logging.rst | 2 +- doc_source/java-dg-region-selection.rst | 2 +- doc_source/java-dg-roles.rst | 2 +- doc_source/java-dg-samples.rst | 2 +- doc_source/java-dg-tomcat-session-manager.rst | 2 +- doc_source/prog-services-ec2.rst | 2 +- doc_source/prog-services-sts.rst | 2 +- doc_source/prog-services-swf-list-domains.rst | 2 +- doc_source/prog-services-swf-register-domain.rst | 2 +- doc_source/prog-services-swf.rst | 2 +- doc_source/prog-services.rst | 2 +- doc_source/run-instance.rst | 2 +- doc_source/section-client-configuration.rst | 2 +- doc_source/setup-credentials.rst | 2 +- doc_source/setup-install.rst | 2 +- doc_source/setup-project-gradle.rst | 2 +- doc_source/setup-project-maven.rst | 2 +- doc_source/signup-create-iam-user.rst | 2 +- doc_source/snippets/CreateSwfDomain-list_swf_domains.java | 2 +- doc_source/snippets/CreateSwfDomain-register_swf_domain.java | 2 +- doc_source/snippets/CreateSwfDomain/CreateSwfDomain.java | 2 +- doc_source/snippets/CreateSwfDomain/build.xml | 2 +- doc_source/snippets/GetS3ObjectApp/GetS3Object.java | 2 +- doc_source/snippets/GetS3ObjectApp/build.xml | 2 +- doc_source/snippets/ec2/cancel-terminate-spot-request.java | 2 +- doc_source/snippets/ec2/tag-spot-instances.java | 2 +- doc_source/snippets/ec2/tag-spot-requests.java | 2 +- doc_source/snippets/helloswf_lambda/SwfHelloLambdaFunction.java | 2 +- .../src/main/java/example/swf/hellolambda/HelloTypes.java | 2 +- .../src/main/java/example/swf/hellolambda/WorkflowStarter.java | 2 +- .../src/main/java/example/swf/hellolambda/WorkflowWorker.java | 2 +- .../src/main/java/example/lambda/InvokeLambdaFunction.java | 2 +- .../src/main/java/example/lambda/InvokeLambdaFunctionAsync.java | 2 +- .../main/java/example/lambda/InvokeLambdaFunctionCallback.java | 2 +- doc_source/snippets/retrieve-credentials-properties-file-2.java | 2 +- doc_source/snippets/retrieve-credentials-properties-file.java | 2 +- doc_source/snippets/spot-request-ebs.java | 2 +- doc_source/snippets/spot-request-set-az-group.java | 2 +- doc_source/snippets/spot-request-set-az.java | 2 +- doc_source/snippets/spot-request-set-launch-group.java | 2 +- doc_source/snippets/spot-request-set-placement-group.java | 2 +- doc_source/snippets/spot-request-set-type.java | 2 +- doc_source/snippets/spot-request-set-validity-period.java | 2 +- doc_source/snippets/spot-request-tagging.java | 2 +- doc_source/snippets/sts_basic_session_creds.java | 2 +- .../snippets/tutorial-spot-adv-java-limit-request-duration.java | 2 +- doc_source/swf-basics.rst | 2 +- doc_source/swf-graceful-shutdown.rst | 2 +- doc_source/swf-hello.rst | 2 +- doc_source/swf-lambda-task.rst | 2 +- doc_source/tutorial-spot-adv-java.rst | 2 +- doc_source/tutorial-spot-instances-java.rst | 2 +- doc_source/welcome.rst | 2 +- 111 files changed, 111 insertions(+), 111 deletions(-) diff --git a/doc_source/_includes.txt b/doc_source/_includes.txt index 9f44984..5559f43 100644 --- a/doc_source/_includes.txt +++ b/doc_source/_includes.txt @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/basics-async.rst b/doc_source/basics-async.rst index 3e60ebc..3c29ca5 100644 --- a/doc_source/basics-async.rst +++ b/doc_source/basics-async.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/basics.rst b/doc_source/basics.rst index 4808aed..83cf334 100644 --- a/doc_source/basics.rst +++ b/doc_source/basics.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/best-practices.rst b/doc_source/best-practices.rst index 0d63355..c33d46c 100644 --- a/doc_source/best-practices.rst +++ b/doc_source/best-practices.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/conf.py b/doc_source/conf.py index 3cebc1c..06aa0b9 100644 --- a/doc_source/conf.py +++ b/doc_source/conf.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You may not # use this file except in compliance with the License. A copy of the License diff --git a/doc_source/create-key-pair.rst b/doc_source/create-key-pair.rst index 72d9e05..3e65052 100644 --- a/doc_source/create-key-pair.rst +++ b/doc_source/create-key-pair.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/create-security-group.rst b/doc_source/create-security-group.rst index e9bfe47..38ffae3 100644 --- a/doc_source/create-security-group.rst +++ b/doc_source/create-security-group.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/creating-clients.rst b/doc_source/creating-clients.rst index 8df9392..fe1b14b 100644 --- a/doc_source/creating-clients.rst +++ b/doc_source/creating-clients.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 6ca53c4..291a869 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/document-history.rst b/doc_source/document-history.rst index 02377a6..a2977e3 100644 --- a/doc_source/document-history.rst +++ b/doc_source/document-history.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-cloudwatch-create-alarms.rst b/doc_source/examples-cloudwatch-create-alarms.rst index ec85007..5fe9241 100644 --- a/doc_source/examples-cloudwatch-create-alarms.rst +++ b/doc_source/examples-cloudwatch-create-alarms.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-cloudwatch-get-metrics.rst b/doc_source/examples-cloudwatch-get-metrics.rst index 8c20fe9..940681d 100644 --- a/doc_source/examples-cloudwatch-get-metrics.rst +++ b/doc_source/examples-cloudwatch-get-metrics.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-cloudwatch-publish-custom-metrics.rst b/doc_source/examples-cloudwatch-publish-custom-metrics.rst index 05d46f3..cac7e04 100644 --- a/doc_source/examples-cloudwatch-publish-custom-metrics.rst +++ b/doc_source/examples-cloudwatch-publish-custom-metrics.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-cloudwatch-send-events.rst b/doc_source/examples-cloudwatch-send-events.rst index f85ffd1..15d43fa 100644 --- a/doc_source/examples-cloudwatch-send-events.rst +++ b/doc_source/examples-cloudwatch-send-events.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-cloudwatch-use-alarm-actions.rst b/doc_source/examples-cloudwatch-use-alarm-actions.rst index 46239d5..a317a27 100644 --- a/doc_source/examples-cloudwatch-use-alarm-actions.rst +++ b/doc_source/examples-cloudwatch-use-alarm-actions.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-cloudwatch.rst b/doc_source/examples-cloudwatch.rst index 2a8ab9c..db3414f 100644 --- a/doc_source/examples-cloudwatch.rst +++ b/doc_source/examples-cloudwatch.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-crypto-kms.rst b/doc_source/examples-crypto-kms.rst index 40d333b..ab7c5bc 100644 --- a/doc_source/examples-crypto-kms.rst +++ b/doc_source/examples-crypto-kms.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index c300776..7a211e3 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-crypto.rst b/doc_source/examples-crypto.rst index 54fed24..db71298 100644 --- a/doc_source/examples-crypto.rst +++ b/doc_source/examples-crypto.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index a6d5440..5caefc1 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-dynamodb-query-scan.rst b/doc_source/examples-dynamodb-query-scan.rst index 4fc4edd..d03b369 100644 --- a/doc_source/examples-dynamodb-query-scan.rst +++ b/doc_source/examples-dynamodb-query-scan.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-dynamodb-tables.rst b/doc_source/examples-dynamodb-tables.rst index 888669e..5a27dbd 100644 --- a/doc_source/examples-dynamodb-tables.rst +++ b/doc_source/examples-dynamodb-tables.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-dynamodb.rst b/doc_source/examples-dynamodb.rst index 0bb24dd..c6d85f3 100644 --- a/doc_source/examples-dynamodb.rst +++ b/doc_source/examples-dynamodb.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-ec2-elastic-ip.rst b/doc_source/examples-ec2-elastic-ip.rst index 74d4693..b13cade 100644 --- a/doc_source/examples-ec2-elastic-ip.rst +++ b/doc_source/examples-ec2-elastic-ip.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-ec2-instances.rst b/doc_source/examples-ec2-instances.rst index 5179312..ac5cfb8 100644 --- a/doc_source/examples-ec2-instances.rst +++ b/doc_source/examples-ec2-instances.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-ec2-key-pairs.rst b/doc_source/examples-ec2-key-pairs.rst index b94a2c9..4461cff 100644 --- a/doc_source/examples-ec2-key-pairs.rst +++ b/doc_source/examples-ec2-key-pairs.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-ec2-regions-zones.rst b/doc_source/examples-ec2-regions-zones.rst index edcbfac..553b0dd 100644 --- a/doc_source/examples-ec2-regions-zones.rst +++ b/doc_source/examples-ec2-regions-zones.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-ec2-security-groups.rst b/doc_source/examples-ec2-security-groups.rst index f39735f..7900120 100644 --- a/doc_source/examples-ec2-security-groups.rst +++ b/doc_source/examples-ec2-security-groups.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-iam-access-keys.rst b/doc_source/examples-iam-access-keys.rst index 2d0a085..fd904e2 100644 --- a/doc_source/examples-iam-access-keys.rst +++ b/doc_source/examples-iam-access-keys.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-iam-account-aliases.rst b/doc_source/examples-iam-account-aliases.rst index f83f041..d94f774 100644 --- a/doc_source/examples-iam-account-aliases.rst +++ b/doc_source/examples-iam-account-aliases.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-iam-policies.rst b/doc_source/examples-iam-policies.rst index 7d0684d..b2ab3b2 100644 --- a/doc_source/examples-iam-policies.rst +++ b/doc_source/examples-iam-policies.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-iam-server-certificates.rst b/doc_source/examples-iam-server-certificates.rst index 4c4cd98..93f3be4 100644 --- a/doc_source/examples-iam-server-certificates.rst +++ b/doc_source/examples-iam-server-certificates.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-iam-users.rst b/doc_source/examples-iam-users.rst index ca38475..e12eee4 100644 --- a/doc_source/examples-iam-users.rst +++ b/doc_source/examples-iam-users.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-iam.rst b/doc_source/examples-iam.rst index a393205..92005a0 100644 --- a/doc_source/examples-iam.rst +++ b/doc_source/examples-iam.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-s3-access-permissions.rst b/doc_source/examples-s3-access-permissions.rst index 64d39e2..892996d 100644 --- a/doc_source/examples-s3-access-permissions.rst +++ b/doc_source/examples-s3-access-permissions.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-s3-bucket-policies.rst b/doc_source/examples-s3-bucket-policies.rst index 25b788c..d6335a1 100644 --- a/doc_source/examples-s3-bucket-policies.rst +++ b/doc_source/examples-s3-bucket-policies.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-s3-buckets.rst b/doc_source/examples-s3-buckets.rst index d2a1c3a..e16efb0 100644 --- a/doc_source/examples-s3-buckets.rst +++ b/doc_source/examples-s3-buckets.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-s3-objects.rst b/doc_source/examples-s3-objects.rst index 4a398ef..56a70fc 100644 --- a/doc_source/examples-s3-objects.rst +++ b/doc_source/examples-s3-objects.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-s3-transfermanager.rst b/doc_source/examples-s3-transfermanager.rst index 850baf3..efaf70b 100644 --- a/doc_source/examples-s3-transfermanager.rst +++ b/doc_source/examples-s3-transfermanager.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-s3-website-configuration.rst b/doc_source/examples-s3-website-configuration.rst index da8e3f7..1a9329f 100644 --- a/doc_source/examples-s3-website-configuration.rst +++ b/doc_source/examples-s3-website-configuration.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-s3.rst b/doc_source/examples-s3.rst index e019f0a..1569a2e 100644 --- a/doc_source/examples-s3.rst +++ b/doc_source/examples-s3.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-sqs-dead-letter-queues.rst b/doc_source/examples-sqs-dead-letter-queues.rst index 56258a5..702dde3 100644 --- a/doc_source/examples-sqs-dead-letter-queues.rst +++ b/doc_source/examples-sqs-dead-letter-queues.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-sqs-long-polling.rst b/doc_source/examples-sqs-long-polling.rst index ef95f91..f3b6dfe 100644 --- a/doc_source/examples-sqs-long-polling.rst +++ b/doc_source/examples-sqs-long-polling.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-sqs-message-queues.rst b/doc_source/examples-sqs-message-queues.rst index 74622ac..f426f18 100644 --- a/doc_source/examples-sqs-message-queues.rst +++ b/doc_source/examples-sqs-message-queues.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-sqs-messages.rst b/doc_source/examples-sqs-messages.rst index 630bef8..67aa64e 100644 --- a/doc_source/examples-sqs-messages.rst +++ b/doc_source/examples-sqs-messages.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-sqs-visibility-timeout.rst b/doc_source/examples-sqs-visibility-timeout.rst index c843f82..12f70ce 100644 --- a/doc_source/examples-sqs-visibility-timeout.rst +++ b/doc_source/examples-sqs-visibility-timeout.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/examples-sqs.rst b/doc_source/examples-sqs.rst index b1a36c5..780e0d3 100644 --- a/doc_source/examples-sqs.rst +++ b/doc_source/examples-sqs.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/generating-sdk-metrics.rst b/doc_source/generating-sdk-metrics.rst index 7291c92..04a62fd 100644 --- a/doc_source/generating-sdk-metrics.rst +++ b/doc_source/generating-sdk-metrics.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/getting-started.rst b/doc_source/getting-started.rst index 0ebc0f9..44b1963 100644 --- a/doc_source/getting-started.rst +++ b/doc_source/getting-started.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/how-to-ec2.rst b/doc_source/how-to-ec2.rst index 003969c..01b4ee4 100644 --- a/doc_source/how-to-ec2.rst +++ b/doc_source/how-to-ec2.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/includes/complete-examples-note.txt b/doc_source/includes/complete-examples-note.txt index 8e285b1..fbc491a 100644 --- a/doc_source/includes/complete-examples-note.txt +++ b/doc_source/includes/complete-examples-note.txt @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/includes/examples-note.txt b/doc_source/includes/examples-note.txt index 0f103f9..3f12239 100644 --- a/doc_source/includes/examples-note.txt +++ b/doc_source/includes/examples-note.txt @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/includes/transfermanager-complete-get-status-note.txt b/doc_source/includes/transfermanager-complete-get-status-note.txt index aaabba0..45986d5 100644 --- a/doc_source/includes/transfermanager-complete-get-status-note.txt +++ b/doc_source/includes/transfermanager-complete-get-status-note.txt @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/includes/transfermanager-multifileupload-notes.txt b/doc_source/includes/transfermanager-multifileupload-notes.txt index 61665a5..0816464 100644 --- a/doc_source/includes/transfermanager-multifileupload-notes.txt +++ b/doc_source/includes/transfermanager-multifileupload-notes.txt @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/index.rst b/doc_source/index.rst index c61b046..8abe472 100644 --- a/doc_source/index.rst +++ b/doc_source/index.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-access-control.rst b/doc_source/java-dg-access-control.rst index 7cc94fc..f07454c 100644 --- a/doc_source/java-dg-access-control.rst +++ b/doc_source/java-dg-access-control.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-exceptions.rst b/doc_source/java-dg-exceptions.rst index 531c2ad..1e27af6 100644 --- a/doc_source/java-dg-exceptions.rst +++ b/doc_source/java-dg-exceptions.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-jvm-ttl.rst b/doc_source/java-dg-jvm-ttl.rst index 66d01bd..273436a 100644 --- a/doc_source/java-dg-jvm-ttl.rst +++ b/doc_source/java-dg-jvm-ttl.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-logging.rst b/doc_source/java-dg-logging.rst index 87075d9..c888d9d 100644 --- a/doc_source/java-dg-logging.rst +++ b/doc_source/java-dg-logging.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index 6e6d053..de6e25c 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-roles.rst b/doc_source/java-dg-roles.rst index e2380b3..bf90958 100644 --- a/doc_source/java-dg-roles.rst +++ b/doc_source/java-dg-roles.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-samples.rst b/doc_source/java-dg-samples.rst index b061253..73aacf2 100644 --- a/doc_source/java-dg-samples.rst +++ b/doc_source/java-dg-samples.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/java-dg-tomcat-session-manager.rst b/doc_source/java-dg-tomcat-session-manager.rst index 1c73d0d..c46a832 100644 --- a/doc_source/java-dg-tomcat-session-manager.rst +++ b/doc_source/java-dg-tomcat-session-manager.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-ec2.rst b/doc_source/prog-services-ec2.rst index d3c9e38..8a2f7a9 100644 --- a/doc_source/prog-services-ec2.rst +++ b/doc_source/prog-services-ec2.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-sts.rst b/doc_source/prog-services-sts.rst index 8423751..59e7400 100644 --- a/doc_source/prog-services-sts.rst +++ b/doc_source/prog-services-sts.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-swf-list-domains.rst b/doc_source/prog-services-swf-list-domains.rst index a7af948..65f2f4b 100644 --- a/doc_source/prog-services-swf-list-domains.rst +++ b/doc_source/prog-services-swf-list-domains.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-swf-register-domain.rst b/doc_source/prog-services-swf-register-domain.rst index 16eacf6..9e7f157 100644 --- a/doc_source/prog-services-swf-register-domain.rst +++ b/doc_source/prog-services-swf-register-domain.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services-swf.rst b/doc_source/prog-services-swf.rst index ee7c760..04e4dc6 100644 --- a/doc_source/prog-services-swf.rst +++ b/doc_source/prog-services-swf.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index a448d1f..ac78ca2 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/run-instance.rst b/doc_source/run-instance.rst index 0482bbf..8fcfafe 100644 --- a/doc_source/run-instance.rst +++ b/doc_source/run-instance.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/section-client-configuration.rst b/doc_source/section-client-configuration.rst index 69a9665..a1184c2 100644 --- a/doc_source/section-client-configuration.rst +++ b/doc_source/section-client-configuration.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/setup-credentials.rst b/doc_source/setup-credentials.rst index 9890cbb..3aef56c 100644 --- a/doc_source/setup-credentials.rst +++ b/doc_source/setup-credentials.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/setup-install.rst b/doc_source/setup-install.rst index 2ceb2f5..bba64f6 100644 --- a/doc_source/setup-install.rst +++ b/doc_source/setup-install.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index 0fd33dc..1adf58c 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/setup-project-maven.rst b/doc_source/setup-project-maven.rst index f62ebc8..afe493e 100644 --- a/doc_source/setup-project-maven.rst +++ b/doc_source/setup-project-maven.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/signup-create-iam-user.rst b/doc_source/signup-create-iam-user.rst index 2bf7b7c..1a1e207 100644 --- a/doc_source/signup-create-iam-user.rst +++ b/doc_source/signup-create-iam-user.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the diff --git a/doc_source/snippets/CreateSwfDomain-list_swf_domains.java b/doc_source/snippets/CreateSwfDomain-list_swf_domains.java index dccb741..cbd7ed7 100644 --- a/doc_source/snippets/CreateSwfDomain-list_swf_domains.java +++ b/doc_source/snippets/CreateSwfDomain-list_swf_domains.java @@ -1,5 +1,5 @@ /* - Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This file is licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of diff --git a/doc_source/snippets/CreateSwfDomain-register_swf_domain.java b/doc_source/snippets/CreateSwfDomain-register_swf_domain.java index ad1eded..aacc2cf 100644 --- a/doc_source/snippets/CreateSwfDomain-register_swf_domain.java +++ b/doc_source/snippets/CreateSwfDomain-register_swf_domain.java @@ -1,5 +1,5 @@ /* - Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This file is licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of diff --git a/doc_source/snippets/CreateSwfDomain/CreateSwfDomain.java b/doc_source/snippets/CreateSwfDomain/CreateSwfDomain.java index 7e54088..191e643 100644 --- a/doc_source/snippets/CreateSwfDomain/CreateSwfDomain.java +++ b/doc_source/snippets/CreateSwfDomain/CreateSwfDomain.java @@ -1,5 +1,5 @@ /* - Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. This file is licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of diff --git a/doc_source/snippets/CreateSwfDomain/build.xml b/doc_source/snippets/CreateSwfDomain/build.xml index cb999e5..bef385a 100644 --- a/doc_source/snippets/CreateSwfDomain/build.xml +++ b/doc_source/snippets/CreateSwfDomain/build.xml @@ -1,5 +1,5 @@ ` method for the state of the Spot +` method for the state of the Spot request ID we want to monitor. The request ID created in Step 2 is embedded in the response to our :code:`requestSpotInstances` @@ -400,8 +375,8 @@ Step 5: Cleaning Up Your Spot Requests and Instances Lastly, we need to clean up our requests and instances. It is important to both cancel any outstanding requests :emphasis:`and` terminate any instances. Just canceling your requests will not terminate your instances, which means that you will continue to pay for them. If you terminate your -instances, your Spot requests may be canceled, but there are some scenarios |mdash| such as if you -use persistent bids|mdash|where terminating your instances is not sufficient to stop your request +instances, your Spot requests may be canceled, but there are some scenarios such as if you +use persistent bids where terminating your instances is not sufficient to stop your request from being re-fulfilled. Therefore, it is a best practice to both cancel any active bids and terminate any running instances. From ab6844c50aa6e8e56bf5d93aab3e64f5f24db0e6 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Mon, 9 Jul 2018 17:29:01 -0700 Subject: [PATCH 114/225] fixing code snippet for missing closing bracket --- doc_source/snippets/sts_basic_session_creds.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/snippets/sts_basic_session_creds.java b/doc_source/snippets/sts_basic_session_creds.java index c37c7c5..770a638 100644 --- a/doc_source/snippets/sts_basic_session_creds.java +++ b/doc_source/snippets/sts_basic_session_creds.java @@ -17,5 +17,5 @@ session_creds.getSessionToken()); AmazonS3 s3 = AmazonS3ClientBuilder.standard() - .withCredentials(new AWSStaticCredentialsProvider(sessionCredentials) + .withCredentials(new AWSStaticCredentialsProvider(sessionCredentials)) .build(); From 2265fd26efd5df2eeb7554f8abc0945eb6ff2cb4 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Wed, 18 Jul 2018 17:01:50 -0700 Subject: [PATCH 115/225] fixing line alignment in s3 examples per customer feedback --- doc_source/examples-s3-transfermanager.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc_source/examples-s3-transfermanager.rst b/doc_source/examples-s3-transfermanager.rst index efaf70b..8a551e9 100644 --- a/doc_source/examples-s3-transfermanager.rst +++ b/doc_source/examples-s3-transfermanager.rst @@ -99,7 +99,7 @@ providing the following: .. uploadFileList() method in the example code... .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java - :lines: 60-69, 71, 73-77 + :lines: 61-69, 71, 73-77 :dedent: 8 :language: java @@ -176,7 +176,7 @@ Use the |xfermgr|'s :methodname:`download` method, providing the .. downloadFile() method in the example code... .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java - :lines: 57-61, 63, 65-69 + :lines: 59-62, 64, 66-70 :dedent: 8 :language: java @@ -207,7 +207,7 @@ into on your local system. If the named directory doesn't exist yet, it will be .. downloadFile() method in the example code... .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java - :lines: 36-40, 42, 44-48 + :lines: 37-41, 43, 45-49 :dedent: 8 :language: java @@ -254,7 +254,7 @@ occurs. .. the waitForCompletion() function in XferMgrProgress.java .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 34-45 + :lines: 35-46 :dedent: 8 :language: java @@ -326,7 +326,7 @@ prints its final state. .. the showTransferProgress() function in XferMgrProgress.java .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 56-61, 64-67, 70 + :lines: 56-62, 65-68, 71-74 :dedent: 8 :language: java @@ -359,7 +359,7 @@ object. You can use the object to get the total bytes of the operation by callin .. the uploadFileWithListener() function in XferMgrProgress.java .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 146-149, 152-154, 157-159, 162-168 + :lines: 146-150, 153-155, 158-168 :dedent: 8 :language: java @@ -388,7 +388,7 @@ subtransfer. .. the showMultiUploadProgress() function in XferMgrProgress.java .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 82-83 + :lines: 83-84 :dedent: 8 :language: java From 62bec7a92354235305b9f44d80aa562e74a431f4 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Wed, 24 Oct 2018 14:31:06 -0700 Subject: [PATCH 116/225] fixing default connection timeout seconds to 10s instead of 50s --- doc_source/section-client-configuration.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/section-client-configuration.rst b/doc_source/section-client-configuration.rst index 341a8e7..045e96f 100644 --- a/doc_source/section-client-configuration.rst +++ b/doc_source/section-client-configuration.rst @@ -70,7 +70,7 @@ You can set options related to timeouts and handling errors with HTTP connection * :strong:`Connection Timeout` The connection timeout is the amount of time (in milliseconds) that the HTTP connection will wait - to establish a connection before giving up. The default is 50,000 ms. + to establish a connection before giving up. The default is 10,000 ms. To set this value yourself, use the :aws-java-ref:`ClientConfiguration.setConnectionTimeout ` method. From 49cb3cb17450829dbbbbe9f6c22a4e7e07f7b735 Mon Sep 17 00:00:00 2001 From: madhead Date: Wed, 31 Oct 2018 16:15:05 +0300 Subject: [PATCH 117/225] Fix #34: Gradle 4.6+ dependency BOM support example --- doc_source/setup-project-gradle.rst | 60 +++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index 1adf58c..250619e 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -12,11 +12,63 @@ Using the SDK with Gradle ######################### -To use the |sdk-java| in your Gradle_ project, use Spring's `dependency management plugin -`_ for Gradle, which can be -used to import the SDK's Maven Bill of Materials (BOM) to manage SDK dependencies for your project. +`Since Gradle_ 4.6`_ it is possible to +use Gradle's improved POM support feature for importing bill of materials (BOM) files by simply declaring a dependency on a BOM. -.. topic:: To configure the SDK for Gradle +.. topic:: To configure the SDK for Gradle 4.6 and upper + + #. Enable `IMPROVED_POM_SUPPORT` feature in :file:`settings.gradle` file (not needed in Gradle 5 and upper) + + .. code-block:: groovy + + enableFeaturePreview('IMPROVED_POM_SUPPORT') + + #. Import BOM as a usual dependency in the *dependencies* section + + .. code-block:: groovy + + dependencies { + implementation 'com.amazonaws:aws-java-sdk-bom:1.11.228' + } + + #. Specify the SDK modules that you'll be using in the *dependencies* section + + .. code-block:: groovy + + dependencies { + implementation 'com.amazonaws:aws-java-sdk-s3' + testCompile group: 'junit', name: 'junit', version: '4.11' + } + +Gradle will automatically resolve the correct version of your SDK dependencies using the information +from the BOM. + +Here's the complete :file:`build.gradle` file: + +.. code-block:: groovy + + group 'aws.test' + version '1.0-SNAPSHOT' + + apply plugin: 'java' + + sourceCompatibility = 1.8 + + repositories { + mavenCentral() + } + + dependencies { + implementation 'com.amazonaws:aws-java-sdk-bom:1.11.228' + implementation 'com.amazonaws:aws-java-sdk-s3' + testCompile group: 'junit', name: 'junit', version: '4.11' + } + +Gradle versions prior to 4.6 lack of native BOM support, so Spring's `dependency management plugin +`_ for Gradle can be used +to import the SDK's Maven Bill of Materials (BOM) to manage SDK dependencies for your project. + +.. topic:: To configure the SDK for Gradle prior 4.6 #. Add the dependency management plugin to your :file:`build.gradle` file From e94faa2d84dacab17963ed921c2a1b919f99f2e8 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Wed, 28 Nov 2018 13:56:06 -0800 Subject: [PATCH 118/225] fixing SDK v2 version references --- doc_source/welcome.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc_source/welcome.rst b/doc_source/welcome.rst index 256d4d3..228a93d 100644 --- a/doc_source/welcome.rst +++ b/doc_source/welcome.rst @@ -12,7 +12,7 @@ :description: Welcome to the AWS Java Developer Guide -.. _`aws sdk for java 2.0 developer guide`: http://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/welcome.html +.. _`aws sdk for java 2.x developer guide`: http://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/welcome.html ################################ @@ -24,11 +24,11 @@ applications that work with |S3|, |EC2|, |SDB|, and more. We regularly add suppo to the |sdk-java|. For a list of the supported services and their API versions that are included with each release of the SDK, view the `release notes`_ for the version that you're working with. -AWS SDK for Java 2.0 Developer Preview -====================================== -Take a look at the new AWS SDK for Java 2.0 developer preview at https://github.com/aws/aws-sdk-java-v2/. +AWS SDK for Java 2.x +===================== +Take a look at the new AWS SDK for Java 2.x at https://github.com/aws/aws-sdk-java-v2/. It includes much awaited features, such as a way to plug in a HTTP implementation. To get started, -see the `AWS SDK for Java 2.0 Developer Guide`_. +see the `AWS SDK for Java 2.x Developer Guide`_. .. _additional-resources: From 5e4a5bbf7818638b4b2c5ab24b904b7fe1a52de3 Mon Sep 17 00:00:00 2001 From: Matthew Patton Date: Tue, 18 Dec 2018 22:33:13 -0500 Subject: [PATCH 119/225] remove long-obsolete variable AWS_REGION --- doc_source/java-dg-region-selection.rst | 2 +- doc_source/swf-hello.rst | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index de6e25c..165d527 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -132,7 +132,7 @@ Default Region Provider Chain #. Any explicit region set by using :methodname:`withRegion` or :methodname:`setRegion` on the builder itself takes precedence over anything else. -#. The :envvar:`AWS_REGION` environment variable is checked. If it's set, that region is +#. The :envvar:`AWS_DEFAULT_REGION` environment variable is checked. If it's set, that region is used to configure the client. .. note:: This environment variable is set by the |LAM| container. diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index 514fabe..c605c1d 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -83,7 +83,7 @@ signing up for AWS and creating an |IAM| user (recommended over using root accou This tutorial uses the terminal (command-line) to run the example code, and expects that you have your AWS credentials and configuration accessible to the SDK. The easiest way to do this is to use the environment variables :envvar:`AWS_ACCESS_KEY_ID` and :envvar:`AWS_SECRET_ACCESS_KEY`. You -should also set the :envvar:`AWS_REGION` to the region you want to use. +should also set the :envvar:`AWS_DEFAULT_REGION` to the region you want to use. For example, on |unixes|, set the variables this way: @@ -91,7 +91,7 @@ For example, on |unixes|, set the variables this way: export AWS_ACCESS_KEY_ID=your_access_key_id export AWS_SECRET_ACCESS_KEY=your_secret_access_key - export AWS_REGION=us-east-1 + export AWS_DEFAULT_REGION=us-east-1 To set these variables on Windows, use these commands: @@ -99,7 +99,7 @@ To set these variables on Windows, use these commands: set AWS_ACCESS_KEY_ID=your_access_key_id set AWS_SECRET_ACCESS_KEY=your_secret_access_key - set AWS_REGION=us-east-1 + set AWS_DEFAULT_REGION=us-east-1 .. important:: Substitute your own access key, secret access key and region information for the example values shown here. From 4f490d5d3e655a32c69d7dbacd918421a2f330c4 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Mon, 18 Feb 2019 11:09:12 -0800 Subject: [PATCH 120/225] adding sdk metrics topic --- doc_source/generating-sdk-metrics.rst | 15 +- doc_source/getting-started.rst | 2 +- doc_source/sdk-metrics.rst | 354 ++++++++++++++++++++++++++ 3 files changed, 367 insertions(+), 4 deletions(-) mode change 100644 => 100755 doc_source/generating-sdk-metrics.rst mode change 100644 => 100755 doc_source/getting-started.rst create mode 100755 doc_source/sdk-metrics.rst diff --git a/doc_source/generating-sdk-metrics.rst b/doc_source/generating-sdk-metrics.rst old mode 100644 new mode 100755 index 0f84966..3c25c58 --- a/doc_source/generating-sdk-metrics.rst +++ b/doc_source/generating-sdk-metrics.rst @@ -8,6 +8,10 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. +.. |CSMlong| replace:: AWS SDK Metrics for Enterprise Support +.. |CSM| replace:: SDK Metrics + + ################################### Enabling Metrics for the |sdk-java| ################################### @@ -18,10 +22,15 @@ The |sdk-java| can generate metrics for visualization and monitoring with |cw|_ * the performance of your JVMs when used with AWS * runtime environment details such as heap memory, number of threads, and opened file descriptors -How to Enable SDK Metric Generation -=================================== +.. note:: The |CSMlong| is another option for gathering metrics about your application. + |CSM| is an |AWS| service that publishes data to |CWlong| and enables you to share metric data with AWS Support + for easier troubleshooting. See :doc:`sdk-metrics` to learn how to enable the |CSM| + service for your application. + +How to Enable |sdk-java| Metric Generation +========================================== -SDK metrics are *disabled by default*. To enable it for your local development environment, include +|sdk-java| metrics are *disabled by default*. To enable it for your local development environment, include a system property that points to your AWS security credential file when starting up the JVM. For example:: diff --git a/doc_source/getting-started.rst b/doc_source/getting-started.rst old mode 100644 new mode 100755 index 44b1963..738611c --- a/doc_source/getting-started.rst +++ b/doc_source/getting-started.rst @@ -23,4 +23,4 @@ This section provides information about how to install, set up, and use the |sdk setup-credentials setup-project-maven setup-project-gradle - + sdk-metrics diff --git a/doc_source/sdk-metrics.rst b/doc_source/sdk-metrics.rst new file mode 100755 index 0000000..721e8bb --- /dev/null +++ b/doc_source/sdk-metrics.rst @@ -0,0 +1,354 @@ +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +.. |language| replace:: Java +.. |sdk| replace:: |sdk-java| +.. |SDKM| replace:: SDK Metrics +.. |SDKMlong| replace:: AWS SDK Metrics for Enterprise Support + +#################### +Enabling |SDKMlong| +#################### + +|SDKMlong| (|SDKM|\) enables Enterprise customers to collect metrics from |AWS| SDKs on their hosts and clients shared with +|AWS| Enterprise Support. |SDKM| provides information that helps speed up detection and diagnosis of issues occurring in connections +to AWS services for AWS Enterprise Support customers. + +As telemetry is collected on each host, it is relayed via UDP to 127.0.0.1 (aka localhost), where the |CW| agent aggregates the data and sends it +to the |SDKM| service. Therefore, to receive metrics, the |CW| agent is required to be added to your instance. + +The following steps to set up |SDKM| pertain to an |EC2| instance running Amazon Linux for a client application that is using the |sdk|. +|SDKM| is also available for your production environments if you enable it while configuring the |sdk|. + +To utilize |SDKM|, run the latest version of the |CW| agent. Learn how to +:CW-dg:`Configure the CloudWatch Agent for SDK Metrics` in the |CW-dg|. + +To set up |SDKM| with the |sdk|, follow these instructions: + +#. Create an application with an |sdk| client to use an AWS service. +#. Host your project on an |EC2| instance or in your local environment. +#. Install and use the latest 1.x version of the |sdk|. +#. Install and configure an |CW| agent on an EC2 instance or in your local environment. +#. Authorize |SDKM| to collect and send metrics. +#. :ref:`csm-enable-agent`. + +For more information, see the following: + +* :ref:`csm-update-agent` +* :ref:`csm-disable-agent` + + +.. _csm-enable-agent: + +Enable |SDKM| for the |sdk| +=========================== + +By default, |SDKM| is turned off, and the port is set to 31000. The following are the default parameters. + +.. code-block:: ini + + //default values + [ + 'enabled' => false, + 'port' => 31000, + ] + +Enabling |SDKM| is independent of configuring your credentials to use an AWS service. + +You can enable |SDKM| using one of 4 options. + +* :ref:`csm-enable-agent-code` +* :ref:`csm-enable-agent-environ` +* :ref:`csm-enable-agent-java-prop` +* :ref:`csm-enable-agent-shared-config` + +.. _csm-enable-agent-code: + +Option 1: Set |SDKM| in Code +---------------------------- + +The |language| implementation allows you to set |SDKM| configurations within code when building +a service client. +The values set in code override any configurations set in the other options described below. + +.. code-block:: java + + CsmConfiguration csmConfig = new CsmConfiguration(true, MY_PORT, MY_CLIENT_ID); + AmazonDynamoDB dynamodb = AmazonDynamoDBClientBuilder.standard() + .withClientSideMonitoringConfigurationProvider(new StaticCsmConfigurationProvider(csmConfig)) + .build(); + +.. _csm-enable-agent-environ: + +Option 2: Set Environment Variables +----------------------------------- + +If :code:`AWS_CSM_ENABLED` is not set, the SDK first checks the profile specified in +the environment variable under :code:`AWS_PROFILE` to determine if |SDKM| is enabled. +By default this is set to ``false``. + +To turn on |SDKM|, add the following to your environmental variables. + +.. code-block:: ini + + export AWS_CSM_ENABLED=true + +:ref:`Other configuration settings` are available. + +Note: Enabling |SDKM| does not configure your credentials to use an AWS service. + +.. _csm-enable-agent-java-prop: + +Option 3: Set Java System Property +---------------------------------- + +If no |SDKM| configuration is found in the environment variables, +the SDK looks at certain Java system properties. + +To turn on |SDKM|, pass the following system property flag when you execute your application. + +.. code-block:: ini + + -Dcom.amazonaws.sdk.csm.enabled="true" + +You can also set the value programmatically using the Properties object. + +.. code-block:: java + + Properties props = System.getProperties(); + props.setProperty("com.amazonaws.sdk.csm.enabled", "true"); + +:ref:`Other configuration settings` are available. + +Note: Enabling |SDKM| does not configure your credentials to use an AWS service. + +.. _csm-enable-agent-shared-config: + +Option 4: AWS Shared Config File +-------------------------------- + +If no |SDKM| configuration is found in the environment variables or the Java system properties, +the SDK looks for your default AWS profile field. If :code:`AWS_DEFAULT_PROFILE` is set to +something other than default, update that profile. +To enable |SDKM|, add :code:`csm_enabled` to the shared config file located at :file:`~/.aws/config`. + +.. code-block:: ini + + [default] + csm_enabled = true + + [profile aws_csm] + csm_enabled = true + +:ref:`Other configuration settings` are available. + +Note: Enabling |SDKM| is independent from configuring your credentials to use an AWS service. You can use a different profile to authenticate. + +.. _csm-update-agent: + +Update a |CW| Agent +=================== + +To make changes to the port, you need to set the values and then restart any AWS jobs that are currently active. + +Option 1: Set Environment Variables +----------------------------------- + +Most services use +the default port. But if your service requires a unique port ID, add `AWS_CSM_PORT=[port_number]`, to the host's environment variables. + +.. code-block:: shell + + export AWS_CSM_ENABLED=true + export AWS_CSM_PORT=1234 + +Option 2: Set Java System Property +----------------------------------- + +Most services use the default port. +But if your service requires a unique port ID, specify the `-Dcom.amazonaws.sdk.csm.port=[port_number]` +system properties flag when executing your application. + +.. code-block:: ini + + com.amazonaws.sdk.csm.enabled=true + com.amazonaws.sdk.csm.port=1234 + +Option 3: AWS Shared Config File +----------------------------------- + +Most services use the default port. But if your service requires a +unique port ID, add `csm_port = [port_number]` to `~/.aws/config`. + +.. code-block:: ini + + [default] + csm_enabled = false + csm_port = 1234 + + [profile aws_csm] + csm_enabled = false + csm_port = 1234 + +Restart |SDKM| +-------------- + +To restart a job, run the following commands. + +.. code-block:: shell + + amazon-cloudwatch-agent-ctl –a stop; + amazon-cloudwatch-agent-ctl –a start; + + +.. _csm-disable-agent: + +Disable |SDKM| +============== + +To turn off |SDKM|, set `csm_enabled` to `false` in your environment variables, or in your AWS Shared config file located at :file:`~/.aws/config`. +Then restart your |CW| agent so that the changes can take effect. + +**Environment Variables** + +.. code-block:: shell + + export AWS_CSM_ENABLED=false + + +**AWS Shared Config File** + +Remove `csm_enabled` from the profiles in your AWS Shared config file located at :file:`~/.aws/config`. + +.. note:: Environment variables override the AWS Shared config file. If |SDKM| is enabled in the environment variables, the |SDKM| remain enabled. + +.. code-block:: ini + + [default] + csm_enabled = false + + [profile aws_csm] + csm_enabled = false + +To disable |SDKM|, use the following command to stop |CW| agent. + +.. code-block:: shell + + sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop && + echo "Done" + +If you are using other |CW| features, restart the |CW| agent with the following command. + +.. code-block:: shell + + amazon-cloudwatch-agent-ctl –a start; + + +Restart |SDKM| +-------------- + +To restart a |SDKM|, run the following commands. + +.. code-block:: shell + + amazon-cloudwatch-agent-ctl –a stop; + amazon-cloudwatch-agent-ctl –a start; + + +Definitions for |SDKM| +====================== + +You can use the following descriptions of |SDKM| to interpret your results. In general, these metrics are available for review +with your Technical Account Manager during regular business reviews. AWS Support resources and your Technical Account Manager +should have access to SDK Metrics data to help you resolve cases, but if you discover data that is confusing or unexpected, but +doesn’t seem to be negatively impacting your applications’ performance, it is best to review that data during scheduled +business reviews. + +.. list-table:: + :widths: 1 2 + :header-rows: 1 + + * - Metric: + - CallCount + + * - Definition + - Total number of successful or failed API calls from your code to AWS services + + * - How to use it + - Use it as a baseline to correlate with other metrics like errors or throttling. + + +.. list-table:: + :widths: 1 2 + :header-rows: 1 + + * - Metric: + - ClientErrorCount + + * - Definition + - Number of API calls that fail with client errors (4xx HTTP response codes). *Examples: Throttling, Access denied, S3 bucket does not exist, and Invalid parameter value.* + + * - How to use it + - Except in certain cases related to throttling (ex. when throttling occurs due to a limit that needs to be increased) this metric can indicate something in your application that needs to be fixed. + + +.. list-table:: + :widths: 1 2 + :header-rows: 1 + + * - Metric: + - ConnectionErrorCount + + * - Definition + - Number of API calls that fail because of errors connecting to the service. These can be caused by network issues between the customer application and AWS services including load balancers, DNS failures, transit providers. In some cases, AWS issues may result in this error. + + * - How to use it + - Use this metric to determine whether issues are specific to your application or are caused by your infrastructure and/or network. High ConnectionErrorCount could also indicate short timeout values for API calls. + + +.. list-table:: + :widths: 1 2 + :header-rows: 1 + + * - Metric: + - ThrottleCount + + * - Definition + - Number of API calls that fail due to throttling by AWS services. + + * - How to use it + - Use this metric to assess if your application has reached throttle limits, as well as to determine the cause of retries and application latency. Consider distributing calls over a window instead of batching your calls. + + +.. list-table:: + :widths: 1 2 + :header-rows: 1 + + * - Metric: + - ServerErrorCount + + * - Definition + - Number of API calls that fail due to server errors (5xx HTTP response codes) from AWS Services. These are typically caused by AWS services. + + * - How to use it + - Determine cause of SDK retries or latency. This metric will not always indicate that AWS services are at fault, as some AWS teams classify latency as an HTTP 503 response. + +.. list-table:: + :widths: 1 2 + :header-rows: 1 + + * - Metric: + - EndToEndLatency + + * - Definition + - Total time for your application to make a call using the AWS SDK, inclusive of retries. In other words, regardless of whether it is successful after several attempts, or as soon as a call fails due to an unretriable error. + + * - How to use it + - Determine how AWS API calls contribute to your application’s overall latency. Higher than expected latency may be caused by issues with network, firewall, or other configuration settings, or by latency that occurs as a result of SDK retries. From bc1bc581286f4feb0328885c2907a2ffde2c8ef1 Mon Sep 17 00:00:00 2001 From: Soo Sung Date: Fri, 15 Mar 2019 10:32:44 -0700 Subject: [PATCH 121/225] updating client shutdown recommendation --- doc_source/creating-clients.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc_source/creating-clients.rst b/doc_source/creating-clients.rst index fe1b14b..d35a445 100644 --- a/doc_source/creating-clients.rst +++ b/doc_source/creating-clients.rst @@ -139,8 +139,10 @@ Client Lifecycle ================ Service clients in the SDK are thread-safe and, for best performance, you should treat them as -long-lived objects. Each client has its own connection pool resource that is shut down when the -client is garbage collected. To explicitly shut down a client, call the +long-lived objects. Each client has its own connection pool resource. +Explicitly shut down clients when they are no longer needed to avoid resource leaks. + +To explicitly shut down a client, call the :methodname:`shutdown` method. After calling :methodname:`shutdown`, all client resources are released and the client is unusable. @@ -151,4 +153,3 @@ released and the client is unusable. AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); ddb.shutdown(); // Client is now unusable - From d57059f3afcde8c267da37b1d97c2e9125672970 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Tue, 16 Apr 2019 17:06:15 -0700 Subject: [PATCH 122/225] Updating the description of the Developer Guide to match documentation hub --- doc_source/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/index.rst b/doc_source/index.rst index 8abe472..4c68e99 100644 --- a/doc_source/index.rst +++ b/doc_source/index.rst @@ -13,7 +13,7 @@ ########## .. meta:: - :description: Developer Guide for the AWS SDK for Java + :description: Describes the various features of the SDK and how to use them. :keywords: java, sdk, aws .. toctree:: From 37a07dd72aef691d4f5927830dd9afc9ca3f8a1b Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Wed, 1 May 2019 13:41:25 -0700 Subject: [PATCH 123/225] updating STS client --- doc_source/prog-services-sts.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/prog-services-sts.rst b/doc_source/prog-services-sts.rst index 59e7400..666f305 100644 --- a/doc_source/prog-services-sts.rst +++ b/doc_source/prog-services-sts.rst @@ -66,7 +66,7 @@ Retrieve temporary security credentials from |STS| .. code-block:: java - AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(); + AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClientBuilder().standard().build(); When creating the client with no arguments, the default credential provider chain is used to retrieve credentials. You can provide a specific credential provider if you want. For more From 14f8bb46d62aa28c9e10a9de4f3e7e97aff1d308 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Tue, 7 May 2019 12:19:51 -0700 Subject: [PATCH 124/225] Removing dead link --- doc_source/section-client-configuration.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/doc_source/section-client-configuration.rst b/doc_source/section-client-configuration.rst index 045e96f..a552071 100644 --- a/doc_source/section-client-configuration.rst +++ b/doc_source/section-client-configuration.rst @@ -127,5 +127,4 @@ explicitly raise the maximum TCP buffer size limit. Many resources are available to help with configuring TCP buffer sizes and operating system-specific TCP settings, including the following: -* `TCP Tuning and Network Troubleshooting `_ * `Host Tuning `_ From 16b6a39f57588f4aafdb419a6816b49ab882f048 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Mon, 13 May 2019 12:59:43 -0700 Subject: [PATCH 125/225] Update swf-hello.rst --- doc_source/swf-hello.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index c605c1d..514fabe 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -83,7 +83,7 @@ signing up for AWS and creating an |IAM| user (recommended over using root accou This tutorial uses the terminal (command-line) to run the example code, and expects that you have your AWS credentials and configuration accessible to the SDK. The easiest way to do this is to use the environment variables :envvar:`AWS_ACCESS_KEY_ID` and :envvar:`AWS_SECRET_ACCESS_KEY`. You -should also set the :envvar:`AWS_DEFAULT_REGION` to the region you want to use. +should also set the :envvar:`AWS_REGION` to the region you want to use. For example, on |unixes|, set the variables this way: @@ -91,7 +91,7 @@ For example, on |unixes|, set the variables this way: export AWS_ACCESS_KEY_ID=your_access_key_id export AWS_SECRET_ACCESS_KEY=your_secret_access_key - export AWS_DEFAULT_REGION=us-east-1 + export AWS_REGION=us-east-1 To set these variables on Windows, use these commands: @@ -99,7 +99,7 @@ To set these variables on Windows, use these commands: set AWS_ACCESS_KEY_ID=your_access_key_id set AWS_SECRET_ACCESS_KEY=your_secret_access_key - set AWS_DEFAULT_REGION=us-east-1 + set AWS_REGION=us-east-1 .. important:: Substitute your own access key, secret access key and region information for the example values shown here. From 96104b64b09cf811503769fcb2eada04a6b7094f Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Mon, 13 May 2019 13:03:28 -0700 Subject: [PATCH 126/225] Updating the Environment Variable for Regions --- doc_source/java-dg-region-selection.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index 165d527..de6e25c 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -132,7 +132,7 @@ Default Region Provider Chain #. Any explicit region set by using :methodname:`withRegion` or :methodname:`setRegion` on the builder itself takes precedence over anything else. -#. The :envvar:`AWS_DEFAULT_REGION` environment variable is checked. If it's set, that region is +#. The :envvar:`AWS_REGION` environment variable is checked. If it's set, that region is used to configure the client. .. note:: This environment variable is set by the |LAM| container. From 0dfce3ab683a21b395b84d8c9bcdadd2c291304a Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Mon, 3 Jun 2019 12:23:34 -0700 Subject: [PATCH 127/225] fixing gradle BOM dependency instructions. --- doc_source/setup-project-gradle.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index 250619e..369109d 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -28,7 +28,7 @@ use Gradle's improved POM support feature for importing bill of materials (BOM) .. code-block:: groovy dependencies { - implementation 'com.amazonaws:aws-java-sdk-bom:1.11.228' + implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.228') } #. Specify the SDK modules that you'll be using in the *dependencies* section From a229c4a59ec7414c0c583c90ad9b12b4d48548cb Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Fri, 7 Jun 2019 17:54:43 -0700 Subject: [PATCH 128/225] Describe expected values when creating a DynamoDB table. --- doc_source/examples-dynamodb-tables.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc_source/examples-dynamodb-tables.rst b/doc_source/examples-dynamodb-tables.rst index 5a27dbd..faff57d 100644 --- a/doc_source/examples-dynamodb-tables.rst +++ b/doc_source/examples-dynamodb-tables.rst @@ -53,7 +53,8 @@ Create a Table Use the :aws-java-class:`DynamoDB client `'s :methodname:`createTable` method to create a new |DDB| table. You need to construct table attributes and a table schema, both of which are used to identify the primary key of your table. You -must also supply initial provisioned throughput values and a table name. +must also supply initial provisioned throughput values and a table name. Only define key table attributes +when creating your |DDB| table. .. note:: If a table with the name you chose already exists, an :aws-java-class:`AmazonServiceException` is thrown. @@ -71,7 +72,7 @@ must also supply initial provisioned throughput values and a table name. Create a Table with a Simple Primary Key ---------------------------------------- -This code creates a table with a simple primary key ("Name"). +This code creates a table with a simple primary key ("Name"). **Code** From 1bd4cc8b4555ab5e670e34cc3337c301d40fa4ec Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Tue, 25 Jun 2019 18:20:44 -0700 Subject: [PATCH 129/225] adding code snippet references to kms article --- doc_source/examples-crypto-kms.rst | 40 ++++++++++++------------ doc_source/examples-crypto-masterkey.rst | 28 ++++++----------- 2 files changed, 30 insertions(+), 38 deletions(-) diff --git a/doc_source/examples-crypto-kms.rst b/doc_source/examples-crypto-kms.rst index ab7c5bc..68bc328 100644 --- a/doc_source/examples-crypto-kms.rst +++ b/doc_source/examples-crypto-kms.rst @@ -41,8 +41,7 @@ Import the following classes for these examples. **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 16-31 +.. literalinclude:: s3.java1.s3_encrypt.import.txt :language: java .. _encryption-only-kms: @@ -57,8 +56,7 @@ managed key for encryption, pass the |KMS| key ID or alias to the **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 237-243 +.. literalinclude:: s3.java1.s3_encrypt.kms_encryption_only_build.txt :dedent: 8 :language: java @@ -67,8 +65,7 @@ Call the :methodname:`putObject` method on the |S3| encryption client to upload **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 247 +.. literalinclude:: s3.java1.s3_encrypt.kms_encryption_only_put_object.txt :dedent: 8 :language: java @@ -77,12 +74,11 @@ You can retrieve the object using the same client. This example calls the **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 249 +.. literalinclude:: s3.java1.s3_encrypt.kms_encryption_only_retrieve.txt :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _authenticated-encryption-kms: @@ -106,23 +102,21 @@ To enable this mode, specify the :classname:`AuthenticatedEncryption` value in t **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 257-263 +.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_builder.txt :dedent: 8 :language: java - + The :classname:`AuthenticatedEncryption` mode can retrieve unencrypted objects and objects encrypted with :classname:`EncryptionOnly` mode. The following example shows the |S3| encryption client retrieving an unencrypted object. **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 257-270 +.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_put_object.txt :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _strict-authenticated-encryption-kms: @@ -138,8 +132,15 @@ To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` valu **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 278-284 +.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_strict_builder.txt + :dedent: 8 + :language: java + +Call the :methodname:`putObject` method on the |S3| encryption client to upload objects. + +**Code** + +.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_strict_put_object.txt :dedent: 8 :language: java @@ -149,9 +150,8 @@ authenticated mode. **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 278-295 +.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_strict_exception.txt :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. +See the :sdk-examples-java-s3:`complete example ` on GitHub. diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index 7a211e3..92c06a7 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -40,8 +40,7 @@ Import the following classes for these examples. **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 16-24,26-31 +.. literalinclude:: s3.java1.s3_encrypt.import.txt :language: java .. _encryption-only: @@ -67,8 +66,7 @@ To use an asymmetric key or a key pair, simply pass the key pair to the same **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 217-223 +.. literalinclude:: s3.java1.s3_encrypt.encryption_only_asymetric_key_build.txt :dedent: 8 :language: java @@ -76,8 +74,7 @@ Call the :methodname:`putObject` method on the |S3| encryption client to upload **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 227 +.. literalinclude:: s3.java1.s3_encrypt.encryption_only_asymetric_key_put_object.txt :dedent: 8 :language: java @@ -86,12 +83,11 @@ You can retrieve the object using the same client. This example calls the **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 229 +.. literalinclude:: s3.java1.s3_encrypt.encryption_only_asymetric_key_retrieve.txt :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. +See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _authenticated-encryption: @@ -114,8 +110,7 @@ To enable this mode, specify the :classname:`AuthenticatedEncryption` value in t **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 67-72 +.. literalinclude:: s3.java1.s3_encrypt.strict_authenticated_encryption_build.txt :dedent: 8 :language: java @@ -125,8 +120,7 @@ objects encrypted with :classname:`EncryptionOnly` mode. The following example s **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 66-79 +.. literalinclude:: s3.java1.s3_encrypt.strict_authenticated_encryption.txt :dedent: 8 :language: java @@ -146,8 +140,7 @@ To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` valu **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 132-137 +.. literalinclude:: s3.java1.s3_encrypt.strict_authenticated_encryption_build.txt :dedent: 8 :language: java @@ -157,9 +150,8 @@ authenticated mode. **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 131-149 +.. literalinclude:: s3.java1.s3_encrypt.strict_authenticated_encryption.txt :dedent: 8 :language: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. +See the :sdk-examples-java-s3:`complete example ` on GitHub. From d2e6cad2ac4af451140b3ab755b7ba515ecc849b Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Tue, 25 Jun 2019 18:46:32 -0700 Subject: [PATCH 130/225] adding code snippet references to s3 articles --- doc_source/examples-s3-transfermanager.rst | 57 +++++++------------ .../examples-s3-website-configuration.rst | 18 ++---- 2 files changed, 25 insertions(+), 50 deletions(-) diff --git a/doc_source/examples-s3-transfermanager.rst b/doc_source/examples-s3-transfermanager.rst index 8a551e9..5828351 100644 --- a/doc_source/examples-s3-transfermanager.rst +++ b/doc_source/examples-s3-transfermanager.rst @@ -51,16 +51,14 @@ represents the file to upload. **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java - :lines: 16-18, 20 +.. literalinclude:: s3.java1.s3_xfer_mgr_upload.import.txt :language: java **Code** .. uploadFile() method in the example code... -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java - :lines: 93-97, 99, 101-105 +.. literalinclude:: s3.java1.s3_xfer_mgr_upload.single.txt :dedent: 8 :language: java @@ -90,16 +88,14 @@ providing the following: **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java - :lines: 16-17, 19-21 +.. literalinclude:: s3.java1.s3_xfer_mgr_upload.import.txt :language: java **Code** .. uploadFileList() method in the example code... -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java - :lines: 61-69, 71, 73-77 +.. literalinclude:: s3.java1.s3_xfer_mgr_upload.list_of_files.txt :dedent: 8 :language: java @@ -123,16 +119,14 @@ recursively (*true* or *false*). **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java - :lines: 16-20 +.. literalinclude:: s3.java1.s3_xfer_mgr_upload.import.txt :language: java **Code** .. uploadDir() method in the example code... -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java - :lines: 38-42, 44, 46-50 +.. literalinclude:: s3.java1.s3_xfer_mgr_upload.directory.txt :dedent: 8 :language: java @@ -167,16 +161,14 @@ Use the |xfermgr|'s :methodname:`download` method, providing the **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java - :lines: 16-18, 20 +.. literalinclude:: s3.java1.s3_xfer_mgr_download.import.txt :language: java **Code** .. downloadFile() method in the example code... -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java - :lines: 59-62, 64, 66-70 +.. literalinclude:: s3.java1.s3_xfer_mgr_download.single.txt :dedent: 8 :language: java @@ -198,16 +190,14 @@ into on your local system. If the named directory doesn't exist yet, it will be **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java - :lines: 16-17, 19-20 +.. literalinclude:: s3.java1.s3_xfer_mgr_download.import.txt :language: java **Code** .. downloadFile() method in the example code... -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java - :lines: 37-41, 43, 45-49 +.. literalinclude:: s3.java1.s3_xfer_mgr_download.directory.txt :dedent: 8 :language: java @@ -225,16 +215,14 @@ To copy an object from one S3 bucket to another, use the |xfermgr| :methodname:` **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrCopy.java - :lines: 16-18 +.. literalinclude:: s3.java1.s3_xfer_mgr_copy.import.txt :language: java **Code** .. copyObjectSimple() method in the example code... -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrCopy.java - :lines: 35-38, 40, 42-46 +.. literalinclude:: s3.java1.s3_xfer_mgr_copy.copy_object.txt :dedent: 8 :language: java @@ -253,8 +241,7 @@ occurs. .. the waitForCompletion() function in XferMgrProgress.java -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 35-46 +.. literalinclude:: s3.java1.s3_xfer_mgr_progress.wait_for_transfer.txt :dedent: 8 :language: java @@ -317,16 +304,14 @@ prints its final state. **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 22 +.. literalinclude:: s3.java1.s3_xfer_mgr_progress.import.txt :language: java **Code** .. the showTransferProgress() function in XferMgrProgress.java -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 56-62, 65-68, 71-74 +.. literalinclude:: s3.java1.s3_xfer_mgr_progress.poll.txt :dedent: 8 :language: java @@ -350,16 +335,14 @@ object. You can use the object to get the total bytes of the operation by callin **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 16-18, 23, 25 +.. literalinclude:: s3.java1.s3_xfer_mgr_progress.import.txt :language: java **Code** .. the uploadFileWithListener() function in XferMgrProgress.java -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 146-150, 153-155, 158-168 +.. literalinclude:: s3.java1.s3_xfer_mgr_progress.progress_listener.txt :dedent: 8 :language: java @@ -379,16 +362,14 @@ subtransfer. **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 23-24, 26-27 +.. literalinclude:: s3.java1.s3_xfer_mgr_progress.import.txt :language: java **Code** .. the showMultiUploadProgress() function in XferMgrProgress.java -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java - :lines: 83-84 +.. literalinclude:: s3.java1.s3_xfer_mgr_progress.substranferes.txt :dedent: 8 :language: java diff --git a/doc_source/examples-s3-website-configuration.rst b/doc_source/examples-s3-website-configuration.rst index 1a9329f..2b31a3c 100644 --- a/doc_source/examples-s3-website-configuration.rst +++ b/doc_source/examples-s3-website-configuration.rst @@ -33,15 +33,13 @@ Setting an index document is *required*; all other parameters are optional. **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetWebsiteConfiguration.java - :lines: 15-18 +.. literalinclude:: s3.java1.s3_set_website_config.import.txt :language: java **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetWebsiteConfiguration.java +.. literalinclude:: s3.java1.s3_set_website_config.main.txt :dedent: 8 - :lines: 31-50 :language: java .. note:: Setting a website configuration does not modify the access permissions for your bucket. @@ -65,15 +63,13 @@ bucket, then :code-java:`null` will be returned. **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetWebsiteConfiguration.java - :lines: 15-18 +.. literalinclude:: s3.java1.s3_get_website_config.import.txt :language: java **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/GetWebsiteConfiguration.java +.. literalinclude:: s3.java1.s3_get_website_config.main.txt :dedent: 8 - :lines: 30-46 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. @@ -88,15 +84,13 @@ configuration from. **Imports** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteWebsiteConfiguration.java - :lines: 15-17 +.. literalinclude:: s3.java1.s3_delete_website_config.import.txt :language: java **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteWebsiteConfiguration.java +.. literalinclude:: s3.java1.s3_delete_website_config.main.txt :dedent: 8 - :lines: 29-36 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. From 34080457441ffe592038535fdc79734ede397d21 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Wed, 26 Jun 2019 18:15:17 -0700 Subject: [PATCH 131/225] adding missing snippet reference --- doc_source/examples-crypto-masterkey.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index 92c06a7..8e366ba 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -55,8 +55,7 @@ the :class:`KeyGenerator` Java class generate a symmetric private key. **Code** -.. literalinclude:: example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java - :lines: 198-204 +.. literalinclude:: s3.java1.s3_encrypt.encryption_only.txt :dedent: 8 :language: java From 7eb8bd9ef347c04fdcb4d98543fc7f6e45171243 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Wed, 26 Jun 2019 18:31:34 -0700 Subject: [PATCH 132/225] Change reference to code snippet --- doc_source/examples-crypto-masterkey.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index 8e366ba..bebc77e 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -109,7 +109,7 @@ To enable this mode, specify the :classname:`AuthenticatedEncryption` value in t **Code** -.. literalinclude:: s3.java1.s3_encrypt.strict_authenticated_encryption_build.txt +.. literalinclude:: s3.java1.s3_encrypt.authenticated_encryption_build.txt :dedent: 8 :language: java @@ -119,7 +119,7 @@ objects encrypted with :classname:`EncryptionOnly` mode. The following example s **Code** -.. literalinclude:: s3.java1.s3_encrypt.strict_authenticated_encryption.txt +.. literalinclude:: s3.java1.s3_encrypt.authenticated_encryption.txt :dedent: 8 :language: java From e9a514c3f71686427f79c31428f5e0f093fdda5a Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Tue, 16 Jul 2019 18:33:37 -0700 Subject: [PATCH 133/225] adding snippet references for SWF --- doc_source/swf-graceful-shutdown.rst | 3 +- doc_source/swf-hello.rst | 65 ++++++++++------------------ 2 files changed, 25 insertions(+), 43 deletions(-) diff --git a/doc_source/swf-graceful-shutdown.rst b/doc_source/swf-graceful-shutdown.rst index baa3684..73cf8d3 100644 --- a/doc_source/swf-graceful-shutdown.rst +++ b/doc_source/swf-graceful-shutdown.rst @@ -30,9 +30,8 @@ attempt a graceful shutdown of the activity worker. Here is the complete code: -.. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/ActivityWorkerWithGracefulShutdown.java +.. literalinclude:: swf.java.activity_worker_with_graceful_shutdown.complete.txt :language: java - :lines: 16- In this version, the polling code that was in the ``main`` function in the original version has been moved into its own method, ``pollAndExecute``. diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index 514fabe..1c7b088 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -185,17 +185,15 @@ interest of time, these steps *will be implied every time you add a new file to #. Add a :code-java:`package` declaration to the beginning of each file to declare its namespace. The example project uses: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/HelloTypes.java + .. literalinclude:: swf.java.hello_types.package.txt :language: java - :lines: 16 #. Add :code-java:`import` declarations for the :aws-java-class:`AmazonSimpleWorkflowClient ` class and for multiple classes in the ``com.amazonaws.services.simpleworkflow.model`` namespace. To simplify things, we'll use: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/HelloTypes.java + .. literalinclude:: swf.java.hello_types.import.txt :language: java - :lines: 18-20 .. _swf-hello-hellotypes: @@ -212,9 +210,8 @@ your activity and workflow types, the domain name and the task list name. #. Declare the :classname:`HelloTypes` class and provide it with values to use for your registered activity and workflow types: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/HelloTypes.java + .. literalinclude:: swf.java.hello_types.string_declare.txt :language: java - :lines: 22-28, 83 These values will be used throughout the code. @@ -222,18 +219,16 @@ your activity and workflow types, the domain name and the task list name. ` class. This is the basic interface to the |SWF| methods provided by the |sdk-java|. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/HelloTypes.java + .. literalinclude:: swf.java.hello_types.client.txt :language: java - :lines: 30-31 :dedent: 4 #. Add a new function to register a SWF domain. A *domain* is a logical container for a number of related SWF activity and workflow types. SWF components can only communicate with each other if they exist within the same domain. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/HelloTypes.java + .. literalinclude:: swf.java.hello_types.new_function.txt :language: java - :lines: 33-42 :dedent: 4 When you register a domain, you provide it with a *name* (any set of 1 |ndash| 256 characters @@ -254,9 +249,8 @@ your activity and workflow types, the domain name and the task list name. #. Add a function to register a new activity type. An *activity* represents a unit of work in your workflow. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/HelloTypes.java + .. literalinclude:: swf.java.hello_types.new_activity_type.txt :language: java - :lines: 44-60 :dedent: 4 An activity type is identified by a *name* and a *version*, which are used to uniquely identify @@ -276,9 +270,8 @@ your activity and workflow types, the domain name and the task list name. #. Add a function to register a new workflow type. A *workflow*, also known as a *decider* represents the logic of your workflow's execution. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/HelloTypes.java + .. literalinclude:: swf.java.hello_types.new_workflow_type.txt :language: java - :lines: 62-76 :dedent: 4 Similar to activity types, workflow types are identified by a *name* and a *version* and also @@ -292,9 +285,8 @@ your activity and workflow types, the domain name and the task list name. #. Finally, make the class executable by providing it a :code-java:`main` method, which will register the domain, the activity type, and the workflow type in turn: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/HelloTypes.java + .. literalinclude:: swf.java.hello_types.main.txt :language: java - :lines: 78-82 :dedent: 4 You can :ref:`build ` and :ref:`run ` the application now @@ -319,19 +311,20 @@ We'll implement a simple activity worker that drives a single activity. #. Open your text editor and create the file :file:`ActivityWorker.java`, adding a package declaration and imports according to the :ref:`common steps `. + + .. literalinclude:: swf.java.activity_worker.import.txt + :language: java #. Add the :classname:`ActivityWorker` class to the file, and give it a data member to hold a SWF client that we'll use to interact with |SWF|: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/ActivityWorker.java + .. literalinclude:: swf.java.activity_worker.client.txt :language: java - :lines: 22-24, 75 #. Add the method that we'll use as an activity: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/ActivityWorker.java + .. literalinclude:: swf.java.activity_worker.sayHello.txt :language: java - :lines: 26-28 :dedent: 4 The activity simply takes a string, combines it into a greeting and returns the result. Although @@ -341,9 +334,8 @@ We'll implement a simple activity worker that drives a single activity. #. Add a :methodname:`main` method that we'll use as the activity task polling method. We'll start it by adding some code to poll the task list for activity tasks: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/ActivityWorker.java + .. literalinclude:: swf.java.activity_worker.poll_method.txt :language: java - :lines: 30-42, 74 :dedent: 4 The activity receives tasks from |SWF| by calling the SWF client's @@ -358,10 +350,9 @@ We'll implement a simple activity worker that drives a single activity. :methodname:`main` method, right after the code that polls for the task and retrieves its task token. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/ActivityWorker.java + .. literalinclude:: swf.java.activity_worker.process_tasks.txt :language: java - :lines: 44-72 - :dedent: 12 + :dedent: 8 If the task token is not :code-java:`null`, then we can start running the activity method (:methodname:`sayHello`), providing it with the input data that was sent with the task. @@ -397,26 +388,23 @@ schedule a new activity or not) and takes an appropriate action (such as schedul #. Add a few additional imports to the file: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/WorkflowWorker.java + .. literalinclude:: swf.java.workflow_worker.import.txt :language: java - :lines: 21-23 #. Declare the :classname:`WorkflowWorker` class, and create an instance of the :aws-java-class:`AmazonSimpleWorkflowClient ` class used to access SWF methods. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/WorkflowWorker.java + .. literalinclude:: swf.java.workflow_worker.client.txt :language: java - :lines: 25-27, 139 #. Add the :methodname:`main` method. The method loops continuously, polling for decision tasks using the SWF client's :methodname:`pollForDecisionTask` method. The :aws-java-class:`PollForDecisionTaskRequest ` provides the details. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/WorkflowWorker.java + .. literalinclude:: swf.java.workflow_worker.main.txt :language: java - :lines: 29-52 :dedent: 4 Once a task is received, we call its :methodname:`getTaskToken` method, which returns a string @@ -428,9 +416,8 @@ schedule a new activity or not) and takes an appropriate action (such as schedul #. Add the :methodname:`executeDecisionTask` method, taking the task token (a :classname:`String`) and the :classname:`HistoryEvent` list. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/WorkflowWorker.java + .. literalinclude:: swf.java.workflow_worker.execute_decision_task_token.txt :language: java - :lines: 60-67, 138 :dedent: 4 We also set up some data members to keep track of things such as: @@ -447,9 +434,8 @@ schedule a new activity or not) and takes an appropriate action (such as schedul objects that were sent with the task, based on the event type reported by the :methodname:`getEventType` method. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/WorkflowWorker.java + .. literalinclude:: swf.java.workflow_worker.execute_decision_task_history_events.txt :language: java - :lines: 69-102 :dedent: 8 For the purposes of our workflow, we are most interested in: @@ -480,9 +466,8 @@ schedule a new activity or not) and takes an appropriate action (such as schedul #. After the :code-java:`switch` statement, add more code to respond with an appropriate *decision* based on the task that was received. - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/WorkflowWorker.java + .. literalinclude:: swf.java.workflow_worker.task_decision.txt :language: java - :lines: 104-132 :dedent: 8 * If the activity hasn't been scheduled yet, we respond with a :classname:`ScheduleActivityTask` @@ -505,9 +490,8 @@ schedule a new activity or not) and takes an appropriate action (such as schedul processing the task. Add this code at the end of the :methodname:`executeDecisionTask` method that we've been writing: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/WorkflowWorker.java + .. literalinclude:: swf.java.workflow_worker.return_decision_objects.txt :language: java - :lines: 134-138 :dedent: 8 The SWF client's :methodname:`respondDecisionTaskCompleted` method takes the task token that @@ -524,9 +508,8 @@ Finally, we'll write some code to start the workflow execution. #. Add the :classname:`WorkflowStarter` class: - .. literalinclude:: example_code/swf/src/main/java/aws/example/helloswf/WorkflowStarter.java + .. literalinclude:: swf.java.workflow_starter.complete.txt :language: java - :lines: 22- The :classname:`WorkflowStarter` class consists of a single method, :methodname:`main`, which takes an optional argument passed on the command-line as input data for the workflow. From 90c03c5461f76ca90dd25b0273a8890bc390d2b4 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Tue, 23 Jul 2019 14:32:39 -0700 Subject: [PATCH 134/225] Matching the package structure to the example. --- doc_source/swf-hello.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index 1c7b088..d087ba9 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -115,7 +115,7 @@ Create a SWF project .. code-block:: sh mvn archetype:generate -DartifactId=helloswf \ - -DgroupId=example.swf.hello -DinteractiveMode=false + -DgroupId=aws.example.helloswf -DinteractiveMode=false This will create a new project with a standard maven project structure: @@ -126,9 +126,9 @@ Create a SWF project └── src ├── main │   └── java - │   └── example - │   └── swf - │   └── hello + │   └── aws + │   └── example + │   └── helloswf │   └── App.java └── test └── ... From e3353e081b83a81077062946d44bdeea7e1ee251 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Thu, 25 Jul 2019 14:26:40 -0700 Subject: [PATCH 135/225] Edit Pass (#45) * fixing capitalization errors * spelling fix * spelling fix --- doc_source/examples-ec2-regions-zones.rst | 8 ++++---- doc_source/swf-basics.rst | 2 +- doc_source/swf-hello.rst | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc_source/examples-ec2-regions-zones.rst b/doc_source/examples-ec2-regions-zones.rst index 553b0dd..4d93ba1 100644 --- a/doc_source/examples-ec2-regions-zones.rst +++ b/doc_source/examples-ec2-regions-zones.rst @@ -21,11 +21,11 @@ Using Regions and Availability Zones Describing Regions ================== -To list the regions available to your account, call the |ec2client|'s :methodname:`describeRegions` +To list the Regions available to your account, call the |ec2client|'s :methodname:`describeRegions` method. It returns a :aws-java-class:`DescribeRegionsResult `. Call the returned object's :methodname:`getRegions` method to get a list of :aws-java-class:`Region ` objects that represent -each region. +each Region. **Imports** @@ -46,12 +46,12 @@ See the :sdk-examples-java-ec2:`complete example ` Describing Availability Zones ============================= -To list each availability zone available to your account, call the |ec2client|'s +To list each Availability Zone available to your account, call the |ec2client|'s :methodname:`describeAvailabilityZones` method. It returns a :aws-java-class:`DescribeAvailabilityZonesResult `. Call its :methodname:`getAvailabilityZones` method to get a list of :aws-java-class:`AvailabilityZone ` -objects that represent each availability zone. +objects that represent each Availability Zone. **Imports** diff --git a/doc_source/swf-basics.rst b/doc_source/swf-basics.rst index 08cb056..58ed4c9 100644 --- a/doc_source/swf-basics.rst +++ b/doc_source/swf-basics.rst @@ -34,7 +34,7 @@ Basic |SWF| applications will require the following dependencies, which are incl you have, but the versions that are supplied with the SDK have been tested for compatibility, and are the ones you should use. -|jflow| applications require additonal setup, *and* additional dependencies. See the |jflow-dg|_ for +|jflow| applications require additional setup, *and* additional dependencies. See the |jflow-dg|_ for more information about using the framework. Imports diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index d087ba9..eff6f5d 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -200,7 +200,7 @@ interest of time, these steps *will be implied every time you add a new file to Register a domain, workflow and activity types ---------------------------------------------- -We'll begin by creating a new executeable class, :file:`HelloTypes.java`. This file will contain shared +We'll begin by creating a new executable class, :file:`HelloTypes.java`. This file will contain shared data that different parts of your workflow will need to know about, such as the name and version of your activity and workflow types, the domain name and the task list name. From 46810d1524ca20587d1d7ab3f1ee8e457f14251c Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Tue, 30 Jul 2019 10:53:15 -0700 Subject: [PATCH 136/225] Fixing spelling mistakes --- doc_source/swf-hello.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/swf-hello.rst b/doc_source/swf-hello.rst index eff6f5d..f39befb 100644 --- a/doc_source/swf-hello.rst +++ b/doc_source/swf-hello.rst @@ -580,7 +580,7 @@ applications. java -cp target/helloswf-1.0.jar:/path/to/sdk/lib/*:/path/to/sdk/third-party/lib/* \ example.swf.hello.HelloTypes -The style that you use is up to you. If you had no trouble building the code, buth then try to run +The style that you use is up to you. If you had no trouble building the code, both then try to run the examples and get a series of "NoClassDefFound" errors, it is likely because the classpath is set incorrectly. From 3e4552789317bf16e106f1bee02d53eb00119b19 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Tue, 30 Jul 2019 11:01:11 -0700 Subject: [PATCH 137/225] Cross referencing V2 --- doc_source/prog-services.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index b1bbd18..35f2cc2 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -12,7 +12,14 @@ |sdk-java| Code Examples ######################## -This section provides tutorials and examples of using the |sdk-java| to program AWS services. +This section provides tutorials and examples of using the |sdk-java| v1 to program AWS services. + +AWS SDK for Java 2.x +===================== +In 2018, AWS released |sdk-java| v2. For more AWS examples, see the `AWS SDK for Java 2.x Developer Guide`_. + +.. _`aws sdk for java 2.x developer guide`: http://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/welcome.html + .. tip:: See :ref:`additional-resources` for more examples and additional resources available for |sdk-java| developers! From 261d3e76b840e3bcd66a39e6738e7e2e6c2a52fb Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Fri, 2 Aug 2019 16:15:45 -0700 Subject: [PATCH 138/225] fixing complete code example to use correct syntax --- doc_source/setup-project-gradle.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index 369109d..d8ff42e 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -59,7 +59,7 @@ Here's the complete :file:`build.gradle` file: } dependencies { - implementation 'com.amazonaws:aws-java-sdk-bom:1.11.228' + implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.228') implementation 'com.amazonaws:aws-java-sdk-s3' testCompile group: 'junit', name: 'junit', version: '4.11' } From 9542a2c7bc45821905e0e65d6d5ea9ffc30b68d9 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Tue, 6 Aug 2019 14:55:32 -0700 Subject: [PATCH 139/225] updating to Spot Instance --- doc_source/tutorial-spot-adv-java.rst | 26 ++++++++++----------- doc_source/tutorial-spot-instances-java.rst | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/doc_source/tutorial-spot-adv-java.rst b/doc_source/tutorial-spot-adv-java.rst index 58b817d..2d8a13a 100644 --- a/doc_source/tutorial-spot-adv-java.rst +++ b/doc_source/tutorial-spot-adv-java.rst @@ -16,9 +16,9 @@ Tutorial: Advanced |EC2| Spot Request Management ################################################ -|EC2| spot instances allow you to bid on unused |EC2| capacity and run those instances for as long +|EC2| Spot Instances allow you to bid on unused |EC2| capacity and run those instances for as long as your bid exceeds the current *spot price*. |EC2| changes the spot price periodically based on -supply and demand. For more information about spot instances, see :ec2-ug:`Spot Instances +supply and demand. For more information about Spot Instances, see :ec2-ug:`Spot Instances ` in the |EC2-ug|. @@ -139,7 +139,7 @@ sample. Note you only need to run this application once to create a new security .. _tutor-spot-adv-req-opts: -Detailed spot instance request creation options +Detailed Spot Instance request creation options =============================================== As we explained in :doc:`tutorial-spot-instances-java`, you need to build your request with an @@ -149,7 +149,7 @@ Let's start by creating a :code:`RequestSpotInstanceRequest` object. The request number of instances you want and the bid price. Additionally, we need to set the :code:`LaunchSpecification` for the request, which includes the instance type, AMI ID, and security group you want to use. After the request is populated, we call the :code:`requestSpotInstances` -method on the :code:`AmazonEC2Client` object. An example of how to request a Spot instance follows. +method on the :code:`AmazonEC2Client` object. An example of how to request a Spot Instance follows. (The following code is the same as what we used in the first tutorial.) @@ -265,13 +265,13 @@ period is shown in the following code. .. _tutor-spot-adv-grouping: -Grouping your |EC2| spot instance requests +Grouping your |EC2| Spot Instance requests ========================================== -You have the option of grouping your Spot instance requests in several different ways. We'll look at +You have the option of grouping your Spot Instance requests in several different ways. We'll look at the benefits of using launch groups, Availability Zone groups, and placement groups. -If you want to ensure your Spot instances are all launched and terminated together, then you have +If you want to ensure your Spot Instances are all launched and terminated together, then you have the option to leverage a launch group. A launch group is a label that groups a set of bids together. All instances in a launch group are started and terminated together. Note, if instances in a launch group have already been fulfilled, there is no guarantee that new instances launched with the same @@ -396,7 +396,7 @@ example shows you how to set an Availability Zone. ec2.requestSpotInstances(requestRequest); Lastly, you can specify a :emphasis:`placement group` if you are using High Performance Computing -(HPC) Spot instances, such as cluster compute instances or cluster GPU instances. Placement groups +(HPC) Spot Instances, such as cluster compute instances or cluster GPU instances. Placement groups provide you with lower latency and high-bandwidth connectivity between the instances. An example of how to set a placement group follows. @@ -452,7 +452,7 @@ class. How to persist a root partition after interruption or termination ================================================================= -One of the easiest ways to manage interruption of your Spot instances is to ensure that your data is +One of the easiest ways to manage interruption of your Spot Instances is to ensure that your data is checkpointed to an |EBSlong| (|EBS|) volume on a regular cadence. By checkpointing periodically, if there is an interruption you will lose only the data created since the last checkpoint (assuming no other non-idempotent actions are performed in between). To make this process easier, you can @@ -528,7 +528,7 @@ that we include in the launch specification. Assuming you wanted to re-attach this volume to your instance on startup, you can also use the block device mapping settings. Alternatively, if you attached a non-root partition, you can specify the -Amazon EBS volumes you want to attach to your Spot instance after it resumes. You do this simply by +Amazon EBS volumes you want to attach to your Spot Instance after it resumes. You do this simply by specifying a snapshot ID in your :code:`EbsBlockDevice` and alternative device name in your :code:`BlockDeviceMapping` objects. By leveraging block device mappings, it can be easier to bootstrap your instance. @@ -605,7 +605,7 @@ Canceling spot requests and terminating instances Canceling a spot request ------------------------ -To cancel a spot instance request, call :methodname:`cancelSpotInstanceRequests` on the EC2 client +To cancel a Spot Instance request, call :methodname:`cancelSpotInstanceRequests` on the EC2 client with a :aws-java-class:`CancelSpotInstanceRequestsRequest ` object. @@ -613,10 +613,10 @@ with a :aws-java-class:`CancelSpotInstanceRequestsRequest :lines: 18-27 :language: java -Terminating spot instances +Terminating Spot Instances -------------------------- -You can terminate any spot instances that are running by passing their IDs to the EC2 client's +You can terminate any Spot Instances that are running by passing their IDs to the EC2 client's :methodname:`terminateInstances()` method. .. literalinclude:: snippets/ec2/cancel-terminate-spot-request.java diff --git a/doc_source/tutorial-spot-instances-java.rst b/doc_source/tutorial-spot-instances-java.rst index 71341ec..936607a 100644 --- a/doc_source/tutorial-spot-instances-java.rst +++ b/doc_source/tutorial-spot-instances-java.rst @@ -188,7 +188,7 @@ always determine the latest version AMI by following these steps: Alternatively, you can use the :code:`DescribeImages` API, but leveraging that command is outside the scope of this tutorial. -There are many ways to approach bidding for Spot instances; to get a broad overview of the various +There are many ways to approach bidding for Spot Instances; to get a broad overview of the various approaches you should view the `Bidding for Spot Instances `_ video. However, to get started, we'll describe three common strategies: bid to ensure cost is less than on-demand pricing; From 4fb3ab0146aa59aa9420455fccb7bc7d94e89800 Mon Sep 17 00:00:00 2001 From: Jami Schwarzwalder Date: Wed, 7 Aug 2019 17:20:35 -0700 Subject: [PATCH 140/225] Updating information about Spot Instances --- doc_source/tutorial-spot-instances-java.rst | 23 ++++++++++++--------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/doc_source/tutorial-spot-instances-java.rst b/doc_source/tutorial-spot-instances-java.rst index 936607a..937f6d3 100644 --- a/doc_source/tutorial-spot-instances-java.rst +++ b/doc_source/tutorial-spot-instances-java.rst @@ -17,11 +17,11 @@ Tutorial: |EC2| Spot Instances Overview ======== -Spot Instances allow you to bid on unused |EC2long| (|EC2|) capacity and run the acquired instances -for as long as your bid exceeds the current :emphasis:`Spot Price`. |EC2| changes the Spot Price -periodically based on supply and demand, and customers whose bids meet or exceed it gain access to -the available Spot Instances. Like On-Demand Instances and Reserved Instances, Spot Instances -provide you another option for obtaining more compute capacity. +Spot Instances enable you to bid on unused |EC2long| (|EC2|) capacity t up to 90% versus the On-Demand +Instance price and run the acquired instances for as long as your bid exceeds the current +:emphasis:`Spot Price`. |EC2| changes the Spot Price periodically based on supply and demand, and customers +whose bids meet or exceed it gain access to the available Spot Instances. Like On-Demand Instances and +Reserved Instances, Spot Instances provide you another option for obtaining more compute capacity. Spot Instances can significantly lower your |EC2| costs for batch processing, scientific research, image processing, video encoding, data and web crawling, financial analysis, and testing. @@ -207,10 +207,10 @@ quickly as possible. On-Demand price), anticipating that your one-time Spot request would most likely be fulfilled and run for enough consecutive compute time to complete the job. - * Or, you could bid at the lower end of the price range, and plan to combine many instances - launched over time through a persistent request. The instances would run long enough--in - aggregate--to complete the job at an even lower total cost. (We will explain how to automate - this task later in this tutorial.) + * Or, you could specify the amount you are willing to pay for Spot Instances as a % of the On-Demand Instance price + , and plan to combine many instances launched over time through a persistent request. If the specified + price is exceeded, then the Spot Instance will terminate. (We will explain how to automate this task + later in this tutorial.) * :emphasis:`Pay No More than the Value of the Result` You have a data processing job to run. You understand the value of the job's results well enough to know how much they are worth in terms @@ -228,7 +228,10 @@ quickly as possible. After you choose your bid price, you are ready to request a Spot Instance. For the purposes of this tutorial, we will bid the On-Demand price ($0.03) to maximize the chances that the bid will be fulfilled. You can determine the types of available instances and the On-Demand prices for instances -by going to Amazon EC2 Pricing page. To request a Spot Instance, you simply need to build your +by going to Amazon EC2 Pricing page. While a Spot Instancee is running, you pay the Spot price that's in effect for +the time period your instances are running. Spot Instance prices are set by Amazon EC2 and adjust gradually based +on long-term trends in supply and demand for Spot Instance capacity. You can also specify the amount you are willing +to pay for a Spot Instance as a % of the On-Demand Instance price.To request a Spot Instance, you simply need to build your request with the parameters you chose earlier. We start by creating a :code:`RequestSpotInstanceRequest` object. The request object requires the number of instances you want to start and the bid price. Additionally, you need to set the :code:`LaunchSpecification` for From 8741c5b0936e70d455f36628afb30a8219da669f Mon Sep 17 00:00:00 2001 From: Paul Cornell Date: Thu, 26 Sep 2019 14:49:06 +0000 Subject: [PATCH 141/225] Periodic update 2019-09-26 07:48 PDT. --- .../examples-pinpoint-update-channel.rst | 2 +- doc_source/examples-s3-buckets.rst | 21 +++++++++---------- doc_source/prog-services-sts.rst | 4 ++-- doc_source/prog-services.rst | 7 +++++++ doc_source/welcome.rst | 2 ++ 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/doc_source/examples-pinpoint-update-channel.rst b/doc_source/examples-pinpoint-update-channel.rst index 31f1a0a..c27a545 100644 --- a/doc_source/examples-pinpoint-update-channel.rst +++ b/doc_source/examples-pinpoint-update-channel.rst @@ -42,7 +42,7 @@ and pass that object to the :dedent: 2 :language: java -See the :sdk-examples-java-pinpoint:`complete example ` on GitHub. +See the :sdk-examples-java-pinpoint:`complete example ` on GitHub. More Information diff --git a/doc_source/examples-s3-buckets.rst b/doc_source/examples-s3-buckets.rst index e16efb0..ac21b01 100644 --- a/doc_source/examples-s3-buckets.rst +++ b/doc_source/examples-s3-buckets.rst @@ -42,13 +42,13 @@ exception if the bucket already exists. **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java - :lines: 15-19 + :lines: 26-32 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java - :lines: 42-54 + :lines: 54-66 :dedent: 8 :language: java @@ -66,13 +66,13 @@ Use the |s3client| client's :methodname:`listBucket` method. If successful, a li **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListBuckets.java - :lines: 15-19 + :lines: 26-31 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListBuckets.java - :lines: 30-36 + :lines: 41-46 :dedent: 8 :language: java @@ -104,13 +104,13 @@ delete each one. **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 15-17, 19-20, 23 + :lines: 26-32 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 51, 53-70, 94-97 + :lines: 61-80 :dedent: 8 :language: java @@ -130,19 +130,18 @@ objects, and then :methodname:`deleteVersion` to delete each one. **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 15-23 + :lines: 26-32 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 51, 53-90, 94-97 + :lines: 78-96 :dedent: 8 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. - Delete an Empty Bucket ---------------------- @@ -152,13 +151,13 @@ bucket itself by using the |s3client| client's :methodname:`deleteBucket` method **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 15-17 + :lines: 26-32 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 51, 53, 93-97 + :lines: 98-104 :dedent: 8 :language: java diff --git a/doc_source/prog-services-sts.rst b/doc_source/prog-services-sts.rst index 666f305..bbf4721 100644 --- a/doc_source/prog-services-sts.rst +++ b/doc_source/prog-services-sts.rst @@ -66,9 +66,9 @@ Retrieve temporary security credentials from |STS| .. code-block:: java - AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClientBuilder().standard().build(); + AWSSecurityTokenService sts_client = new AWSSecurityTokenServiceClientBuilder().standard().withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("sts-endpoint.amazonaws.com", "signing-region")).build() - When creating the client with no arguments, the default credential provider chain is used to + When creating the client with no arguments (:code:`AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClientBuilder().standard().build();`), the default credential provider chain is used to retrieve credentials. You can provide a specific credential provider if you want. For more information, see Providing AWS Credentials in the AWS SDK for Java. diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index 35f2cc2..e623982 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -14,6 +14,13 @@ This section provides tutorials and examples of using the |sdk-java| v1 to program AWS services. +Find the source code for these examples and others in the AWS documentation `code examples repository on GitHub `_. + +To propose a new code example for the AWS documentation team to consider producing, create a new request. +The team is looking to produce code examples that cover broader scenarios and use cases, +versus simple code snippets that cover only individual API calls. For instructions, +see the "Proposing new code examples" section in the `Readme on GitHub `_. + AWS SDK for Java 2.x ===================== In 2018, AWS released |sdk-java| v2. For more AWS examples, see the `AWS SDK for Java 2.x Developer Guide`_. diff --git a/doc_source/welcome.rst b/doc_source/welcome.rst index 228a93d..e4215e5 100644 --- a/doc_source/welcome.rst +++ b/doc_source/welcome.rst @@ -58,6 +58,8 @@ developers: + `Gitter channel `_ +* The `AWS Code Sample Catalog `_ + * `@awsforjava (Twitter) `_ * `release notes `_ From 90909b331e80bbdd5f5180efbc2de1c268652e16 Mon Sep 17 00:00:00 2001 From: Paul Cornell Date: Thu, 26 Sep 2019 15:25:54 +0000 Subject: [PATCH 142/225] Periodic update 08:25 PDT. --- doc_source/examples-s3-buckets.rst | 28 ++++++++++----------- doc_source/sdk-metrics.rst | 2 -- doc_source/setup-project-gradle.rst | 2 +- doc_source/tutorial-spot-instances-java.rst | 6 ++--- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/doc_source/examples-s3-buckets.rst b/doc_source/examples-s3-buckets.rst index ac21b01..91afff7 100644 --- a/doc_source/examples-s3-buckets.rst +++ b/doc_source/examples-s3-buckets.rst @@ -42,19 +42,18 @@ exception if the bucket already exists. **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java - :lines: 26-32 + :lines: 16-22 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CreateBucket.java - :lines: 54-66 + :lines: 46-56 :dedent: 8 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. - .. _list-buckets: List Buckets @@ -66,19 +65,18 @@ Use the |s3client| client's :methodname:`listBucket` method. If successful, a li **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListBuckets.java - :lines: 26-31 + :lines: 16-21 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/ListBuckets.java - :lines: 41-46 + :lines: 32-36 :dedent: 8 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. - .. _delete-bucket: Delete a Bucket @@ -104,14 +102,14 @@ delete each one. **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 26-32 + :lines: 16-22 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 61-80 - :dedent: 8 + :lines: 50-66 + :dedent: 12 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. @@ -130,14 +128,14 @@ objects, and then :methodname:`deleteVersion` to delete each one. **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 26-32 + :lines: 16-22 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 78-96 - :dedent: 8 + :lines: 68-86 + :dedent: 12 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. @@ -151,14 +149,14 @@ bucket itself by using the |s3client| client's :methodname:`deleteBucket` method **Imports** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 26-32 + :lines: 16-22 :language: java **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java - :lines: 98-104 - :dedent: 8 + :lines: 88-89 + :dedent: 12 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. diff --git a/doc_source/sdk-metrics.rst b/doc_source/sdk-metrics.rst index 721e8bb..66df031 100755 --- a/doc_source/sdk-metrics.rst +++ b/doc_source/sdk-metrics.rst @@ -10,8 +10,6 @@ .. |language| replace:: Java .. |sdk| replace:: |sdk-java| -.. |SDKM| replace:: SDK Metrics -.. |SDKMlong| replace:: AWS SDK Metrics for Enterprise Support #################### Enabling |SDKMlong| diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index d8ff42e..a4a6912 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -12,7 +12,7 @@ Using the SDK with Gradle ######################### -`Since Gradle_ 4.6`_ it is possible to +`Since Gradle 4.6 `_ it is possible to use Gradle's improved POM support feature for importing bill of materials (BOM) files by simply declaring a dependency on a BOM. .. topic:: To configure the SDK for Gradle 4.6 and upper diff --git a/doc_source/tutorial-spot-instances-java.rst b/doc_source/tutorial-spot-instances-java.rst index 937f6d3..31d9ea5 100644 --- a/doc_source/tutorial-spot-instances-java.rst +++ b/doc_source/tutorial-spot-instances-java.rst @@ -208,9 +208,9 @@ quickly as possible. fulfilled and run for enough consecutive compute time to complete the job. * Or, you could specify the amount you are willing to pay for Spot Instances as a % of the On-Demand Instance price - , and plan to combine many instances launched over time through a persistent request. If the specified - price is exceeded, then the Spot Instance will terminate. (We will explain how to automate this task - later in this tutorial.) + , and plan to combine many instances launched over time through a persistent request. If the specified + price is exceeded, then the Spot Instance will terminate. (We will explain how to automate this task + later in this tutorial.) * :emphasis:`Pay No More than the Value of the Result` You have a data processing job to run. You understand the value of the job's results well enough to know how much they are worth in terms From b5a353d2aa8d4ffe54629ed0a033615e93d3c916 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 21 Nov 2019 12:29:55 -0500 Subject: [PATCH 143/225] fixed indent in example --- doc_source/examples-crypto-masterkey.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index bebc77e..77b015c 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -56,7 +56,7 @@ the :class:`KeyGenerator` Java class generate a symmetric private key. **Code** .. literalinclude:: s3.java1.s3_encrypt.encryption_only.txt - :dedent: 8 + :dedent: 4 :language: java To use an asymmetric key or a key pair, simply pass the key pair to the same From 4ff91d9ba6ad337bed11bab9d8a82fd9aea85db6 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 21 Nov 2019 14:46:04 -0500 Subject: [PATCH 144/225] fixed indent in example --- doc_source/examples-crypto-masterkey.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index 77b015c..5ae4458 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -120,7 +120,7 @@ objects encrypted with :classname:`EncryptionOnly` mode. The following example s **Code** .. literalinclude:: s3.java1.s3_encrypt.authenticated_encryption.txt - :dedent: 8 + :dedent: 4 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. @@ -150,7 +150,7 @@ authenticated mode. **Code** .. literalinclude:: s3.java1.s3_encrypt.strict_authenticated_encryption.txt - :dedent: 8 + :dedent: 4 :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. From 97c509908693a1584f0e11c08d80c46bb7c12342 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 22 Nov 2019 10:17:38 -0500 Subject: [PATCH 145/225] added POM depend tip --- doc_source/setup-project-maven.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc_source/setup-project-maven.rst b/doc_source/setup-project-maven.rst index d71d415..e976f37 100644 --- a/doc_source/setup-project-maven.rst +++ b/doc_source/setup-project-maven.rst @@ -130,6 +130,8 @@ declare it in your :file:`pom.xml` like this: +.. tip:: You can refer to the AWS Code Catalog to learn what dependencies to use for a given AWS service. Refer to the POM file under a specific service example. +For example, if you are interested in the dependencies for the AWS S3 service, see the :sdk-examples-java-s3:`complete example ` on GitHub. (Look at the pom under /java/example_code/s3). Build your project ================== From 8b315f06d0735ea0cf23c553d6690a29f4618834 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 22 Nov 2019 10:29:44 -0500 Subject: [PATCH 146/225] added POM depend tip --- doc_source/setup-project-maven.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/setup-project-maven.rst b/doc_source/setup-project-maven.rst index e976f37..fe8d041 100644 --- a/doc_source/setup-project-maven.rst +++ b/doc_source/setup-project-maven.rst @@ -111,6 +111,8 @@ component. +.. tip:: You can also refer to the AWS Code Catalog to learn what dependencies to use for a given AWS service. Refer to the POM file under a specific service example. +For example, if you are interested in the dependencies for the AWS S3 service, see the :sdk-examples-java-s3:`complete example ` on GitHub. (Look at the pom under /java/example_code/s3). .. _configuring-maven-entire-sdk: @@ -130,8 +132,6 @@ declare it in your :file:`pom.xml` like this: -.. tip:: You can refer to the AWS Code Catalog to learn what dependencies to use for a given AWS service. Refer to the POM file under a specific service example. -For example, if you are interested in the dependencies for the AWS S3 service, see the :sdk-examples-java-s3:`complete example ` on GitHub. (Look at the pom under /java/example_code/s3). Build your project ================== From 385258d9243fb4807bf78a8623df23abdf8d722c Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 22 Nov 2019 10:56:35 -0500 Subject: [PATCH 147/225] added POM depend tip --- doc_source/setup-project-maven.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/setup-project-maven.rst b/doc_source/setup-project-maven.rst index fe8d041..8fadd1d 100644 --- a/doc_source/setup-project-maven.rst +++ b/doc_source/setup-project-maven.rst @@ -111,7 +111,7 @@ component. -.. tip:: You can also refer to the AWS Code Catalog to learn what dependencies to use for a given AWS service. Refer to the POM file under a specific service example. +You can also refer to the *AWS Code Catalog* to learn what dependencies to use for a given AWS service. Refer to the POM file under a specific service example. For example, if you are interested in the dependencies for the AWS S3 service, see the :sdk-examples-java-s3:`complete example ` on GitHub. (Look at the pom under /java/example_code/s3). .. _configuring-maven-entire-sdk: From 92faee23d3cfe6b5c51b0b77cb67610891af5f3b Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 22 Nov 2019 11:52:58 -0500 Subject: [PATCH 148/225] updated cred info --- doc_source/credentials.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 291a869..50fbede 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -59,10 +59,10 @@ class. The default credential provider chain looks for credentials in this order #. **Amazon ECS container credentials** |ndash| loaded from the |ECS| if the environment variable :envvar:`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` is set. The |sdk-java| uses the :aws-java-class:`ContainerCredentialsProvider ` to load these - credentials. + credentials. You can specify the IP address for this value. #. **Instance profile credentials** |ndash| used on EC2 instances, and delivered through the |EC2| metadata service. The |sdk-java| uses the :aws-java-class:`InstanceProfileCredentialsProvider - ` to load these credentials. + ` to load these credentials. You can specify the IP address for this value. .. note:: Instance profile credentials are used only if :envvar:`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` is not set. See From 685bc98e30a4f713f3205ef986fddebbd4edc9d7 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 22 Nov 2019 12:18:57 -0500 Subject: [PATCH 149/225] updated depen info --- doc_source/setup-project-gradle.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index a4a6912..9a68542 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -43,6 +43,9 @@ use Gradle's improved POM support feature for importing bill of materials (BOM) Gradle will automatically resolve the correct version of your SDK dependencies using the information from the BOM. +You can also refer to the *AWS Code Catalog* to learn what dependencies to use for a given AWS service. Refer to the POM file under a specific service example. +For example, if you are interested in the dependencies for the AWS S3 service, see the :sdk-examples-java-s3:`complete example ` on GitHub. (Look at the pom under /java/example_code/s3). + Here's the complete :file:`build.gradle` file: .. code-block:: groovy From aa6ff9d75d7b4261cda423c902569927735af37a Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 22 Nov 2019 12:43:15 -0500 Subject: [PATCH 150/225] updated depen info --- doc_source/setup-project-gradle.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index 9a68542..1f36d79 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -44,7 +44,7 @@ Gradle will automatically resolve the correct version of your SDK dependencies u from the BOM. You can also refer to the *AWS Code Catalog* to learn what dependencies to use for a given AWS service. Refer to the POM file under a specific service example. -For example, if you are interested in the dependencies for the AWS S3 service, see the :sdk-examples-java-s3:`complete example ` on GitHub. (Look at the pom under /java/example_code/s3). +For example, if you are interested in the dependencies for the AWS S3 service (as shown in the previous dependencies example), see the :sdk-examples-java-s3:`complete example ` on GitHub. (Look at the pom under /java/example_code/s3). Here's the complete :file:`build.gradle` file: From 563a6604c37f6eac2e9b912647d8492abdecc365 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 28 Nov 2019 14:29:04 -0500 Subject: [PATCH 151/225] new file --- doc_source/examples-s3-objects.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-s3-objects.rst b/doc_source/examples-s3-objects.rst index e2dcc22..b37ed54 100644 --- a/doc_source/examples-s3-objects.rst +++ b/doc_source/examples-s3-objects.rst @@ -132,7 +132,7 @@ and the destination bucket and name. **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CopyObject.java - :lines: 46-52 + :lines: 50-63 :dedent: 8 :language: java From 66269f4c054f6e6c77afb3d7507e10e97b621385 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 28 Nov 2019 14:41:39 -0500 Subject: [PATCH 152/225] new file --- doc_source/examples-s3-objects.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/examples-s3-objects.rst b/doc_source/examples-s3-objects.rst index b37ed54..2cff970 100644 --- a/doc_source/examples-s3-objects.rst +++ b/doc_source/examples-s3-objects.rst @@ -121,7 +121,7 @@ Copy, Move, or Rename Objects You can copy an object from one bucket to another by using the |s3client| client's :methodname:`copyObject` method. It takes the name of the bucket to copy from, the object to copy, -and the destination bucket and name. +and the destination bucket name. **Imports** @@ -132,7 +132,7 @@ and the destination bucket and name. **Code** .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/CopyObject.java - :lines: 50-63 + :lines: 48-64 :dedent: 8 :language: java From 8b735c1d65c7f6f91d416406cf05c876495d7d08 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 29 Nov 2019 10:03:47 -0500 Subject: [PATCH 153/225] modified code lines --- doc_source/examples-s3-bucket-policies.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-s3-bucket-policies.rst b/doc_source/examples-s3-bucket-policies.rst index d6335a1..f8b8e0c 100644 --- a/doc_source/examples-s3-bucket-policies.rst +++ b/doc_source/examples-s3-bucket-policies.rst @@ -41,7 +41,7 @@ You can set the bucket policy for a particular S3 bucket by: .. literalinclude:: example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java :dedent: 8 - :lines: 81-88 + :lines: 81-86 :language: java From b809ecbe519a4e3670fd1a3af8a29ce4977e1993 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Tue, 3 Dec 2019 08:46:07 -0500 Subject: [PATCH 154/225] added new section --- doc_source/prog-services.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index e623982..722f3c5 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -40,6 +40,7 @@ In 2018, AWS released |sdk-java| v2. For more AWS examples, see the `AWS SDK for Amazon DynamoDB Examples Amazon EC2 Examples AWS Identity and Access Management (IAM) Examples + Amazon Lambda Examples Amazon Pinpoint Examples Amazon S3 Examples Amazon SQS Examples From 8079902e9d43f863c4143e9e5cc98a02e37ea1cb Mon Sep 17 00:00:00 2001 From: scmacdon <57190223+scmacdon@users.noreply.github.com> Date: Tue, 3 Dec 2019 08:48:22 -0500 Subject: [PATCH 155/225] Create examples-lambda.rst --- doc_source/examples-lambda.rst | 106 +++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 doc_source/examples-lambda.rst diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst new file mode 100644 index 0000000..d909c94 --- /dev/null +++ b/doc_source/examples-lambda.rst @@ -0,0 +1,106 @@ +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +################################################# +Invoking, Listing, and Deleting Lambda Functions +################################################# + +.. meta:: + :description: How to invoke, list, and delete a Lambda function by using the AWS SDK for Java 2.x. + :keywords: Amazon Lambda, AWS SDK for Java 2.x, Lambda code examples, + deleteFunction, invoke, listFunctions + + +This section provides examples of programming with the Lambda service client by using the AWS SDK for Java. + +.. contents:: + :local: + :depth: 1 + +.. _invoke-function: +Invoke a Lambda function +======================== + +You can invoke a Lambda function by creating a :aws-java-class:`LambdaClient ` +object and invoking its :methodname:`invoke` method. Create an :aws-java-class:`InvokeRequest ` +object to specify additional information such as the function name and the payload to pass to the Lambda function. Function names +appear as *arn:aws:lambda:us-west-2:555556330391:function:HelloFunction*. You can retrieve the value by looking at the function in the AWS Console. + +To pass payload data to a function, create a :aws-java-class:`SdkBytes ` +object that contains information. For example, in the following code example, notice the JSON data passed to the Lambda function. + +**Imports** + +.. literalinclude:: s3.java2.s3_object_operations.import.txt + :language: java + +**Code** + +The following code example demonstrates how to invoke a Lambda function. + +.. literalinclude:: s3.java2.s3_object_operations.upload.txt + :language: java + +See the :sdk-examples-java-s3:`complete example ` on GitHub. + + +.. _list-function: + +List Lambda functions +========================= + +Build a :aws-java-class:`LambdaClient ` +object and invoke its :methodname:`listFunctions` method. +This method returns a :aws-java-class:`ListFunctionsResponse ` object. +You can invoke this object's :methodname:`functions` method to return a list of :aws-java-class:`FunctionConfiguration ` objects. +You can iterate through the list to retrieve information about the functions. For example, the following Java code example shows how to get each function name. + + +**Imports** + +.. literalinclude:: s3.java2.s3_object_operations.import.txt + :language: java + +**Code** + +The following Java code example demonstrates how to retrieve a list of function names. + +.. literalinclude:: s3.java2.s3_object_operations.upload.txt + :language: java + +See the :sdk-examples-java-s3:`complete example ` on GitHub. + + +.. _delete-function: + +Delete a Lambda function +======================== + +Build a :aws-java-class:`LambdaClient ` +object and invoke its :methodname:`deleteFunction` method. +Create a :aws-java-class:`DeleteFunctionRequest ` +object and pass it to the :methodname:`deleteFunction` method. This object contains information such as the name of the function to delete. +Function names appear as *arn:aws:lambda:us-west-2:555556330391:function:HelloFunction*. You can retrieve the value by looking at the function in the AWS Console. + +**Imports** + +.. literalinclude:: s3.java2.s3_object_operations.import.txt + :language: java + +**Code** + +The following Java code demonstrates how to delete a Lambda function. + +.. literalinclude:: s3.java2.s3_object_operations.upload.txt + :language: java + +See the :sdk-examples-java-s3:`complete example ` on GitHub. + + From 636965f51373aab4664d019518bf759a5013937b Mon Sep 17 00:00:00 2001 From: scmacdon <57190223+scmacdon@users.noreply.github.com> Date: Tue, 3 Dec 2019 08:49:17 -0500 Subject: [PATCH 156/225] Create lambda-examples.rst --- doc_source/lambda-examples.rst | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 doc_source/lambda-examples.rst diff --git a/doc_source/lambda-examples.rst b/doc_source/lambda-examples.rst new file mode 100644 index 0000000..d0cdacf --- /dev/null +++ b/doc_source/lambda-examples.rst @@ -0,0 +1,28 @@ +.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +########################################## +Lambda Examples Using the |sdk-java| +########################################## + +.. meta:: + :description: Programming Amazon Lambda using the AWS SDK for Java 2.x + :keywords: AWS SDK for Java code examples + +This section provides examples of programming Lambda using the |sdk-java-v2|. + +.. include:: includes/complete-examples-note.txt + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + Service Operations + From c5078e8f1f1124d41cd307a49a6d525949ea6503 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Tue, 3 Dec 2019 10:43:04 -0500 Subject: [PATCH 157/225] added new section --- doc_source/examples-lambda.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index d909c94..516273d 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -26,15 +26,15 @@ This section provides examples of programming with the Lambda service client by .. _invoke-function: Invoke a Lambda function -======================== +======================== -You can invoke a Lambda function by creating a :aws-java-class:`LambdaClient ` +You can invoke a Lambda function by creating a :aws-java-class:`AWSLambda ` object and invoking its :methodname:`invoke` method. Create an :aws-java-class:`InvokeRequest ` object to specify additional information such as the function name and the payload to pass to the Lambda function. Function names appear as *arn:aws:lambda:us-west-2:555556330391:function:HelloFunction*. You can retrieve the value by looking at the function in the AWS Console. -To pass payload data to a function, create a :aws-java-class:`SdkBytes ` -object that contains information. For example, in the following code example, notice the JSON data passed to the Lambda function. +To pass payload data to a function, invoke the :aws-java-class:`InvokeRequest ` +object's :methodname:`withPayload` method and specify a String in JSON format, as shown in the following code example. **Imports** From 474d32e6bdeb8fb4cca6ec6071d470988a5e28ef Mon Sep 17 00:00:00 2001 From: scmacdon Date: Tue, 3 Dec 2019 10:56:55 -0500 Subject: [PATCH 158/225] added new section --- doc_source/examples-lambda.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index 516273d..2549dee 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -26,9 +26,9 @@ This section provides examples of programming with the Lambda service client by .. _invoke-function: Invoke a Lambda function -======================== +======================== -You can invoke a Lambda function by creating a :aws-java-class:`AWSLambda ` +You can invoke a Lambda function by creating an :aws-java-class:`AWSLambda ` object and invoking its :methodname:`invoke` method. Create an :aws-java-class:`InvokeRequest ` object to specify additional information such as the function name and the payload to pass to the Lambda function. Function names appear as *arn:aws:lambda:us-west-2:555556330391:function:HelloFunction*. You can retrieve the value by looking at the function in the AWS Console. @@ -54,12 +54,12 @@ See the :sdk-examples-java-s3:`complete example ` on GitHub. .. _list-function: List Lambda functions -========================= +===================== -Build a :aws-java-class:`LambdaClient ` +Build an :aws-java-class:`AWSLambda ` object and invoke its :methodname:`listFunctions` method. -This method returns a :aws-java-class:`ListFunctionsResponse ` object. -You can invoke this object's :methodname:`functions` method to return a list of :aws-java-class:`FunctionConfiguration ` objects. +This method returns a :aws-java-class:`ListFunctionsResult ` object. +You can invoke this object's :methodname:`getFunctions` method to return a list of :aws-java-class:`FunctionConfiguration ` objects. You can iterate through the list to retrieve information about the functions. For example, the following Java code example shows how to get each function name. From 7f40b668cbfda7d161c7a719b9d7396e187af652 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Tue, 3 Dec 2019 11:13:07 -0500 Subject: [PATCH 159/225] added new section --- doc_source/examples-lambda.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index 2549dee..90c3cd2 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -83,7 +83,7 @@ See the :sdk-examples-java-s3:`complete example ` on GitHub. Delete a Lambda function ======================== -Build a :aws-java-class:`LambdaClient ` +Build an :aws-java-class:`AWSLambda ` object and invoke its :methodname:`deleteFunction` method. Create a :aws-java-class:`DeleteFunctionRequest ` object and pass it to the :methodname:`deleteFunction` method. This object contains information such as the name of the function to delete. From 4e6efef2513b1053fcf6f4515c4f29f70210feac Mon Sep 17 00:00:00 2001 From: scmacdon Date: Tue, 3 Dec 2019 16:35:15 -0500 Subject: [PATCH 160/225] added an example --- doc_source/examples-ec2-regions-zones.rst | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/doc_source/examples-ec2-regions-zones.rst b/doc_source/examples-ec2-regions-zones.rst index 4d93ba1..ea9de5c 100644 --- a/doc_source/examples-ec2-regions-zones.rst +++ b/doc_source/examples-ec2-regions-zones.rst @@ -68,6 +68,35 @@ objects that represent each Availability Zone. See the :sdk-examples-java-ec2:`complete example `. +Describing Accounts +================== + +To describe your account, call the |ec2client|'s :methodname:`describeAccountAttributes` +method. This method returns a :aws-java-class:`DescribeAccountAttributesResult ` object. +Invoke this objects :methodname:`getAccountAttributes` method to get a list of :aws-java-class:`AccountAttribute +` objects. You can iterate through the list to retrieve an +:aws-java-class:`AccountAttribute ` object. + +You can +get your account's attribute values by invoking the :aws-java-class:`AccountAttribute ` object's +:methodname:`getAttributeValues` method. This method returns a list of :aws-java-class:`AccountAttributeValue +` objects. You can iterate through this second list to display the value of attributes (see the following code example). + +**Imports** + +.. literalinclude:: ec2.java2.describe_region_and_zones.import.txt + :language: java + +**Code** + +.. literalinclude:: ec2.java2.describe_region_and_zones.region.txt + :dedent: 8 + :language: java + +See the :sdk-examples-java-ec2:`complete example ` on GitHub. + + + More Information ================ From 72772b25c207f35cee812211b28ed659ed3504a1 Mon Sep 17 00:00:00 2001 From: Paul Cornell Date: Wed, 4 Dec 2019 16:11:15 +0000 Subject: [PATCH 161/225] Periodic update 2019-12-04 08:11 PT. --- doc_source/conf.py | 2 +- doc_source/data-protection.rst | 46 ++++++++++++++++++++++++++++++++++ doc_source/index.rst | 1 + doc_source/security.rst | 31 +++++++++++++++++++++++ 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 doc_source/data-protection.rst create mode 100644 doc_source/security.rst diff --git a/doc_source/conf.py b/doc_source/conf.py index 0737153..c8adbe8 100644 --- a/doc_source/conf.py +++ b/doc_source/conf.py @@ -121,7 +121,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'bizstyle' +html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the diff --git a/doc_source/data-protection.rst b/doc_source/data-protection.rst new file mode 100644 index 0000000..c315926 --- /dev/null +++ b/doc_source/data-protection.rst @@ -0,0 +1,46 @@ +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +##################################### +Data Protection in |SERVICENAMETITLE| +##################################### + +.. meta:: + :description: Learn how the AWS shared responsibility model applies to data protection in this AWS product or service. + :keywords: + +.. include:: common/_security-includes.txt + +|SERVICENAMESENTENCECASE| conforms to the `shared responsibility model `_, +which includes regulations and guidelines for data protection. |AWSlong| (|AWS|) is responsible for protecting the global infrastructure +that runs all the |AWS| services. |AWS| maintains control over data hosted on this infrastructure, including the security configuration +controls for handling customer content and personal data. |AWS| customers and APN partners, acting either as data controllers or data +processors, are responsible for any personal data that they put in the |AWS| Cloud. + +For data protection purposes, we recommend that you protect |AWS| account credentials and set up individual user accounts with +|IAMlong| (|IAM|), so that each user is given only the permissions necessary to fulfill their job duties. We also recommend that +you secure your data in the following ways: + +* Use multi-factor authentication (MFA) with each account. +* Use SSL/TLS to communicate with |AWS| resources. +* Set up API and user activity logging with |CTlong|. +* Use |AWS| encryption solutions, along with all default security controls within |AWS| services. +* Use advanced managed security services such as |MCElong|, which assists in discovering and securing personal data that + is stored in |S3|. + +We strongly recommend that you never put sensitive identifying information, such as your customers' account numbers, into +free-form fields such as a **Name** field. This includes when you work with |SERVICENAME| or other |AWS| services +using the console, API, |CLI|, or |AWS| SDKs. Any data that you enter into |SERVICENAME| or other services might get picked up +for inclusion in diagnostic logs. When you provide a URL to an external server, don't include credentials information in the URL +to validate your request to that server. + +For more information about data protection, see the +`AWS Shared Responsibility Model and GDPR `_ +blog post on the *AWS Security Blog*. \ No newline at end of file diff --git a/doc_source/index.rst b/doc_source/index.rst index 4c68e99..59814c8 100644 --- a/doc_source/index.rst +++ b/doc_source/index.rst @@ -24,6 +24,7 @@ getting-started basics Code Examples + Security document-history .. include:: about-aws.txt diff --git a/doc_source/security.rst b/doc_source/security.rst new file mode 100644 index 0000000..827ac76 --- /dev/null +++ b/doc_source/security.rst @@ -0,0 +1,31 @@ +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +############################### +Security for |SERVICENAMETITLE| +############################### + +.. meta:: + :description: Provides security-related information for this AWS product or service. + :keywords: + +.. include:: common/_security-includes.txt + +.. include:: common/_security.txt + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + Data Protection + Identity and Access Management + Compliance Validation + Resilience + Infrastructure Security From feecc24cdcc61b4fdc5af0ea5cbe8241eac4ff2c Mon Sep 17 00:00:00 2001 From: scmacdon Date: Wed, 11 Dec 2019 12:08:51 -0500 Subject: [PATCH 162/225] updated content --- doc_source/examples-lambda.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index 90c3cd2..90b6c73 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -38,7 +38,7 @@ object's :methodname:`withPayload` method and specify a String in JSON format, a **Imports** -.. literalinclude:: s3.java2.s3_object_operations.import.txt +.. literalinclude:: lambda.java1.invoke.import.txt :language: java **Code** From ed85c0635c7e009b87e3af8e8a8b761cf2ab3cce Mon Sep 17 00:00:00 2001 From: scmacdon Date: Wed, 11 Dec 2019 12:35:49 -0500 Subject: [PATCH 163/225] updated content --- doc_source/examples-lambda.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index 90b6c73..90c3cd2 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -38,7 +38,7 @@ object's :methodname:`withPayload` method and specify a String in JSON format, a **Imports** -.. literalinclude:: lambda.java1.invoke.import.txt +.. literalinclude:: s3.java2.s3_object_operations.import.txt :language: java **Code** From b7748a026c899e0903883d5c84307ebd8eca5db0 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Wed, 11 Dec 2019 12:46:41 -0500 Subject: [PATCH 164/225] updated content --- doc_source/examples-lambda.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index 90c3cd2..90b6c73 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -38,7 +38,7 @@ object's :methodname:`withPayload` method and specify a String in JSON format, a **Imports** -.. literalinclude:: s3.java2.s3_object_operations.import.txt +.. literalinclude:: lambda.java1.invoke.import.txt :language: java **Code** From 354a91332ddbd975547e366ba737cf9267c82d62 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Wed, 11 Dec 2019 13:24:38 -0500 Subject: [PATCH 165/225] updated content --- doc_source/examples-lambda.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index 90b6c73..4044ba5 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -45,7 +45,7 @@ object's :methodname:`withPayload` method and specify a String in JSON format, a The following code example demonstrates how to invoke a Lambda function. -.. literalinclude:: s3.java2.s3_object_operations.upload.txt +.. literalinclude:: lambda.java1.invoke.main.txt :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. @@ -65,14 +65,14 @@ You can iterate through the list to retrieve information about the functions. Fo **Imports** -.. literalinclude:: s3.java2.s3_object_operations.import.txt +.. literalinclude:: lambda.java1.list.import.txt :language: java **Code** The following Java code example demonstrates how to retrieve a list of function names. -.. literalinclude:: s3.java2.s3_object_operations.upload.txt +.. literalinclude:: lambda.java1.list.main.txt :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. @@ -91,14 +91,14 @@ Function names appear as *arn:aws:lambda:us-west-2:555556330391:function:HelloFu **Imports** -.. literalinclude:: s3.java2.s3_object_operations.import.txt +.. literalinclude:: lambda.java1.delete.import.txt :language: java **Code** The following Java code demonstrates how to delete a Lambda function. -.. literalinclude:: s3.java2.s3_object_operations.upload.txt +.. literalinclude:: lambda.java1.delete.main.txt :language: java See the :sdk-examples-java-s3:`complete example ` on GitHub. From 72b59b77783bdec08fd176bee9f0ab678e459df3 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Wed, 11 Dec 2019 13:56:47 -0500 Subject: [PATCH 166/225] updated content --- doc_source/examples-lambda.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index 4044ba5..a228b81 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -48,7 +48,8 @@ The following code example demonstrates how to invoke a Lambda function. .. literalinclude:: lambda.java1.invoke.main.txt :language: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. +See the complete example on `Github +`_. .. _list-function: @@ -75,7 +76,8 @@ The following Java code example demonstrates how to retrieve a list of function .. literalinclude:: lambda.java1.list.main.txt :language: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. +See the complete example on `Github +`_. .. _delete-function: @@ -101,6 +103,7 @@ The following Java code demonstrates how to delete a Lambda function. .. literalinclude:: lambda.java1.delete.main.txt :language: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. +See the complete example on `Github +`_. From cb21064230be42eb80b9b72206dfed85275de4e2 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 12 Dec 2019 17:26:36 -0500 Subject: [PATCH 167/225] updated content --- doc_source/examples-lambda.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index a228b81..bb4b7d0 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -71,7 +71,7 @@ You can iterate through the list to retrieve information about the functions. Fo **Code** -The following Java code example demonstrates how to retrieve a list of function names. +The following Java code example demonstrates how to retrieve a list of Lambda function names. .. literalinclude:: lambda.java1.list.main.txt :language: java From c91ae76ed2631ac5974d140cafbc13a9899867be Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 13 Dec 2019 11:14:30 -0500 Subject: [PATCH 168/225] updated content --- doc_source/setup-credentials.rst | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/doc_source/setup-credentials.rst b/doc_source/setup-credentials.rst index c9caf99..858a1eb 100644 --- a/doc_source/setup-credentials.rst +++ b/doc_source/setup-credentials.rst @@ -48,6 +48,31 @@ Once you have set your AWS credentials using one of these methods, they will be by the |sdk-java| by using the default credential provider chain. For further information about working with AWS credentials in your Java applications, see :doc:`credentials`. + +.. _refresh-credentials: +Refreshing IMDS credentials +=========================== + +The|sdk-java| supports opt-in refreshing IMDS credentials in the background every 1 minute, regardless of the credential expiration time. +That’s frequent enough that a relatively short outage should not impact the perceived AWS availability. + +.. code:: java + + // Refresh credentials using a background thread, automatically every minute. This will log an error if IMDS is down during +// a refresh, but customer's service calls will continue using the cached credentials until the credentials are refreshed +// again one minute later. + +InstanceProfileCredentialsProvider credentials = + InstanceProfileCredentialsProvider.createAsyncRefreshingProvider(true); + +AmazonS3Client.builder() + .withCredentials(credentials) + .build(); + +// This is new: When the customer is done with the credentials provider, they must close it to release the background thread. +credentials.close(); + + .. _setup-credentials-setting-region: Setting the AWS Region From 8aeffd909c780cd30603615152a9a78c5777394c Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 13 Dec 2019 11:26:07 -0500 Subject: [PATCH 169/225] updated content --- doc_source/setup-credentials.rst | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/doc_source/setup-credentials.rst b/doc_source/setup-credentials.rst index 858a1eb..16d22e4 100644 --- a/doc_source/setup-credentials.rst +++ b/doc_source/setup-credentials.rst @@ -56,21 +56,22 @@ Refreshing IMDS credentials The|sdk-java| supports opt-in refreshing IMDS credentials in the background every 1 minute, regardless of the credential expiration time. That’s frequent enough that a relatively short outage should not impact the perceived AWS availability. -.. code:: java - - // Refresh credentials using a background thread, automatically every minute. This will log an error if IMDS is down during -// a refresh, but customer's service calls will continue using the cached credentials until the credentials are refreshed -// again one minute later. - -InstanceProfileCredentialsProvider credentials = - InstanceProfileCredentialsProvider.createAsyncRefreshingProvider(true); - -AmazonS3Client.builder() - .withCredentials(credentials) - .build(); - -// This is new: When the customer is done with the credentials provider, they must close it to release the background thread. -credentials.close(); +.. code-block:: java + :linenos: + +1. // Refresh credentials using a background thread, automatically every minute. This will log an error if IMDS is down during +2. // a refresh, but customer's service calls will continue using the cached credentials until the credentials are refreshed +3. // again one minute later. +4. +5. InstanceProfileCredentialsProvider credentials = +6. InstanceProfileCredentialsProvider.createAsyncRefreshingProvider(true); +7. +8. AmazonS3Client.builder() +9. .withCredentials(credentials) +10. .build(); +11. +12. // This is new: When the customer is done with the credentials provider, they must close it to release the background thread. +23. credentials.close(); .. _setup-credentials-setting-region: From 022a8b82fa124a0f244cc993ab1f7a2e430eb213 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 13 Dec 2019 11:29:05 -0500 Subject: [PATCH 170/225] updated content --- doc_source/setup-credentials.rst | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/doc_source/setup-credentials.rst b/doc_source/setup-credentials.rst index 16d22e4..cc4043b 100644 --- a/doc_source/setup-credentials.rst +++ b/doc_source/setup-credentials.rst @@ -59,19 +59,19 @@ That’s frequent enough that a relatively short outage should not impact the pe .. code-block:: java :linenos: -1. // Refresh credentials using a background thread, automatically every minute. This will log an error if IMDS is down during -2. // a refresh, but customer's service calls will continue using the cached credentials until the credentials are refreshed -3. // again one minute later. -4. -5. InstanceProfileCredentialsProvider credentials = -6. InstanceProfileCredentialsProvider.createAsyncRefreshingProvider(true); -7. -8. AmazonS3Client.builder() -9. .withCredentials(credentials) -10. .build(); -11. -12. // This is new: When the customer is done with the credentials provider, they must close it to release the background thread. -23. credentials.close(); + 1. // Refresh credentials using a background thread, automatically every minute. This will log an error if IMDS is down during + 2. // a refresh, but your service calls will continue using the cached credentials until the credentials are refreshed + 3. // again one minute later. + 4. + 5. InstanceProfileCredentialsProvider credentials = + 6. InstanceProfileCredentialsProvider.createAsyncRefreshingProvider(true); + 7. + 8. AmazonS3Client.builder() + 9. .withCredentials(credentials) + 10. .build(); + 11. + 12. // This is new: When you are done with the credentials provider, you must close it to release the background thread. + 23. credentials.close(); .. _setup-credentials-setting-region: From 126940353293d290df492178e5ef3d36f3acac57 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 13 Dec 2019 11:39:21 -0500 Subject: [PATCH 171/225] updated content --- doc_source/setup-credentials.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/setup-credentials.rst b/doc_source/setup-credentials.rst index cc4043b..12b1e95 100644 --- a/doc_source/setup-credentials.rst +++ b/doc_source/setup-credentials.rst @@ -53,7 +53,7 @@ working with AWS credentials in your Java applications, see :doc:`credentials`. Refreshing IMDS credentials =========================== -The|sdk-java| supports opt-in refreshing IMDS credentials in the background every 1 minute, regardless of the credential expiration time. +The |sdk-java| supports opt-in refreshing IMDS credentials in the background every 1 minute, regardless of the credential expiration time. That’s frequent enough that a relatively short outage should not impact the perceived AWS availability. .. code-block:: java From 1044384cbcda0308b818757a8fada56833c14187 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 13 Dec 2019 12:11:31 -0500 Subject: [PATCH 172/225] updated content --- doc_source/setup-credentials.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc_source/setup-credentials.rst b/doc_source/setup-credentials.rst index 12b1e95..c58b718 100644 --- a/doc_source/setup-credentials.rst +++ b/doc_source/setup-credentials.rst @@ -54,7 +54,8 @@ Refreshing IMDS credentials =========================== The |sdk-java| supports opt-in refreshing IMDS credentials in the background every 1 minute, regardless of the credential expiration time. -That’s frequent enough that a relatively short outage should not impact the perceived AWS availability. +This allows you to refresh credentials more frequently and reduces the chance that not reaching IMDS impacts +the perceived AWS availability. .. code-block:: java :linenos: From 5aae0ca2d3de386614a1045b09734c797cba6c70 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 13 Dec 2019 12:12:39 -0500 Subject: [PATCH 173/225] updated content --- doc_source/setup-credentials.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/setup-credentials.rst b/doc_source/setup-credentials.rst index c58b718..127b3b3 100644 --- a/doc_source/setup-credentials.rst +++ b/doc_source/setup-credentials.rst @@ -72,7 +72,7 @@ the perceived AWS availability. 10. .build(); 11. 12. // This is new: When you are done with the credentials provider, you must close it to release the background thread. - 23. credentials.close(); + 13. credentials.close(); .. _setup-credentials-setting-region: From 50ace1ffa1597957ce8efe6ba6de2fa3c09f3a10 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 2 Jan 2020 13:56:48 -0500 Subject: [PATCH 174/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 5caefc1..1d2e909 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -110,6 +110,30 @@ update. See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. +Use the DynamoDBMapper class +================================== + +The |sdk-java|_ provides a :aws-java-class:`DynamoDBMapper ` class, +allowing you to map your client-side classes to Amazon DynamoDB tables. To use the :aws-java-class:`DynamoDBMapper ` class, +you define the relationship between items in a DynamoDB table and their corresponding object instances in your code. +The :aws-java-class:`DynamoDBMapper ` class enables you to access your tables; perform various create, read, update, and delete (CRUD) operations; and execute queries. + +.. note:: The :aws-java-class:`DynamoDBMapper ` class does not allow you to create, update, or delete tables. + +**Imports** + +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java + :lines: 15-22 + :language: java + +**Code** + +.. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java + :lines: 82-105 + :dedent: 8 + :language: java + +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. More Info ========= From cf85c3b39ebecbc9da17ed3868af8861e3801c0b Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 2 Jan 2020 14:37:36 -0500 Subject: [PATCH 175/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 1d2e909..521bba9 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -128,6 +128,11 @@ The :aws-java-class:`DynamoDBMapper ` in the |ddb-dg|. + +After the content is added to the table, notice that an item is loaded by using the +Partition Key and Sort Key. Then the *Awards* item is updated. .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java :lines: 82-105 :dedent: 8 From cecc97f3a3275f1599f66b610f9f722d50bcfd95 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 2 Jan 2020 14:49:30 -0500 Subject: [PATCH 176/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 521bba9..77ca384 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -132,7 +132,8 @@ The following Java code example shows you how to add content to the Music table. :ddb-dg:`Create a Table ` in the |ddb-dg|. After the content is added to the table, notice that an item is loaded by using the -Partition Key and Sort Key. Then the *Awards* item is updated. +*Partition* and *Sort* keys. Then the *Awards* item is updated. + .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java :lines: 82-105 :dedent: 8 From 196e090bbec1a1831b3de6cd409f5dbc74a1d449 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 2 Jan 2020 15:00:32 -0500 Subject: [PATCH 177/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 77ca384..75d24e1 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -129,9 +129,7 @@ The :aws-java-class:`DynamoDBMapper ` in the |ddb-dg|. - -After the content is added to the table, notice that an item is loaded by using the +:ddb-dg:`Create a Table ` in the |ddb-dg|. After the content is added to the table, notice that an item is loaded by using the *Partition* and *Sort* keys. Then the *Awards* item is updated. .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java From ddd0b6babdf0b0dd6067b63fb2f26009b3e035bc Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 2 Jan 2020 15:04:36 -0500 Subject: [PATCH 178/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 75d24e1..7cc66dd 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -128,7 +128,7 @@ The :aws-java-class:`DynamoDBMapper ` in the |ddb-dg|. After the content is added to the table, notice that an item is loaded by using the *Partition* and *Sort* keys. Then the *Awards* item is updated. From fffff9b87b31cbb52c858a5e42601c2b13242551 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 2 Jan 2020 15:26:23 -0500 Subject: [PATCH 179/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 7cc66dd..98c336d 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -128,8 +128,9 @@ The :aws-java-class:`DynamoDBMapper ` in the |ddb-dg|. After the content is added to the table, notice that an item is loaded by using the +The following Java code example shows you how to add content to the *Music* table by using the :aws-java-class:`DynamoDBMapper ` class. +For information on creating the *Music* table, see :ddb-dg:`Create a Table ` in the |ddb-dg|. +After the content is added to the table, notice that an item is loaded by using the *Partition* and *Sort* keys. Then the *Awards* item is updated. .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UpdateItem.java From 50d89750ca61acbbe8e88f818204ccad411644ac Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 2 Jan 2020 15:46:01 -0500 Subject: [PATCH 180/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 98c336d..953cce1 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -115,7 +115,7 @@ Use the DynamoDBMapper class The |sdk-java|_ provides a :aws-java-class:`DynamoDBMapper ` class, allowing you to map your client-side classes to Amazon DynamoDB tables. To use the :aws-java-class:`DynamoDBMapper ` class, -you define the relationship between items in a DynamoDB table and their corresponding object instances in your code. +you define the relationship between items in a DynamoDB table and their corresponding object instances in your code by using annotations (as shown in the following code example). The :aws-java-class:`DynamoDBMapper ` class enables you to access your tables; perform various create, read, update, and delete (CRUD) operations; and execute queries. .. note:: The :aws-java-class:`DynamoDBMapper ` class does not allow you to create, update, or delete tables. From cef3adc13f4c1669bc950036e0fe729e2b1a18c6 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 2 Jan 2020 15:52:58 -0500 Subject: [PATCH 181/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 953cce1..1649586 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -138,7 +138,7 @@ After the content is added to the table, notice that an item is loaded by using :dedent: 8 :language: java -See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. +See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. More Info ========= From d956354229e9a7c28f67e52b784782c7628ec669 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 3 Jan 2020 10:49:50 -0500 Subject: [PATCH 182/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 1649586..4affebb 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -122,8 +122,8 @@ The :aws-java-class:`DynamoDBMapper Date: Fri, 3 Jan 2020 11:05:15 -0500 Subject: [PATCH 183/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 4affebb..1649586 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -122,8 +122,8 @@ The :aws-java-class:`DynamoDBMapper Date: Fri, 3 Jan 2020 12:45:24 -0500 Subject: [PATCH 184/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 1649586..458bcea 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -133,7 +133,7 @@ For information on creating the *Music* table, see :ddb-dg:`Create a Table Date: Fri, 3 Jan 2020 13:10:59 -0500 Subject: [PATCH 185/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 458bcea..1649586 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -133,7 +133,7 @@ For information on creating the *Music* table, see :ddb-dg:`Create a Table Date: Mon, 6 Jan 2020 09:48:50 -0500 Subject: [PATCH 186/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 1649586..458bcea 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -133,7 +133,7 @@ For information on creating the *Music* table, see :ddb-dg:`Create a Table Date: Mon, 6 Jan 2020 11:15:04 -0500 Subject: [PATCH 187/225] added setup info --- doc_source/setup-install.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc_source/setup-install.rst b/doc_source/setup-install.rst index d304e8d..2541b0c 100644 --- a/doc_source/setup-install.rst +++ b/doc_source/setup-install.rst @@ -47,7 +47,8 @@ system or IDE: which will automatically download, install and update the Java SDK for you. For more information and setup instructions, see the |tke-ug|_. -If you intend to build your projects using a different IDE, with Apache Ant or by any other means, +If you are using one the above methods (for example, +you are using Maven), then you do not need to download and install the AWS JAR files (you can skip the following section). If you intend to build your projects using a different IDE, with Apache Ant or by any other means, then download and extract the SDK as shown in the next section. .. _download-and-extract-sdk: From d6c5d055159bb79aef8c5b1241e8b6571d78225e Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 11:41:02 -0500 Subject: [PATCH 188/225] added additional info --- doc_source/examples-lambda.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index bb4b7d0..ef50ba7 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -18,7 +18,8 @@ Invoking, Listing, and Deleting Lambda Functions deleteFunction, invoke, listFunctions -This section provides examples of programming with the Lambda service client by using the AWS SDK for Java. +This section provides examples of programming with the Lambda service client by using the AWS SDK for Java. To learn how to +create a Lambda function, see see :AWS Toolkit for Eclipse:`Tutorial: How to Create, Upload, and Invoke an AWS Lambda Function ` in the AWS Toolkit for Eclipse. .. contents:: :local: From ce1fc145c182c0680a514f7ee7e5523e85ab59f2 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 11:48:12 -0500 Subject: [PATCH 189/225] added additional info --- doc_source/lambda-examples.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/lambda-examples.rst b/doc_source/lambda-examples.rst index d0cdacf..2687321 100644 --- a/doc_source/lambda-examples.rst +++ b/doc_source/lambda-examples.rst @@ -13,10 +13,10 @@ Lambda Examples Using the |sdk-java| ########################################## .. meta:: - :description: Programming Amazon Lambda using the AWS SDK for Java 2.x + :description: Programming Amazon Lambda using the AWS SDK for Java. :keywords: AWS SDK for Java code examples -This section provides examples of programming Lambda using the |sdk-java-v2|. +This section provides examples of programming Lambda using the |sdk-java|. .. include:: includes/complete-examples-note.txt From abe2736f62369c52b8165060b76b7242bfded271 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 11:50:41 -0500 Subject: [PATCH 190/225] added additional info --- doc_source/examples-lambda.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index ef50ba7..b45966a 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -19,7 +19,7 @@ Invoking, Listing, and Deleting Lambda Functions This section provides examples of programming with the Lambda service client by using the AWS SDK for Java. To learn how to -create a Lambda function, see see :AWS Toolkit for Eclipse:`Tutorial: How to Create, Upload, and Invoke an AWS Lambda Function ` in the AWS Toolkit for Eclipse. +create a Lambda function, see see :tke:`Tutorial: How to Create, Upload, and Invoke an AWS Lambda Function ` in the |tke|. .. contents:: :local: From 2b78cab356dc14ec155b08cdfdb0f0586d2e691c Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 12:00:16 -0500 Subject: [PATCH 191/225] added additional info --- doc_source/examples-lambda.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-lambda.rst b/doc_source/examples-lambda.rst index b45966a..e524d4d 100644 --- a/doc_source/examples-lambda.rst +++ b/doc_source/examples-lambda.rst @@ -19,7 +19,7 @@ Invoking, Listing, and Deleting Lambda Functions This section provides examples of programming with the Lambda service client by using the AWS SDK for Java. To learn how to -create a Lambda function, see see :tke:`Tutorial: How to Create, Upload, and Invoke an AWS Lambda Function ` in the |tke|. +create a Lambda function, see `How to Create AWS Lambda functions `_. .. contents:: :local: From d7a0cde84ceb2dac95a6387bdf3c1b3021b81ff2 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 12:09:28 -0500 Subject: [PATCH 192/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 458bcea..3b57198 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -134,8 +134,8 @@ After the content is added to the table, notice that an item is loaded by using *Partition* and *Sort* keys. Then the *Awards* item is updated. .. literalinclude:: example_code/dynamodb/src/main/java/aws/example/dynamodb/UseDynamoMapping.java - :lines: 82-105 - :dedent: 8 + :lines: 51-90 + :dedent: 2 :language: java See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. From 65afe0017d1888144b27d2d67a621011f3fc00e9 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 12:15:50 -0500 Subject: [PATCH 193/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 3b57198..1014cbf 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -122,8 +122,8 @@ The :aws-java-class:`DynamoDBMapper Date: Mon, 6 Jan 2020 12:23:40 -0500 Subject: [PATCH 194/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 1014cbf..71c844b 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -122,8 +122,7 @@ The :aws-java-class:`DynamoDBMapper ` on GitHub. From 1e3bd5484687903ac54e944d985cbed200e7a0ce Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 12:28:43 -0500 Subject: [PATCH 195/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 71c844b..cbda484 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -133,7 +133,7 @@ After the content is added to the table, notice that an item is loaded by using *Partition* and *Sort* keys. Then the *Awards* item is updated. .. literalinclude:: dynamodb.java.dynamoDB_mapping.main.txt - :dedent: 8 + :dedent: 4 :language: java See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. From fba796400777f926611db1f8ce5baddc8946f3c1 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 12:34:21 -0500 Subject: [PATCH 196/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index cbda484..c1de871 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -133,7 +133,7 @@ After the content is added to the table, notice that an item is loaded by using *Partition* and *Sort* keys. Then the *Awards* item is updated. .. literalinclude:: dynamodb.java.dynamoDB_mapping.main.txt - :dedent: 4 + :dedent: 2 :language: java See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. From 0466379b2753c280de2dd959a3f2e9fe5d134c31 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 12:35:38 -0500 Subject: [PATCH 197/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index c1de871..343d474 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -128,9 +128,8 @@ The :aws-java-class:`DynamoDBMapper ` class. -For information on creating the *Music* table, see :ddb-dg:`Create a Table ` in the |ddb-dg|. After the content is added to the table, notice that an item is loaded by using the -*Partition* and *Sort* keys. Then the *Awards* item is updated. +*Partition* and *Sort* keys. Then the *Awards* item is updated. For information on creating the *Music* table, see :ddb-dg:`Create a Table ` in the |ddb-dg|. .. literalinclude:: dynamodb.java.dynamoDB_mapping.main.txt :dedent: 2 From 271ce62a54155519e2df5ebd4a322953ec4ad01d Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 12:42:14 -0500 Subject: [PATCH 198/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 343d474..88046ff 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -132,7 +132,7 @@ After the content is added to the table, notice that an item is loaded by using *Partition* and *Sort* keys. Then the *Awards* item is updated. For information on creating the *Music* table, see :ddb-dg:`Create a Table ` in the |ddb-dg|. .. literalinclude:: dynamodb.java.dynamoDB_mapping.main.txt - :dedent: 2 + :dedent: 0 :language: java See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. From 18b477c44aae38b7d1836b4e5c00a7079aee3c5c Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 12:51:24 -0500 Subject: [PATCH 199/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index 88046ff..a0d0ad2 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -132,7 +132,7 @@ After the content is added to the table, notice that an item is loaded by using *Partition* and *Sort* keys. Then the *Awards* item is updated. For information on creating the *Music* table, see :ddb-dg:`Create a Table ` in the |ddb-dg|. .. literalinclude:: dynamodb.java.dynamoDB_mapping.main.txt - :dedent: 0 + :dedent: 8 :language: java See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. From cff3ab7f99709230dd1a2cb2a6cb167a4269f8ea Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 6 Jan 2020 12:56:47 -0500 Subject: [PATCH 200/225] added the code tags --- doc_source/examples-dynamodb-items.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-dynamodb-items.rst b/doc_source/examples-dynamodb-items.rst index a0d0ad2..b360d0a 100644 --- a/doc_source/examples-dynamodb-items.rst +++ b/doc_source/examples-dynamodb-items.rst @@ -132,7 +132,7 @@ After the content is added to the table, notice that an item is loaded by using *Partition* and *Sort* keys. Then the *Awards* item is updated. For information on creating the *Music* table, see :ddb-dg:`Create a Table ` in the |ddb-dg|. .. literalinclude:: dynamodb.java.dynamoDB_mapping.main.txt - :dedent: 8 + :dedent: 1 :language: java See the :sdk-examples-java-dynamodb:`complete example ` on GitHub. From f3c126f75ec4bb790d7296d09cdec75ab861d72e Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 9 Jan 2020 11:56:01 -0500 Subject: [PATCH 201/225] fixed order of service provider --- doc_source/java-dg-roles.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc_source/java-dg-roles.rst b/doc_source/java-dg-roles.rst index bf90958..ffafc22 100644 --- a/doc_source/java-dg-roles.rst +++ b/doc_source/java-dg-roles.rst @@ -29,13 +29,15 @@ The default provider chain and EC2 instance profiles If your application creates an AWS client using the default constructor, then the client will search for credentials using the :emphasis:`default credentials provider chain`, in the following order: -1. In system environment variables: :code:`AWS_ACCESS_KEY_ID` and :code:`AWS_SECRET_ACCESS_KEY`. +1. In the Java system properties: :code:`aws.accessKeyId` and :code:`aws.secretKey`. -2. In the Java system properties: :code:`aws.accessKeyId` and :code:`aws.secretKey`. +2. In system environment variables: :code:`AWS_ACCESS_KEY_ID` and :code:`AWS_SECRET_ACCESS_KEY`. 3. In the default credentials file (the location of this file varies by platform). -4. In the :emphasis:`instance profile credentials`, which exist within the instance metadata +4. Credentials delivered through the Amazon EC2 container service if the :code:`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` environment variable is set and security manager has permission to access the variable. + +5. In the :emphasis:`instance profile credentials`, which exist within the instance metadata associated with the IAM role for the EC2 instance. The final step in the default provider chain is available only when running your application on an From 335d2e00457472276c83fb9ab0954f94edd28a27 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 9 Jan 2020 21:21:07 -0500 Subject: [PATCH 202/225] added additional info --- doc_source/credentials.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 50fbede..758ad44 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -60,6 +60,7 @@ class. The default credential provider chain looks for credentials in this order variable :envvar:`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` is set. The |sdk-java| uses the :aws-java-class:`ContainerCredentialsProvider ` to load these credentials. You can specify the IP address for this value. + #. **Instance profile credentials** |ndash| used on EC2 instances, and delivered through the |EC2| metadata service. The |sdk-java| uses the :aws-java-class:`InstanceProfileCredentialsProvider ` to load these credentials. You can specify the IP address for this value. @@ -69,6 +70,7 @@ class. The default credential provider chain looks for credentials in this order :aws-java-class:`EC2ContainerCredentialsProviderWrapper ` for more information. +#. **Web Identity Token credentials** from the environment or container. Setting Credentials ------------------- From 4afd628e34689018c1d9909ad213de7bda0ab446 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 9 Jan 2020 21:21:53 -0500 Subject: [PATCH 203/225] added additional info --- doc_source/java-dg-roles.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc_source/java-dg-roles.rst b/doc_source/java-dg-roles.rst index ffafc22..82f1fec 100644 --- a/doc_source/java-dg-roles.rst +++ b/doc_source/java-dg-roles.rst @@ -40,7 +40,9 @@ for credentials using the :emphasis:`default credentials provider chain`, in the 5. In the :emphasis:`instance profile credentials`, which exist within the instance metadata associated with the IAM role for the EC2 instance. -The final step in the default provider chain is available only when running your application on an +6. Web Identity Token credentials from the environment or container. + +The :emphasis:`instance profile credentials` step in the default provider chain is available only when running your application on an |EC2| instance, but provides the greatest ease of use and best security when working with |EC2| instances. You can also pass an :aws-java-class:`InstanceProfileCredentialsProvider ` instance directly to the client constructor to get From be848e56db1d0e629ac2714f9e1d8e1e07e479c0 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Thu, 23 Jan 2020 11:20:46 -0500 Subject: [PATCH 204/225] updated file --- doc_source/examples-sqs-messages.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc_source/examples-sqs-messages.rst b/doc_source/examples-sqs-messages.rst index 67aa64e..d4427c9 100644 --- a/doc_source/examples-sqs-messages.rst +++ b/doc_source/examples-sqs-messages.rst @@ -45,6 +45,7 @@ Add a single message to an |SQS| queue by calling the |sqsclient| client's :dedent: 8 :language: java +See the :sdk-examples-java-sqs:`complete example ` on GitHub. .. _sqs-messages-send-multiple: From 32caab7fb5b1257ab6fa63c7e4ee1b7e9c75a75e Mon Sep 17 00:00:00 2001 From: scmacdon Date: Mon, 9 Mar 2020 16:37:58 -0400 Subject: [PATCH 205/225] minor change --- doc_source/examples-iam.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-iam.rst b/doc_source/examples-iam.rst index 92005a0..46500e3 100644 --- a/doc_source/examples-iam.rst +++ b/doc_source/examples-iam.rst @@ -16,7 +16,7 @@ :description: Programming AWS Identity and Access Management using the AWS SDK for Java :keywords: AWS SDK for Java code examples, IAM -This section provides examples of programming |iam|_ using the |sdk-java|_. +This section provides examples of programming |iam|_ by using the |sdk-java|_. .. include:: common/desc-iam.txt From 9f0bdd5854d47a071b31fffdb4eb2b0a5591d411 Mon Sep 17 00:00:00 2001 From: Scott Macdonald <57190223+scmacdon@users.noreply.github.com> Date: Fri, 13 Mar 2020 13:29:23 -0400 Subject: [PATCH 206/225] Create java-tls.rst add new file --- doc_source/java-tls.rst | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 doc_source/java-tls.rst diff --git a/doc_source/java-tls.rst b/doc_source/java-tls.rst new file mode 100644 index 0000000..f680ee8 --- /dev/null +++ b/doc_source/java-tls.rst @@ -0,0 +1,64 @@ +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +##################################### +Java SDK TLS 1.2 +##################################### + +.. meta:: + :description: Applies to Java SSL implementation (default SSL implementation in the SDK)Learn how the AWS shared responsibility model applies to data protection in this AWS product or service. + :keywords: + +The following information only applies to Java SSL implementation (default SSL implementation in the SDK). If you are using a different SSL implementations, you need to +look at your specific ssl implementation for how to enforce tls versions. + +TLS support in Java +=================== +TLS 1.2 is supported starting from Java 7. + +How to check TLS version +======================== +To check what TLS version is supported in your JVM, you can use the following code. + +.. code-block:: java + + System*.out.println(*Arrays*.toString(*SSLContext*.getDefault().getSupportedSSLParameters().getProtocols())); + +To see the SSL handshake in action and what version of TLS is used, you can use the system property **javax.net.debug**. + +.. code-block:: java + + java app.jar -Djavax.net.debug=ssl + +How to set TLS version +====================== + +**AWS Java SDK 1.x** + +* Apache http client: the SDK always prefers TLS 1.2 if it's supported in the platform. + +**AWS Java SDK 2.x** + +* ApacheHttpClient: the SDK always prefers TLS 1.2 if it's supported in the platform. + +* UrlHttpConnectionClient: + * To enforce only tls 1.2, using the system property + +.. code-block:: java + + java app.jar -Djdk.tls.client.protocols=TLSv1.2 + +or in code + +.. code-block:: java + + System.setProperty("jdk.tls.client.protocols", "TLSv1.2"); + +* NettyNioHttpClient: The SDK dependency Netty by default always prefers TLS 1.2 if it's supported in the platform. From 4cc6d7af8bf0db46199fb79e09f61f0b8cd85988 Mon Sep 17 00:00:00 2001 From: scmacdon Date: Fri, 13 Mar 2020 13:36:19 -0400 Subject: [PATCH 207/225] update file --- doc_source/security.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc_source/security.rst b/doc_source/security.rst index 827ac76..07691e7 100644 --- a/doc_source/security.rst +++ b/doc_source/security.rst @@ -25,6 +25,7 @@ Security for |SERVICENAMETITLE| :titlesonly: Data Protection + Java SDK TLS 1.2 Identity and Access Management Compliance Validation Resilience From 352d6f4b8b8725ab011135ae2b0155f28c25f57b Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Thu, 19 Mar 2020 12:32:17 -0700 Subject: [PATCH 208/225] update to security section --- doc_source/java-tls.rst | 37 ++++++++++++++++++------------------- doc_source/security.rst | 2 +- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/doc_source/java-tls.rst b/doc_source/java-tls.rst index f680ee8..68d9899 100644 --- a/doc_source/java-tls.rst +++ b/doc_source/java-tls.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -9,23 +9,23 @@ limitations under the License. ##################################### -Java SDK TLS 1.2 +AWS SDK for Java support for TLS 1.2 ##################################### .. meta:: - :description: Applies to Java SSL implementation (default SSL implementation in the SDK)Learn how the AWS shared responsibility model applies to data protection in this AWS product or service. + :description: Applies to Java SSL implementation (default SSL implementation in the SDK). Learn how the AWS shared responsibility model applies to data protection in this AWS product or service. :keywords: -The following information only applies to Java SSL implementation (default SSL implementation in the SDK). If you are using a different SSL implementations, you need to -look at your specific ssl implementation for how to enforce tls versions. +The following information applies only to Java SSL implementation (the default SSL implementation in the AWS SDK for Java). If you're using a different SSL implementation, +see your specific SSL implementation to learn how to enforce TLS versions. TLS support in Java =================== -TLS 1.2 is supported starting from Java 7. +TLS 1.2 is supported starting in Java 7. -How to check TLS version -======================== -To check what TLS version is supported in your JVM, you can use the following code. +How to check the TLS version +============================ +To check what TLS version is supported in your Java virtual machine (JVM), you can use the following code. .. code-block:: java @@ -37,28 +37,27 @@ To see the SSL handshake in action and what version of TLS is used, you can use java app.jar -Djavax.net.debug=ssl -How to set TLS version -====================== +How to set the TLS version +========================== -**AWS Java SDK 1.x** +**AWS SDK for Java 1.x** -* Apache http client: the SDK always prefers TLS 1.2 if it's supported in the platform. +* Apache HTTP client: The SDK always prefers TLS 1.2 (if it's supported in the platform). -**AWS Java SDK 2.x** +**AWS SDK for Java 2.x** -* ApacheHttpClient: the SDK always prefers TLS 1.2 if it's supported in the platform. +* ApacheHttpClient: The SDK always prefers TLS 1.2 (if it's supported in the platform). -* UrlHttpConnectionClient: - * To enforce only tls 1.2, using the system property +* UrlHttpConnectionClient: To enforce only TLS 1.2, you can use this Java command. .. code-block:: java java app.jar -Djdk.tls.client.protocols=TLSv1.2 -or in code +Or use this code. .. code-block:: java System.setProperty("jdk.tls.client.protocols", "TLSv1.2"); -* NettyNioHttpClient: The SDK dependency Netty by default always prefers TLS 1.2 if it's supported in the platform. +* NettyNioHttpClient: The SDK dependency for Netty is TLS 1.2 (if it's supported in the platform). diff --git a/doc_source/security.rst b/doc_source/security.rst index 07691e7..3a2e39f 100644 --- a/doc_source/security.rst +++ b/doc_source/security.rst @@ -25,7 +25,7 @@ Security for |SERVICENAMETITLE| :titlesonly: Data Protection - Java SDK TLS 1.2 + Enforcing TLS 1.2 Identity and Access Management Compliance Validation Resilience From 0a7b4cce5d1ce5d05c16c01220088d362bb5e95c Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Thu, 19 Mar 2020 12:36:19 -0700 Subject: [PATCH 209/225] minor repo cleanup --- doc_source/{java-tls.rst => security-java-tls.rst} | 0 doc_source/security.rst | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename doc_source/{java-tls.rst => security-java-tls.rst} (100%) diff --git a/doc_source/java-tls.rst b/doc_source/security-java-tls.rst similarity index 100% rename from doc_source/java-tls.rst rename to doc_source/security-java-tls.rst diff --git a/doc_source/security.rst b/doc_source/security.rst index 3a2e39f..34d0c04 100644 --- a/doc_source/security.rst +++ b/doc_source/security.rst @@ -25,7 +25,7 @@ Security for |SERVICENAMETITLE| :titlesonly: Data Protection - Enforcing TLS 1.2 + Enforcing TLS 1.2 Identity and Access Management Compliance Validation Resilience From 878d8f2383cb7c29d34d27225c59e7ab51103bc8 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Mon, 13 Apr 2020 18:33:14 -0700 Subject: [PATCH 210/225] updating Gradle setup instructions --- doc_source/setup-project-gradle.rst | 90 ++++++++++++++++++----------- 1 file changed, 55 insertions(+), 35 deletions(-) diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index 1f36d79..c946f23 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -12,41 +12,52 @@ Using the SDK with Gradle ######################### + +Project setup for Gradle 4.6 or higher +=============== + `Since Gradle 4.6 `_ it is possible to use Gradle's improved POM support feature for importing bill of materials (BOM) files by simply declaring a dependency on a BOM. -.. topic:: To configure the SDK for Gradle 4.6 and upper +To manage SDK dependencies for your Gradle_ project, import the |sdk-java|'s Maven Bill of Materials (BOM) into the :file:`build.gradle` file. + +.. note:: Replace *1.11.X* in the build file examples below with a valid version of the |sdk-java|. Find the latest version in the + `AWS SDK for Java 1.11.x Reference `_ + - #. Enable `IMPROVED_POM_SUPPORT` feature in :file:`settings.gradle` file (not needed in Gradle 5 and upper) +.. topic:: To configure the |sdk-java| for Gradle 4.6 or higher: + + #. If you are using Gradle 5.0 or higher, skip to Step 2. Otherwise, enable the `IMPROVED_POM_SUPPORT` feature in the :file:`settings.gradle` file .. code-block:: groovy enableFeaturePreview('IMPROVED_POM_SUPPORT') - #. Import BOM as a usual dependency in the *dependencies* section + #. Add the BOM to the *dependencies* section of the :file:`build.gradle` file. .. code-block:: groovy + ... dependencies { - implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.228') + implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.X') + + // Declare individual SDK dependencies without version + ... } - #. Specify the SDK modules that you'll be using in the *dependencies* section + #. Specify the SDK modules you want to use in the *dependencies* section. For example, the following includes a dependency for |S3long|. .. code-block:: groovy + ... dependencies { implementation 'com.amazonaws:aws-java-sdk-s3' - testCompile group: 'junit', name: 'junit', version: '4.11' + ... } -Gradle will automatically resolve the correct version of your SDK dependencies using the information -from the BOM. - -You can also refer to the *AWS Code Catalog* to learn what dependencies to use for a given AWS service. Refer to the POM file under a specific service example. -For example, if you are interested in the dependencies for the AWS S3 service (as shown in the previous dependencies example), see the :sdk-examples-java-s3:`complete example ` on GitHub. (Look at the pom under /java/example_code/s3). +Gradle automatically resolves the correct version of your SDK dependencies using the information from the BOM. -Here's the complete :file:`build.gradle` file: +The following is an example of a complete :file:`build.gradle` file that includes a dependency for |S3|: .. code-block:: groovy @@ -62,18 +73,27 @@ Here's the complete :file:`build.gradle` file: } dependencies { - implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.228') - implementation 'com.amazonaws:aws-java-sdk-s3' - testCompile group: 'junit', name: 'junit', version: '4.11' + implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.X') + implementation 'com.amazonaws:aws-java-sdk-s3' + testCompile group: 'junit', name: 'junit', version: '4.11' } -Gradle versions prior to 4.6 lack of native BOM support, so Spring's `dependency management plugin -`_ for Gradle can be used -to import the SDK's Maven Bill of Materials (BOM) to manage SDK dependencies for your project. +.. note:: Replace the dependency for |S3| above with the dependency or dependencies of the Amazon service(s) you will be using in your project. The modules (dependencies) that are managed by the |sdk-java| BOM are listed on Maven Central (https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-bom/latest). + + +Project setup for Gradle versions prior to 4.6 +=============== + +Gradle versions prior to 4.6 lack native BOM support. To manage |sdk-java| dependencies for your project, +use Spring's `dependency management plugin +`_ for Gradle to import the SDK's Maven Bill of Materials (BOM). -.. topic:: To configure the SDK for Gradle prior 4.6 +.. note:: Replace *1.11.X* in the build file examples below with a valid version of the |sdk-java|. Find the latest version in the + `AWS SDK for Java 1.11.x Reference `_ - #. Add the dependency management plugin to your :file:`build.gradle` file +.. topic:: To configure the SDK for Gradle versions prior to 4.6: + + #. Add the dependency management plugin to your :file:`build.gradle` file. .. code-block:: groovy @@ -82,40 +102,38 @@ to import the SDK's Maven Bill of Materials (BOM) to manage SDK dependencies for mavenCentral() } dependencies { - classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE" + classpath "io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE" } } apply plugin: "io.spring.dependency-management" - #. Add the BOM to the *dependencyManagement* section of the file + #. Add the BOM to the *dependencyManagement* section of the file. .. code-block:: groovy dependencyManagement { imports { - mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.228' + mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.X' } } - #. Specify the SDK modules that you'll be using in the *dependencies* section + #. Specify the SDK modules that you'll be using in the *dependencies* section. For example, the following includes a dependency for |S3long|. .. code-block:: groovy dependencies { compile 'com.amazonaws:aws-java-sdk-s3' - testCompile group: 'junit', name: 'junit', version: '4.11' } -Gradle will automatically resolve the correct version of your SDK dependencies using the information -from the BOM. +Gradle automatically resolves the correct version of your SDK dependencies using the information from the BOM. -Here's the complete :file:`build.gradle` file: +The following is an example of a complete :file:`build.gradle` file that includes a dependency for |S3|: .. code-block:: groovy group 'aws.test' - version '1.0-SNAPSHOT' + version '1.0' apply plugin: 'java' @@ -127,10 +145,10 @@ Here's the complete :file:`build.gradle` file: buildscript { repositories { - mavenCentral() + mavenCentral() } dependencies { - classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE" + classpath "io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE" } } @@ -138,7 +156,7 @@ Here's the complete :file:`build.gradle` file: dependencyManagement { imports { - mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.228' + mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.X' } } @@ -147,5 +165,7 @@ Here's the complete :file:`build.gradle` file: testCompile group: 'junit', name: 'junit', version: '4.11' } -.. note:: For more detail about specifying SDK dependencies using the BOM, see - :doc:`setup-project-maven`. +.. note:: Replace the dependency for |S3| above with the dependency or dependencies of the Amazon service(s) you will be using in your project. The modules (dependencies) that are managed by the |sdk-java| BOM are listed on Maven Central (https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-bom/latest). + +For more detail about specifying SDK dependencies using the BOM, see +:doc:`setup-project-maven`. From 6780b657638f8b560ba2208f61f07b007f66d324 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Tue, 14 Apr 2020 13:22:06 -0700 Subject: [PATCH 211/225] minor reorganization --- doc_source/java-dg-samples.rst | 2 +- doc_source/prog-services-sts.rst | 19 +++---------------- doc_source/prog-services.rst | 5 ++--- doc_source/setup-credentials.rst | 6 ++++++ 4 files changed, 12 insertions(+), 20 deletions(-) diff --git a/doc_source/java-dg-samples.rst b/doc_source/java-dg-samples.rst index 73aacf2..343550d 100644 --- a/doc_source/java-dg-samples.rst +++ b/doc_source/java-dg-samples.rst @@ -9,7 +9,7 @@ limitations under the License. ####################### -|sdk-java| Code Samples +Code Samples included with the SDK ####################### The |sdk-java| comes packaged with code samples that demonstrate many of the features of diff --git a/doc_source/prog-services-sts.rst b/doc_source/prog-services-sts.rst index bbf4721..a7cd288 100644 --- a/doc_source/prog-services-sts.rst +++ b/doc_source/prog-services-sts.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -66,25 +66,12 @@ Retrieve temporary security credentials from |STS| .. code-block:: java - AWSSecurityTokenService sts_client = new AWSSecurityTokenServiceClientBuilder().standard().withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("sts-endpoint.amazonaws.com", "signing-region")).build() + AWSSecurityTokenServiceClientBuilder sts_client = new AWSSecurityTokenServiceClientBuilder().standard().withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("sts-endpoint.amazonaws.com", "signing-region")).build() - When creating the client with no arguments (:code:`AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClientBuilder().standard().build();`), the default credential provider chain is used to + When creating the client with no arguments (:code:`AWSSecurityTokenServiceClientBuilder sts_client = new AWSSecurityTokenServiceClientBuilder().standard().build();`), the default credential provider chain is used to retrieve credentials. You can provide a specific credential provider if you want. For more information, see Providing AWS Credentials in the AWS SDK for Java. - #. :emphasis:`Optional`; requires that you have activated the region) Set the endpoint for the - STS client: - - .. code-block:: java - - sts_client.setEndpoint("sts-endpoint.amazonaws.com"); - - where :emphasis:`sts-endpoint` represents the STS endpoint for your region. - - .. important:: Do not use the :methodname:`setRegion` method to set a regional endpoint - |mdash| for backwards compatibility, that method continues to use the single global - endpoint of sts.amazonaws.com. - #. Create a :aws-java-class:`GetSessionTokenRequest ` object, and optionally set the duration in seconds for which the temporary credentials are valid: diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index 722f3c5..995b1b3 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -35,7 +35,6 @@ In 2018, AWS released |sdk-java| v2. For more AWS examples, see the `AWS SDK for :maxdepth: 1 :titlesonly: - SDK Code Samples Amazon CloudWatch Examples Amazon DynamoDB Examples Amazon EC2 Examples @@ -44,5 +43,5 @@ In 2018, AWS released |sdk-java| v2. For more AWS examples, see the `AWS SDK for Amazon Pinpoint Examples Amazon S3 Examples Amazon SQS Examples - prog-services-sts Amazon SWF Examples + Code Samples included with the SDK diff --git a/doc_source/setup-credentials.rst b/doc_source/setup-credentials.rst index 127b3b3..7042377 100644 --- a/doc_source/setup-credentials.rst +++ b/doc_source/setup-credentials.rst @@ -92,3 +92,9 @@ You can use similar techniques to setting credentials to set your default AWS re .. The following file is in the shared content at https://github.com/awsdocs/aws-doc-shared-content .. include:: common/sdk-shared-region.txt + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + prog-services-sts \ No newline at end of file From 415f3349ea1e82843f1bd635ce6490a980398921 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Tue, 14 Apr 2020 13:24:00 -0700 Subject: [PATCH 212/225] replaced deprecated method --- doc_source/java-dg-region-selection.rst | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/doc_source/java-dg-region-selection.rst b/doc_source/java-dg-region-selection.rst index de6e25c..e6a1ae0 100644 --- a/doc_source/java-dg-region-selection.rst +++ b/doc_source/java-dg-region-selection.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -79,14 +79,19 @@ Choosing a Specific Endpoint ============================ Each AWS client can be configured to use a *specific endpoint* within a region by calling the -:methodname:`setEndpoint` method. +:methodname:`withEndpointConfiguration` method when creating the client. -For example, to configure the |EC2| client to use the |euwest1-name|, use the following code. +For example, to configure the |S3| client to use the |euwest1-name|, use the following code. :: - AmazonEC2 ec2 = new AmazonEC2(myCredentials); - ec2.setEndpoint("https://ec2.eu-west-1.amazonaws.com/"); + AmazonS3 s3 = AmazonS3ClientBuilder.standard() + .withEndpointConfiguration(new EndpointConfiguration( + "https://s3.eu-west-1.amazonaws.com/", + "eu-west-1")) + .withCredentials(CREDENTIALS_PROVIDER) + .build(); + See |regions-and-endpoints|_ for the current list of regions and their corresponding endpoints for all AWS services. From 54abf885786b862cf2af7c5dadf7e32ac9a1b1c2 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Sun, 19 Apr 2020 16:02:19 -0700 Subject: [PATCH 213/225] fixes based on customer feedback --- doc_source/sdk-metrics.rst | 36 +++++++++---------- doc_source/setup-project-gradle.rst | 55 +++++++++++++++-------------- 2 files changed, 47 insertions(+), 44 deletions(-) diff --git a/doc_source/sdk-metrics.rst b/doc_source/sdk-metrics.rst index 66df031..ef87fca 100755 --- a/doc_source/sdk-metrics.rst +++ b/doc_source/sdk-metrics.rst @@ -62,30 +62,14 @@ Enabling |SDKM| is independent of configuring your credentials to use an AWS ser You can enable |SDKM| using one of 4 options. -* :ref:`csm-enable-agent-code` * :ref:`csm-enable-agent-environ` +* :ref:`csm-enable-agent-code` * :ref:`csm-enable-agent-java-prop` * :ref:`csm-enable-agent-shared-config` -.. _csm-enable-agent-code: - -Option 1: Set |SDKM| in Code ----------------------------- - -The |language| implementation allows you to set |SDKM| configurations within code when building -a service client. -The values set in code override any configurations set in the other options described below. - -.. code-block:: java - - CsmConfiguration csmConfig = new CsmConfiguration(true, MY_PORT, MY_CLIENT_ID); - AmazonDynamoDB dynamodb = AmazonDynamoDBClientBuilder.standard() - .withClientSideMonitoringConfigurationProvider(new StaticCsmConfigurationProvider(csmConfig)) - .build(); - .. _csm-enable-agent-environ: -Option 2: Set Environment Variables +Option 1: Set Environment Variables ----------------------------------- If :code:`AWS_CSM_ENABLED` is not set, the SDK first checks the profile specified in @@ -102,6 +86,22 @@ To turn on |SDKM|, add the following to your environmental variables. Note: Enabling |SDKM| does not configure your credentials to use an AWS service. +.. _csm-enable-agent-code: + +Option 2: Set |SDKM| in Code +---------------------------- + +The |language| implementation allows you to set |SDKM| configurations within code when building +a service client. +The values set in code override any configurations set in the other options described below. + +.. code-block:: java + + CsmConfiguration csmConfig = new CsmConfiguration(true, MY_PORT, MY_CLIENT_ID); + AmazonDynamoDB dynamodb = AmazonDynamoDBClientBuilder.standard() + .withClientSideMonitoringConfigurationProvider(new StaticCsmConfigurationProvider(csmConfig)) + .build(); + .. _csm-enable-agent-java-prop: Option 3: Set Java System Property diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index c946f23..aa12322 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -13,21 +13,27 @@ Using the SDK with Gradle ######################### -Project setup for Gradle 4.6 or higher -=============== +.. meta:: + :description: How to use Gradle to set up your AWS SDK for Java project + :keywords: AWS SDK for Java, Gradle, BOM, install, download, setup + + +To manage SDK dependencies for your Gradle_ project, import the Maven BOM for the |sdk-java| into the :file:`build.gradle` file. -`Since Gradle 4.6 `_ it is possible to -use Gradle's improved POM support feature for importing bill of materials (BOM) files by simply declaring a dependency on a BOM. +.. note:: In the following examples, replace *1.11.X* in the build file with a valid version of the |sdk-java|. Find the latest version in the + `AWS SDK for Java 1.11.x Reference `_. -To manage SDK dependencies for your Gradle_ project, import the |sdk-java|'s Maven Bill of Materials (BOM) into the :file:`build.gradle` file. -.. note:: Replace *1.11.X* in the build file examples below with a valid version of the |sdk-java|. Find the latest version in the - `AWS SDK for Java 1.11.x Reference `_ +Project setup for Gradle 4.6 or higher +=============== +`Since Gradle 4.6 `_, you can +use Gradle's improved POM support feature for importing bill of materials (BOM) files by declaring a dependency on a BOM. -.. topic:: To configure the |sdk-java| for Gradle 4.6 or higher: - #. If you are using Gradle 5.0 or higher, skip to Step 2. Otherwise, enable the `IMPROVED_POM_SUPPORT` feature in the :file:`settings.gradle` file +.. topic:: To configure the |sdk-java| for Gradle 4.6 or later + + #. If you're using Gradle 5.0 or later, skip to step 2. Otherwise, enable the *IMPROVED_POM_SUPPORT* feature in the :file:`settings.gradle` file. .. code-block:: groovy @@ -45,7 +51,7 @@ To manage SDK dependencies for your Gradle_ project, import the |sdk-java|'s Mav ... } - #. Specify the SDK modules you want to use in the *dependencies* section. For example, the following includes a dependency for |S3long|. + #. Specify the SDK modules to use in the *dependencies* section. For example, the following includes a dependency for |S3long| (|S3|). .. code-block:: groovy @@ -55,9 +61,9 @@ To manage SDK dependencies for your Gradle_ project, import the |sdk-java|'s Mav ... } -Gradle automatically resolves the correct version of your SDK dependencies using the information from the BOM. +Gradle automatically resolves the correct version of your SDK dependencies by using the information from the BOM. -The following is an example of a complete :file:`build.gradle` file that includes a dependency for |S3|: +The following is an example of a complete :file:`build.gradle` file that includes a dependency for |S3|. .. code-block:: groovy @@ -78,20 +84,17 @@ The following is an example of a complete :file:`build.gradle` file that include testCompile group: 'junit', name: 'junit', version: '4.11' } -.. note:: Replace the dependency for |S3| above with the dependency or dependencies of the Amazon service(s) you will be using in your project. The modules (dependencies) that are managed by the |sdk-java| BOM are listed on Maven Central (https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-bom/latest). +.. note:: In the previous example, replace the dependency for |S3| with the dependencies of the AWS services you will use in your project. The modules (dependencies) that are managed by the |sdk-java| BOM are listed on Maven central repository (https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-bom/latest). -Project setup for Gradle versions prior to 4.6 +Project setup for Gradle versions earlier than 4.6 =============== -Gradle versions prior to 4.6 lack native BOM support. To manage |sdk-java| dependencies for your project, +Gradle versions earlier than 4.6 lack native BOM support. To manage |sdk-java| dependencies for your project, use Spring's `dependency management plugin -`_ for Gradle to import the SDK's Maven Bill of Materials (BOM). - -.. note:: Replace *1.11.X* in the build file examples below with a valid version of the |sdk-java|. Find the latest version in the - `AWS SDK for Java 1.11.x Reference `_ +`_ for Gradle to import the Maven BOM for the SDK. -.. topic:: To configure the SDK for Gradle versions prior to 4.6: +.. topic:: To configure the SDK for Gradle versions earlier than 4.6 #. Add the dependency management plugin to your :file:`build.gradle` file. @@ -118,7 +121,7 @@ use Spring's `dependency management plugin } } - #. Specify the SDK modules that you'll be using in the *dependencies* section. For example, the following includes a dependency for |S3long|. + #. Specify the SDK modules that you'll use in the *dependencies* section. For example, the following includes a dependency for |S3|. .. code-block:: groovy @@ -126,9 +129,9 @@ use Spring's `dependency management plugin compile 'com.amazonaws:aws-java-sdk-s3' } -Gradle automatically resolves the correct version of your SDK dependencies using the information from the BOM. +Gradle automatically resolves the correct version of your SDK dependencies by using the information from the BOM. -The following is an example of a complete :file:`build.gradle` file that includes a dependency for |S3|: +The following is an example of a complete :file:`build.gradle` file that includes a dependency for |S3|. .. code-block:: groovy @@ -165,7 +168,7 @@ The following is an example of a complete :file:`build.gradle` file that include testCompile group: 'junit', name: 'junit', version: '4.11' } -.. note:: Replace the dependency for |S3| above with the dependency or dependencies of the Amazon service(s) you will be using in your project. The modules (dependencies) that are managed by the |sdk-java| BOM are listed on Maven Central (https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-bom/latest). +.. note:: In the previous example, replace the dependency for |S3| with the dependencies of the AWS service you will use in your project. The modules (dependencies) that are managed by the |sdk-java| BOM are listed on Maven central repository (https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-bom/latest). -For more detail about specifying SDK dependencies using the BOM, see +For more information about specifying SDK dependencies by using the BOM, see :doc:`setup-project-maven`. From 908a6804830a488264152fc1ec6df5f6bff08495 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Tue, 21 Apr 2020 12:55:34 -0700 Subject: [PATCH 214/225] typo --- doc_source/section-client-configuration.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/section-client-configuration.rst b/doc_source/section-client-configuration.rst index a552071..70fc1e8 100644 --- a/doc_source/section-client-configuration.rst +++ b/doc_source/section-client-configuration.rst @@ -119,7 +119,7 @@ Large buffer sizes (e.g., 2 MB) allow the operating system to buffer more data i requiring the remote server to acknowledge receipt of that information, and so can be particularly useful when the network has high latency. -This is only a *hint*, and the operating system might not to honor it. When using this option, users +This is only a *hint*, and the operating system might not honor it. When using this option, users should always check the operating system's configured limits and defaults. Most operating systems have a maximum TCP buffer size limit configured, and won't let you go beyond that limit unless you explicitly raise the maximum TCP buffer size limit. From 3c4707a05f1d174bd0d8dce785d52926ef4ac307 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Sat, 25 Apr 2020 17:49:43 -0700 Subject: [PATCH 215/225] customer feedback; fixing code error --- doc_source/prog-services-sts.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/prog-services-sts.rst b/doc_source/prog-services-sts.rst index a7cd288..f82ecb5 100644 --- a/doc_source/prog-services-sts.rst +++ b/doc_source/prog-services-sts.rst @@ -66,9 +66,9 @@ Retrieve temporary security credentials from |STS| .. code-block:: java - AWSSecurityTokenServiceClientBuilder sts_client = new AWSSecurityTokenServiceClientBuilder().standard().withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("sts-endpoint.amazonaws.com", "signing-region")).build() + AWSSecurityTokenService sts_client = new AWSSecurityTokenServiceClientBuilder().standard().withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("sts-endpoint.amazonaws.com", "signing-region")).build() - When creating the client with no arguments (:code:`AWSSecurityTokenServiceClientBuilder sts_client = new AWSSecurityTokenServiceClientBuilder().standard().build();`), the default credential provider chain is used to + When creating the client with no arguments (:code:`AWSSecurityTokenService sts_client = new AWSSecurityTokenServiceClientBuilder().standard().build();`), the default credential provider chain is used to retrieve credentials. You can provide a specific credential provider if you want. For more information, see Providing AWS Credentials in the AWS SDK for Java. From 7de170fd15e6ea82b699a45ad3116f2fbbab3f59 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Wed, 6 May 2020 10:38:10 -0700 Subject: [PATCH 216/225] fix broken links --- doc_source/data-protection.rst | 2 +- doc_source/security.rst | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc_source/data-protection.rst b/doc_source/data-protection.rst index c315926..185e987 100644 --- a/doc_source/data-protection.rst +++ b/doc_source/data-protection.rst @@ -29,7 +29,7 @@ For data protection purposes, we recommend that you protect |AWS| account creden you secure your data in the following ways: * Use multi-factor authentication (MFA) with each account. -* Use SSL/TLS to communicate with |AWS| resources. +* Use SSL/TLS to communicate with |AWS| resources. To use a minimum TLS version of 1.2, see `Enforcing TLS 1.2 `_. * Set up API and user activity logging with |CTlong|. * Use |AWS| encryption solutions, along with all default security controls within |AWS| services. * Use advanced managed security services such as |MCElong|, which assists in discovering and securing personal data that diff --git a/doc_source/security.rst b/doc_source/security.rst index 34d0c04..ac8c981 100644 --- a/doc_source/security.rst +++ b/doc_source/security.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -26,7 +26,7 @@ Security for |SERVICENAMETITLE| Data Protection Enforcing TLS 1.2 - Identity and Access Management - Compliance Validation - Resilience - Infrastructure Security + Identity and Access Management security-iam> + Compliance Validation + Resilience + Infrastructure Security From 5ffc174fbd7c0b20f2e7a7e48937c1290b990d8a Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Wed, 6 May 2020 10:39:33 -0700 Subject: [PATCH 217/225] fix broken links --- doc_source/compliance-validation.rst | 58 +++++++++++++++++++++ doc_source/disaster-recovery-resiliency.rst | 29 +++++++++++ doc_source/infrastructure-security.rst | 12 +++++ doc_source/security-iam.rst | 33 ++++++++++++ 4 files changed, 132 insertions(+) create mode 100644 doc_source/compliance-validation.rst create mode 100644 doc_source/disaster-recovery-resiliency.rst create mode 100644 doc_source/infrastructure-security.rst create mode 100644 doc_source/security-iam.rst diff --git a/doc_source/compliance-validation.rst b/doc_source/compliance-validation.rst new file mode 100644 index 0000000..f3ea15b --- /dev/null +++ b/doc_source/compliance-validation.rst @@ -0,0 +1,58 @@ +Compliance Validation for this AWS Product or Service +===================================================== + +This AWS product or service follows the `shared responsibility +model `__ +through the specific Amazon Web Services (AWS) services it supports. For +AWS service security information, see the `AWS service security +documentation +page `__ +and `AWS services that are in scope of AWS compliance efforts by +compliance +program `__. + +The security and compliance of AWS services is assessed by third-party +auditors as part of multiple AWS compliance programs. These include SOC, +PCI, FedRAMP, HIPAA, and others. AWS provides a frequently updated list +of AWS services in scope of specific compliance programs at `AWS +Services in Scope by Compliance +Program `__. + +Third-party audit reports are available for you to download using AWS +Artifact. For more information, see `Downloading Reports in AWS +Artifact `__. + +For more information about AWS compliance programs, see `AWS Compliance +Programs `__. + +Your compliance responsibility when using this AWS product or service to +access an AWS service is determined by the sensitivity of your data, +your organization’s compliance objectives, and applicable laws and +regulations. If your use of an AWS service is subject to compliance with +standards such as HIPAA, PCI, or FedRAMP, AWS provides resources to +help: + + + `Security and Compliance Quick Start Guides + `__ + – Deployment guides that discuss architectural considerations and provide steps for + deploying security-focused and compliance-focused baseline environments on AWS. + + + + `Architecting for HIPAA Security and Compliance Whitepaper + `__ + – A whitepaper that describes how companies can use AWS to create + HIPAA-compliant applications. + + + + `AWS Compliance Resources `__ + – A collection of workbooks and guides that might apply to your industry and + location. + + + + `AWS Config `__ – A service that assesses how well your + resource configurations comply with internal practices, industry guidelines, and regulations. + + + + `AWS Security Hub `__ – A comprehensive view of + your security state within AWS that helps you check your compliance with + security industry standards and best practices. diff --git a/doc_source/disaster-recovery-resiliency.rst b/doc_source/disaster-recovery-resiliency.rst new file mode 100644 index 0000000..e4abd93 --- /dev/null +++ b/doc_source/disaster-recovery-resiliency.rst @@ -0,0 +1,29 @@ +Resilience for this AWS Product or Service +========================================== + +The Amazon Web Services (AWS) global infrastructure is built around AWS +Regions and Availability Zones. + +AWS Regions provide multiple physically separated and isolated +Availability Zones, which are connected with low-latency, +high-throughput, and highly redundant networking. + +With Availability Zones, you can design and operate applications and +databases that automatically fail over between Availability Zones +without interruption. Availability Zones are more highly available, +fault tolerant, and scalable than traditional single or multiple data +center infrastructures. + +For more information about AWS Regions and Availability Zones, see `AWS +Global +Infrastructure `__. + +This AWS product or service follows the `shared responsibility +model `__ +through the specific Amazon Web Services (AWS) services it supports. For +AWS service security information, see the `AWS service security +documentation +page `__ +and `AWS services that are in scope of AWS compliance efforts by +compliance +program `__. diff --git a/doc_source/infrastructure-security.rst b/doc_source/infrastructure-security.rst new file mode 100644 index 0000000..10e994e --- /dev/null +++ b/doc_source/infrastructure-security.rst @@ -0,0 +1,12 @@ +Infrastructure Security for this AWS Product or Service +======================================================= + +This AWS product or service follows the `shared responsibility +model `__ +through the specific Amazon Web Services (AWS) services it supports. For +AWS service security information, see the `AWS service security +documentation +page `__ +and `AWS services that are in scope of AWS compliance efforts by +compliance +program `__. diff --git a/doc_source/security-iam.rst b/doc_source/security-iam.rst new file mode 100644 index 0000000..65b77e6 --- /dev/null +++ b/doc_source/security-iam.rst @@ -0,0 +1,33 @@ +Identity and Access Management for this AWS Product or Service +============================================================== + +AWS Identity and Access Management (IAM) is an Amazon Web Services (AWS) +service that helps an administrator securely control access to AWS +resources. IAM administrators control who can be *authenticated* (signed +in) and *authorized* (have permissions) to use resources in AWS +services. IAM is an AWS service that you can use with no additional +charge. + +To use this AWS product or service to access AWS, you need an AWS +account and AWS credentials. To increase the security of your AWS +account, we recommend that you use an *IAM user* to provide access +credentials instead of using your AWS account credentials. + +For details about working with IAM, see `AWS Identity and Access +Management `__. + +For an overview of IAM users and why they are important for the security +of your account, see `AWS Security +Credentials `__ +in the `Amazon Web Services General +Reference `__. + +This AWS product or service follows the `shared responsibility +model `__ +through the specific Amazon Web Services (AWS) services it supports. For +AWS service security information, see the `AWS service security +documentation +page `__ +and `AWS services that are in scope of AWS compliance efforts by +compliance +program `__. From c158b32ac47684c6b4ad99801682d93e99cf8b94 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Wed, 6 May 2020 10:49:08 -0700 Subject: [PATCH 218/225] minor change --- doc_source/security.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/security.rst b/doc_source/security.rst index ac8c981..978ff0d 100644 --- a/doc_source/security.rst +++ b/doc_source/security.rst @@ -26,7 +26,7 @@ Security for |SERVICENAMETITLE| Data Protection Enforcing TLS 1.2 - Identity and Access Management security-iam> + Identity and Access Management Compliance Validation Resilience Infrastructure Security From 95675ca9002e5eebf4a40b618f3f01350a8ca264 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Tue, 12 May 2020 09:40:02 -0700 Subject: [PATCH 219/225] fix typo --- doc_source/examples-s3-transfermanager.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_source/examples-s3-transfermanager.rst b/doc_source/examples-s3-transfermanager.rst index 5828351..a3e62e7 100644 --- a/doc_source/examples-s3-transfermanager.rst +++ b/doc_source/examples-s3-transfermanager.rst @@ -45,7 +45,7 @@ Upload Files and Directories Upload a Single File -------------------- -Call the |xfermgr| :methodname:`upload` method, providing an |S3| +Call |xfermgr|'s :methodname:`upload` method, providing an |S3| bucket name, a key (object) name, and a standard Java :javase-ref:`File ` object that represents the file to upload. From acefbcb5ef67dd4ab39f7bf0f16e3fcc365fe27f Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Tue, 19 May 2020 22:39:49 -0700 Subject: [PATCH 220/225] fix code example; rst edits --- doc_source/examples-ec2-regions-zones.rst | 59 ++++++++++++----------- doc_source/setup-project-gradle.rst | 4 +- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/doc_source/examples-ec2-regions-zones.rst b/doc_source/examples-ec2-regions-zones.rst index ea9de5c..ecde885 100644 --- a/doc_source/examples-ec2-regions-zones.rst +++ b/doc_source/examples-ec2-regions-zones.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -#################################### -Using Regions and Availability Zones -#################################### +################################## +Use regions and availability zones +################################## .. meta:: :description: How to list EC2 regions and availability zones using the AWS SDK for Java. @@ -18,8 +18,8 @@ Using Regions and Availability Zones zones, describe availability zones -Describing Regions -================== +Describe regions +================ To list the Regions available to your account, call the |ec2client|'s :methodname:`describeRegions` method. It returns a :aws-java-class:`DescribeRegionsResult @@ -29,22 +29,20 @@ each Region. **Imports** -.. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeRegionsAndZones.java - :lines: 16-19 +.. literalinclude:: ec2.java.describe_region_and_zones.import.txt :language: java **Code** -.. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeRegionsAndZones.java - :lines: 30-40 +.. literalinclude:: ec2.java1.describe_region_and_zones.regions.txt :dedent: 8 :language: java See the :sdk-examples-java-ec2:`complete example `. -Describing Availability Zones -============================= +Describe availability zones +=========================== To list each Availability Zone available to your account, call the |ec2client|'s :methodname:`describeAvailabilityZones` method. It returns a @@ -55,50 +53,53 @@ objects that represent each Availability Zone. **Imports** -.. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeRegionsAndZones.java - :lines: 16-19 +.. literalinclude:: ec2.java.describe_region_and_zones.import.txt :language: java **Code** -.. literalinclude:: example_code/ec2/src/main/java/aws/example/ec2/DescribeRegionsAndZones.java - :lines: 42-53 +.. literalinclude:: ec2.java1.describe_region_and_zones.zones.txt :dedent: 8 :language: java See the :sdk-examples-java-ec2:`complete example `. -Describing Accounts -================== +Describe accounts +================= To describe your account, call the |ec2client|'s :methodname:`describeAccountAttributes` -method. This method returns a :aws-java-class:`DescribeAccountAttributesResult ` object. -Invoke this objects :methodname:`getAccountAttributes` method to get a list of :aws-java-class:`AccountAttribute -` objects. You can iterate through the list to retrieve an +method. This method returns a +:aws-java-class:`DescribeAccountAttributesResult ` +object. +Invoke this objects :methodname:`getAccountAttributes` method to get a list of +:aws-java-class:`AccountAttribute ` objects. You can iterate +through the list to retrieve an :aws-java-class:`AccountAttribute ` object. -You can -get your account's attribute values by invoking the :aws-java-class:`AccountAttribute ` object's -:methodname:`getAttributeValues` method. This method returns a list of :aws-java-class:`AccountAttributeValue -` objects. You can iterate through this second list to display the value of attributes (see the following code example). +You can get your account's attribute values by invoking the +:aws-java-class:`AccountAttribute ` object's +:methodname:`getAttributeValues` method. This method returns a list of +:aws-java-class:`AccountAttributeValue ` objects. You can +iterate through this second list to display the value of attributes (see the following code +example). **Imports** -.. literalinclude:: ec2.java2.describe_region_and_zones.import.txt +.. literalinclude:: ec2.java1.describe_account.import.txt :language: java **Code** -.. literalinclude:: ec2.java2.describe_region_and_zones.region.txt +.. literalinclude:: ec2.java1.describe_account.main.txt :dedent: 8 :language: java -See the :sdk-examples-java-ec2:`complete example ` on GitHub. +See the :sdk-examples-java-ec2:`complete example ` on GitHub. -More Information +More information ================ * :ec2-ug:`Regions and Availability Zones ` in the |ec2-ug| diff --git a/doc_source/setup-project-gradle.rst b/doc_source/setup-project-gradle.rst index aa12322..a6d4dd6 100644 --- a/doc_source/setup-project-gradle.rst +++ b/doc_source/setup-project-gradle.rst @@ -25,7 +25,7 @@ To manage SDK dependencies for your Gradle_ project, import the Maven BOM for th Project setup for Gradle 4.6 or higher -=============== +====================================== `Since Gradle 4.6 `_, you can use Gradle's improved POM support feature for importing bill of materials (BOM) files by declaring a dependency on a BOM. @@ -88,7 +88,7 @@ The following is an example of a complete :file:`build.gradle` file that include Project setup for Gradle versions earlier than 4.6 -=============== +================================================== Gradle versions earlier than 4.6 lack native BOM support. To manage |sdk-java| dependencies for your project, use Spring's `dependency management plugin From f3f38e48cee8fefe6cb066ecafd7e253d8ded031 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Wed, 20 May 2020 06:52:40 -0700 Subject: [PATCH 221/225] update import snippet tag --- doc_source/examples-ec2-regions-zones.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/examples-ec2-regions-zones.rst b/doc_source/examples-ec2-regions-zones.rst index ecde885..568ae5e 100644 --- a/doc_source/examples-ec2-regions-zones.rst +++ b/doc_source/examples-ec2-regions-zones.rst @@ -29,7 +29,7 @@ each Region. **Imports** -.. literalinclude:: ec2.java.describe_region_and_zones.import.txt +.. literalinclude:: ec2.java1.describe_region_and_zones.import.txt :language: java **Code** @@ -53,7 +53,7 @@ objects that represent each Availability Zone. **Imports** -.. literalinclude:: ec2.java.describe_region_and_zones.import.txt +.. literalinclude:: ec2.java1.describe_region_and_zones.import.txt :language: java **Code** From 145c82df43f9eeed5f9d9498301e873ce4eb1c66 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Wed, 8 Jul 2020 11:11:57 -0700 Subject: [PATCH 222/225] Update credentials chain order --- doc_source/credentials.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc_source/credentials.rst b/doc_source/credentials.rst index 758ad44..2d017ea 100644 --- a/doc_source/credentials.rst +++ b/doc_source/credentials.rst @@ -48,6 +48,8 @@ class. The default credential provider chain looks for credentials in this order The |sdk-java| uses the :aws-java-class:`SystemPropertiesCredentialsProvider ` to load these credentials. +#. **Web Identity Token credentials** from the environment or container. + #. **The default credential profiles file** |ndash| typically located at :file:`~/.aws/credentials` (location can vary per platform), and shared by many of the AWS SDKs and by the AWS CLI. The |sdk-java| uses the :aws-java-class:`ProfileCredentialsProvider ` to load these credentials. @@ -70,8 +72,6 @@ class. The default credential provider chain looks for credentials in this order :aws-java-class:`EC2ContainerCredentialsProviderWrapper ` for more information. -#. **Web Identity Token credentials** from the environment or container. - Setting Credentials ------------------- From d10c8fdbdd9710b3eec98cee7e50fa6550392a90 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Mon, 10 Aug 2020 13:30:08 -0700 Subject: [PATCH 223/225] update gitignore --- doc_source/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc_source/.gitignore b/doc_source/.gitignore index 5193fae..4423b35 100644 --- a/doc_source/.gitignore +++ b/doc_source/.gitignore @@ -1 +1,3 @@ example_code +.vscode +_build \ No newline at end of file From c03e32c1b936ff06afc44b82a340fa7dada0fb33 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Mon, 10 Aug 2020 13:40:52 -0700 Subject: [PATCH 224/225] Updates for the Amazon S3 Encryption Client This change includes fixes for issues that were reported by Sophie Schmieg from the Google ISE team, and for issues that were discovered by AWS Cryptography --- doc_source/examples-crypto-kms.rst | 132 +++++------ doc_source/examples-crypto-masterkey.rst | 126 ++++------- doc_source/examples-crypto.rst | 30 ++- doc_source/s3-encryption-migration.rst | 276 +++++++++++++++++++++++ doc_source/security.rst | 5 +- 5 files changed, 394 insertions(+), 175 deletions(-) create mode 100644 doc_source/s3-encryption-migration.rst diff --git a/doc_source/examples-crypto-kms.rst b/doc_source/examples-crypto-kms.rst index 68bc328..b0dc34d 100644 --- a/doc_source/examples-crypto-kms.rst +++ b/doc_source/examples-crypto-kms.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -9,7 +9,7 @@ limitations under the License. ################################################### -|S3| Client-Side Encryption with |KMS| Managed Keys +|S3| client-side encryption with |KMS| managed keys ################################################### .. meta:: @@ -17,7 +17,7 @@ :keywords: AWS SDK for Java code examples, cryptography, encryption The following examples use the -:aws-java-class:`AmazonS3EncryptionClientBuilder ` class +:aws-java-class:`AmazonS3EncryptionClientV2Builder ` class to create an |S3| client with client-side encryption enabled. Once configured, any objects you upload to |S3| using this client will be encrypted. Any objects you get from |S3| using this client are automatically @@ -28,61 +28,82 @@ decrypted. encryption with |KMS| managed keys. To learn how to use encryption with your own keys, see :doc:`examples-crypto-masterkey`. -You can choose from three encryption modes when enabling client-side |S3| encryption: encryption-only, -authenticated, and strict authenticated. +You can choose from two encryption modes when enabling client-side |S3| encryption: strict +authenticated or authenticated. The following sections show how to enable each type. To learn which algorithms each mode uses, see the :aws-java-class:`CryptoMode ` definition. -Required Imports +Required imports ================ Import the following classes for these examples. **Imports** -.. literalinclude:: s3.java1.s3_encrypt.import.txt - :language: java +.. code-block:: java + + import com.amazonaws.ClientConfiguration; + import com.amazonaws.regions.Regions; + import com.amazonaws.services.kms.AWSKMS; + import com.amazonaws.services.kms.AWSKMSClientBuilder; + import com.amazonaws.services.kms.model.GenerateDataKeyRequest; + import com.amazonaws.services.kms.model.GenerateDataKeyResult; + import com.amazonaws.services.s3.AmazonS3EncryptionClientV2Builder; + import com.amazonaws.services.s3.AmazonS3EncryptionV2; + import com.amazonaws.services.s3.model.CryptoConfigurationV2; + import com.amazonaws.services.s3.model.CryptoMode; + import com.amazonaws.services.s3.model.EncryptionMaterials; + import com.amazonaws.services.s3.model.KMSEncryptionMaterialsProvider; -.. _encryption-only-kms: +.. _strict-authenticated-encryption-kms: -Encryption-Only Mode -==================== +Strict authenticated encryption +=============================== -Encryption-only is the default mode, if no :classname:`CryptoMode` is specified. -To use an |KMS| -managed key for encryption, pass the |KMS| key ID or alias to the -:aws-java-class:`KMSEncryptionMaterialsProvider` constructor. +Strict authenticated encryption is the default mode if no :classname:`CryptoMode` is specified. + +To explicitly enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in the +:methodName:`withCryptoConfiguration` method. + +.. note:: To use client-side authenticated encryption, you must include the latest + `Bouncy Castle jar `_ file + in the classpath of your application. **Code** -.. literalinclude:: s3.java1.s3_encrypt.kms_encryption_only_build.txt - :dedent: 8 - :language: java +.. code-block:: java + + AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() + .withRegion(Regions.US_WEST_2) + .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.StrictAuthenticatedEncryption))) + .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) + .build(); + + s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the AWS Console"); + System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3)); Call the :methodname:`putObject` method on the |S3| encryption client to upload objects. **Code** -.. literalinclude:: s3.java1.s3_encrypt.kms_encryption_only_put_object.txt - :dedent: 8 - :language: java +.. code-block:: java + + s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the AWS Console"); You can retrieve the object using the same client. This example calls the :methodname:`getObjectAsString` method to retrieve the string that was stored. **Code** -.. literalinclude:: s3.java1.s3_encrypt.kms_encryption_only_retrieve.txt - :dedent: 8 - :language: java +.. code-block:: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. + System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3)); .. _authenticated-encryption-kms: -Authenticated Encryption Mode +Authenticated encryption mode ============================= When you use :classname:`AuthenticatedEncryption` mode, an improved key wrapping algorithm is @@ -102,56 +123,11 @@ To enable this mode, specify the :classname:`AuthenticatedEncryption` value in t **Code** -.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_builder.txt - :dedent: 8 - :language: java - -The :classname:`AuthenticatedEncryption` mode can retrieve unencrypted objects and -objects encrypted with :classname:`EncryptionOnly` mode. The following example shows the -|S3| encryption client retrieving an unencrypted object. - -**Code** - -.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_put_object.txt - :dedent: 8 - :language: java - -See the :sdk-examples-java-s3:`complete example ` on GitHub. - -.. _strict-authenticated-encryption-kms: - -Strict Authenticated Encryption -=============================== - -To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in the -:methodName:`withCryptoConfiguration` method. - -.. note:: To use client-side authenticated encryption, you must include the latest - `Bouncy Castle jar `_ file - in the classpath of your application. - -**Code** - -.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_strict_builder.txt - :dedent: 8 - :language: java - -Call the :methodname:`putObject` method on the |S3| encryption client to upload objects. - -**Code** - -.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_strict_put_object.txt - :dedent: 8 - :language: java - -In :classname:`StrictAuthenticatedEncryption` mode, the |S3| client throws an -exception when retrieving an object that was not encrypted using an -authenticated mode. - -**Code** - -.. literalinclude:: s3.java1.s3_encrypt.kms_authenticated_encryption_strict_exception.txt - :dedent: 8 - :language: java +.. code-block:: java -See the :sdk-examples-java-s3:`complete example ` on GitHub. + AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() + .withRegion(Regions.US_WEST_2) + .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption))) + .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) + .build(); + \ No newline at end of file diff --git a/doc_source/examples-crypto-masterkey.rst b/doc_source/examples-crypto-masterkey.rst index 5ae4458..5afbd50 100644 --- a/doc_source/examples-crypto-masterkey.rst +++ b/doc_source/examples-crypto-masterkey.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -9,7 +9,7 @@ limitations under the License. ################################################### -|S3| Client-Side Encryption with Client Master Keys +|S3| client-side encryption with client master keys ################################################### .. meta:: @@ -17,7 +17,7 @@ :keywords: AWS SDK for Java code examples The following examples use the -:aws-java-class:`AmazonS3EncryptionClientBuilder ` class +:aws-java-class:`AmazonS3EncryptionClientV2Builder ` class to create an |S3| client with client-side encryption enabled. Once enabled, any objects you upload to |S3| using this client will be encrypted. Any objects you get from |S3| using this client will automatically @@ -28,69 +28,57 @@ be decrypted. encryption with customer-managed client master keys. To learn how to use encryption with |KMS| managed keys, see :doc:`examples-crypto-kms`. -You can choose from three encryption modes when enabling client-side |S3| encryption: encryption-only, -authenticated, and strict authenticated. +You can choose from two encryption modes when enabling client-side |S3| encryption: strict +authenticated or authenticated. The following sections show how to enable each type. To learn which algorithms each mode uses, see the :aws-java-class:`CryptoMode ` definition. -Required Imports +Required imports ================ Import the following classes for these examples. **Imports** -.. literalinclude:: s3.java1.s3_encrypt.import.txt - :language: java +.. code-block:: java -.. _encryption-only: + import com.amazonaws.ClientConfiguration; + import com.amazonaws.regions.Regions; + import com.amazonaws.services.s3.AmazonS3EncryptionClientV2Builder; + import com.amazonaws.services.s3.AmazonS3EncryptionV2; + import com.amazonaws.services.s3.model.CryptoConfigurationV2; + import com.amazonaws.services.s3.model.CryptoMode; + import com.amazonaws.services.s3.model.EncryptionMaterials; + import com.amazonaws.services.s3.model.StaticEncryptionMaterialsProvider; -Encryption-Only Mode -==================== - -Encryption-only is the default mode, if no :classname:`CryptoMode` is specified. To enable -encryption, you must pass a key to the :aws-java-class:`EncryptionMaterials` -constructor. The example below uses -the :class:`KeyGenerator` Java class generate a symmetric private key. - -**Code** - -.. literalinclude:: s3.java1.s3_encrypt.encryption_only.txt - :dedent: 4 - :language: java +.. _strict-authenticated-encryption: -To use an asymmetric key or a key pair, simply pass the key pair to the same -:aws-java-class:`EncryptionMaterials` class. The example below uses the -:class:`KeyPairGenerator` class to generate a key pair. +Strict authenticated encryption +=============================== -**Code** +Strict authenticated encryption is the default mode if no :classname:`CryptoMode` is specified. -.. literalinclude:: s3.java1.s3_encrypt.encryption_only_asymetric_key_build.txt - :dedent: 8 - :language: java +To explicitly enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in the +:methodName:`withCryptoConfiguration` method. -Call the :methodname:`putObject` method on the |S3| encryption client to upload objects. +.. note:: To use client-side authenticated encryption, you must include the latest + `Bouncy Castle jar `_ file + in the classpath of your application. **Code** -.. literalinclude:: s3.java1.s3_encrypt.encryption_only_asymetric_key_put_object.txt - :dedent: 8 - :language: java - -You can retrieve the object using the same client. This example calls the -:methodname:`getObjectAsString` method to retrieve the string that was stored. - -**Code** +.. code-block:: java -.. literalinclude:: s3.java1.s3_encrypt.encryption_only_asymetric_key_retrieve.txt - :dedent: 8 - :language: java + AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() + .withRegion(Regions.US_WEST_2) + .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.StrictAuthenticatedEncryption))) + .withEncryptionMaterialsProvider(new StaticEncryptionMaterialsProvider(new EncryptionMaterials(secretKey))) + .build(); -See the :sdk-examples-java-s3:`complete example ` on GitHub. + s3Encryption.putObject(bucket_name, ENCRYPTED_KEY2, "This is the 2nd content to encrypt"); -.. _authenticated-encryption: -Authenticated Encryption Mode +Authenticated encryption mode ============================= When you use :classname:`AuthenticatedEncryption` mode, an improved key wrapping algorithm is @@ -109,48 +97,14 @@ To enable this mode, specify the :classname:`AuthenticatedEncryption` value in t **Code** -.. literalinclude:: s3.java1.s3_encrypt.authenticated_encryption_build.txt - :dedent: 8 - :language: java - -The :classname:`AuthenticatedEncryption` mode can retrieve unencrypted objects and -objects encrypted with :classname:`EncryptionOnly` mode. The following example shows the -|S3| encryption client retrieving an unencrypted object. - -**Code** - -.. literalinclude:: s3.java1.s3_encrypt.authenticated_encryption.txt - :dedent: 4 - :language: java - -See the :sdk-examples-java-s3:`complete example ` on GitHub. - -.. _strict-authenticated-encryption: - -Strict Authenticated Encryption -=============================== - -To enable this mode, specify the :classname:`StrictAuthenticatedEncryption` value in the -:methodName:`withCryptoConfiguration` method. - -.. note:: To use client-side authenticated encryption, you must include the latest - `Bouncy Castle jar `_ file - in the classpath of your application. - -**Code** - -.. literalinclude:: s3.java1.s3_encrypt.strict_authenticated_encryption_build.txt - :dedent: 8 - :language: java +.. code-block:: java -In :classname:`StrictAuthenticatedEncryption` mode, the |S3| client throws an -exception when retrieving an object that was not encrypted using an -authenticated mode. - -**Code** + AmazonS3EncryptionV2 s3EncryptionClientV2 = AmazonS3EncryptionClientV2Builder.standard() + .withRegion(Regions.DEFAULT_REGION) + .withClientConfiguration(new ClientConfiguration()) + .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode(CryptoMode.AuthenticatedEncryption)) + .withEncryptionMaterialsProvider(new StaticEncryptionMaterialsProvider(new EncryptionMaterials(secretKey))) + .build(); -.. literalinclude:: s3.java1.s3_encrypt.strict_authenticated_encryption.txt - :dedent: 4 - :language: java + s3EncryptionClientV2.putObject(bucket_name, ENCRYPTED_KEY1, "This is the 1st content to encrypt"); -See the :sdk-examples-java-s3:`complete example ` on GitHub. diff --git a/doc_source/examples-crypto.rst b/doc_source/examples-crypto.rst index db71298..c37c681 100644 --- a/doc_source/examples-crypto.rst +++ b/doc_source/examples-crypto.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -8,9 +8,9 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -################################# -Using |S3| Client-Side Encryption -################################# +############################### +Use |S3| client-side encryption +############################### .. meta:: :description: How to use the cryptography configuration settings for the AWS SDK for Java @@ -20,12 +20,25 @@ Encrypting data using the |S3| encryption client is one way you can provide an additional layer of protection for sensitive information you store in |S3|. The examples in this section demonstrate how to create and configure the |S3| encryption client for your application. -If you are new to cryptography, -see the :KMS-dg:`Cryptography Basics ` in the |KMS-dg| for a basic overview of -cryptography terms and algorithms. + +If you are new to cryptography, see the :KMS-dg:`Cryptography Basics ` in the |KMS-dg| +for a basic overview of cryptography terms and algorithms. For information about cryptography +support across all AWS SDKs, see +:AWS-gr:`AWS SDK Support for Amazon S3 Client-Side Encryption ` in the +|AWS-gr|. .. include:: includes/examples-note.txt +If you are using version 1.11.836 or earlier of the AWS SDK for Java, see +:doc:`s3-encryption-migration` for information on migrating your applications to later versions. +If you cannot migrate, see +`this complete example `_ +on GitHub. + +Otherwise, if you are using version 1.11.837 or later of the AWS SDK for Java, explore the example +topics listed below to use |S3| client-side encryption. + + .. toctree:: :titlesonly: :maxdepth: 1 @@ -33,5 +46,4 @@ cryptography terms and algorithms. examples-crypto-masterkey examples-crypto-kms -For information about cryptography support across all AWS SDKs, see -:AWS-gr:`AWS SDK Support for Amazon S3 Client-Side Encryption ` in the |AWS-gr|. + diff --git a/doc_source/s3-encryption-migration.rst b/doc_source/s3-encryption-migration.rst new file mode 100644 index 0000000..f6c93c0 --- /dev/null +++ b/doc_source/s3-encryption-migration.rst @@ -0,0 +1,276 @@ +.. Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +################################ +|S3| Encryption Client Migration +################################ + +.. meta:: + :description: How to migrate your applications from v1 to v2 of the AWS S3 client-side encryption + service client + :keywords: AWS for Java SDK, migrate, migration, CSE, encryption, key, KMS, S3, + AmazonS3EncryptionClientV2, AmazonS3EncryptionClient + + +This topic shows you how to migrate your applications from Version 1 (V1) of the |S3long| (|S3|) +encryption client to Version 2 (V2) and ensure application availability throughout the migration +process. + +.. _s3-cse-prereq: + +Prerequisites +============= + +* |S3| client-side encryption requires Java 8 or later to be installed in your application + environment. + The |sdk-java| works with the + `Oracle Java SE Development Kit `_ + and with distributions of Open Java Development Kit (OpenJDK) such as + `Amazon Corretto `_, + `Red Hat OpenJDK `_, + and `AdoptOpenJDK `_. + +* You need to take a dependency on BouncyCastle. If you don't already have this, + go to https://bouncycastle.org/latest_releases.html and download the provider file that corresponds to your JDK. + Alternatively, you can pick it up from Maven (groupId: org.bouncycastle, artifactId: bcprov-ext-jdk15on)." + +.. _s3-cse-overview: + +Migration Overview +================== + +This migration happens in two phases: + +1. **Update existing clients to read new formats.** Update your application to use version 1.11.837 + or later of the AWS SDK for Java and redeploy the application. This enables the |S3| client-side + encryption service clients in your application to decrypt objects created by V2 service clients. + If your application uses multiple AWS SDKs, you must update each SDK separately. + +2. **Migrate encryption and decryption clients to V2.** Once all of your V1 encryption clients can + read V2 encryption formats, update the |S3| client-side encryption and decryption clients in your + application code to use their V2 equivalents. + +.. _s3-cse-update-project: + +Update Existing Clients to Read New Formats +=========================================== + +The V2 encryption client uses encryption algorithms that older versions of the AWS SDK for Java do +not support. + +The first step in the migration is to update your V1 encryption clients to use version 1.11.837 or +later of the |sdk-java|. (We recommend that you update to the latest release version, which you can +find in the +`Java API Reference version 1.x `_.) To do +so, update the dependency in your project configuration. After your project configuration is +updated, rebuild your project and redeploy it. + +Once you have completed these steps, your application’s V1 encryption clients will be able to read +objects written by V2 encryption clients. + +Update the Dependency in Your Project Configuration +--------------------------------------------------- + +Modify your project configuration file (for example, pom.xml or build.gradle) to use version +1.11.837 or later of the AWS SDK for Java. Then, rebuild your project and redeploy it. + +Completing this step before deploying new application code helps to ensure that encryption +and decryption operations remain consistent across your fleet during the migration process. + +Example Using Maven +~~~~~~~~~~~~~~~~~~~ + +Snippet from a pom.xml file: + +.. code-block:: xml + + + + + com.amazonaws + aws-java-sdk-bom + 1.11.837 + pom + import + + + + +Example Using Gradle +~~~~~~~~~~~~~~~~~~~~ + +Snippet from a build.gradle file: + +.. code-block:: json + + dependencies { + implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.837') + implementation 'com.amazonaws:aws-java-sdk-s3' + } + +.. _s3-cse-update-code: + +Migrate Encryption and Decryption Clients to V2 +=============================================== + +Once your project has been updated with the latest SDK version, you can modify your application code +to use the V2 client. To do so, first update your code to use the new service client builder. Then +provide encryption materials using a method on the builder that has been renamed, and configure your +service client further as needed. + +These code snippets demonstrate how to use client-side encryption with the AWS SDK for Java, and +provide comparisons between the V1 and V2 encryption clients. + +**V1** + +.. code-block:: java + + // minimal configuration in V1; default CryptoMode.EncryptionOnly. + EncryptionMaterialsProvider encryptionMaterialsProvider = ... + AmazonS3Encryption encryptionClient = AmazonS3EncryptionClient.encryptionBuilder() + .withEncryptionMaterials(encryptionMaterialsProvider) + .build(); + +**V2** + +.. code-block:: java + + // minimal configuration in V2; default CryptoMode.StrictAuthenticatedEncryption. + EncryptionMaterialsProvider encryptionMaterialsProvider = ... + AmazonS3EncryptionV2 encryptionClient = AmazonS3EncryptionClientV2.encryptionBuilder() + .withEncryptionMaterialsProvider(encryptionMaterialsProvider) + .withCryptoConfiguration(new CryptoConfigurationV2() + // The following setting allows the client to read V1 encrypted objects + .withCryptoMode(CryptoMode.AuthenticatedEncryption) + ) + .build(); + +The above example sets the :code:`cryptoMode` to :code:`AuthenticatedEncryption`. This is a setting +that allows a V2 encryption client to read objects that have been written by a V1 encryption +client. If your client does not need the capability to read objects written by a V1 client, then we +recommend using the default setting of :code:`StrictAuthenticatedEncryption` instead. + +Construct a V2 Encryption Client +-------------------------------- + +The V2 encryption client can be constructed by calling +*AmazonS3EncryptionClientV2.encryptionBuilder().* + +You can replace all of your existing V1 encryption clients with V2 encryption clients. A V2 +encryption client will always be able to read any object that has been written by a V1 encryption +client as long as you permit it to do so by configuring the V2 encryption client to use the +:code:`AuthenticatedEncryption` :code:`cryptoMode`. + +Creating a new V2 encryption client is very similar to how you create a V1 encryption client. +However, there are a few differences: + +* You will use a :code:`CryptoConfigurationV2` object to configure the client instead of a + :code:`CryptoConfiguration` object. This parameter is required. +* The default :code:`cryptoMode` setting for the V2 encryption client is + :code:`StrictAuthenticatedEncryption`. For the V1 encryption client it is :code:`EncryptionOnly`. +* The method *withEncryptionMaterials()* on the encryption client builder has been renamed to + *withEncryptionMaterialsProvider()*. This is merely a cosmetic change that more accurately + reflects the argument type. You must use the new method when you configure your service client. + +.. note:: When decrypting with AES-GCM, read the entire object to the end before you start using the + decrypted data. This is to verify that the object has not been modified since it was encrypted. + + +Use Encryption Materials Providers +---------------------------------- + +You can continue to use the same encryption materials providers and encryption materials objects +you are already using with the V1 encryption client. These classes are responsible for providing the +keys the encryption client uses to secure your data. They can be used interchangeably with both the +V2 and the V1 encryption client. + +Configure the V2 Encryption Client +---------------------------------- + +The V2 encryption client is configured with a :code:`CryptoConfigurationV2` object. This object can be +constructed by calling its default constructor and then modifying its properties as required from +the defaults. + +The default values for :code:`CryptoConfigurationV2` are: + +* :code:`cryptoMode` = :code:`CryptoMode.StrictAuthenticatedEncryption` +* :code:`storageMode` = :code:`CryptoStorageMode.ObjectMetadata` +* :code:`secureRandom` = instance of :code:`SecureRandom` +* :code:`rangeGetMode` = :code:`CryptoRangeGetMode.DISABLED` +* :code:`unsafeUndecryptableObjectPassthrough` = :code:`false` + +Note that `EncryptionOnly` is not a supported :code:`cryptoMode` in the V2 encryption client. The V2 +encryption client will always encrypt content using authenticated encryption, and protects content +encrypting keys (CEKs) using V2 :code:`KeyWrap` objects. + +The following example demonstrates how to specify the crypto configuration in V1, and how to +instantiate a *CryptoConfigurationV2* object to pass to the V2 encryption client builder. + +**V1** + +.. code-block:: java + + CryptoConfiguration cryptoConfiguration = new CryptoConfiguration() + .withCryptoMode(CryptoMode.StrictAuthenticatedEncryption); + +**V2** + +.. code-block:: java + + CryptoConfigurationV2 cryptoConfiguration = new CryptoConfigurationV2() + .withCryptoMode(CryptoMode.StrictAuthenticatedEncryption); + +.. _additional-examples: + +Additional Examples +=================== + +The following examples demonstrate how to address specific use cases related to a migration from V1 +to V2. + +Configure a Service Client to Read Objects Created by the V1 Encryption Client +------------------------------------------------------------------------------ + +To read objects that were previously written using a V1 encryption client, set the +:code:`cryptoMode` to :code:`AuthenticatedEncryption`. The following code snippet demonstrates how +to construct a configuration object with this setting. + +.. code-block:: java + + CryptoConfigurationV2 cryptoConfiguration = new CryptoConfigurationV2() + .withCryptoMode(CryptoMode.AuthenticatedEncryption); + +Configure a Service Client to Get Byte Ranges of Objects +-------------------------------------------------------- + +To be able to :code:`get` a range of bytes from an encrypted S3 object, enable the new configuration +setting :code:`rangeGetMode`. This setting is disabled on the V2 encryption client by default. Note +that even when enabled, a ranged :code:`get` only works on objects that have been encrypted using +algorithms supported by the :code:`cryptoMode` setting of the client. For more information, see +:aws-java-class:`CryptoRangeGetMode ` in the AWS SDK for Java +API Reference. + +If you plan to use the |S3| TransferManager to perform multipart downloads of encrypted |S3| objects +using the V2 encryption client, then you must first enable the :code:`rangeGetMode` setting on the +V2 encryption client. + +The following code snippet demonstrates how to configure the V2 client for performing a ranged +:code:`get`. + +.. code-block:: java + + // Allows range gets using AES/CTR, for V2 encrypted objects only + CryptoConfigurationV2 cryptoConfiguration = new CryptoConfigurationV2() + .withRangeGetMode(CryptoRangeGetMode.ALL); + + // Allows range gets using AES/CTR and AES/CBC, for V1 and V2 objects + CryptoConfigurationV2 cryptoConfiguration = new CryptoConfigurationV2() + .withCryptoMode(CryptoMode.AuthenticatedEncryption) + .withRangeGetMode(CryptoRangeGetMode.ALL); diff --git a/doc_source/security.rst b/doc_source/security.rst index 978ff0d..bdb10ca 100644 --- a/doc_source/security.rst +++ b/doc_source/security.rst @@ -24,9 +24,10 @@ Security for |SERVICENAMETITLE| :maxdepth: 1 :titlesonly: + Compliance Validation Data Protection Enforcing TLS 1.2 Identity and Access Management - Compliance Validation - Resilience Infrastructure Security + Resilience + S3 Encryption Client Migration From b91e8e9db8b90f085af22f2f242428b495a5fc73 Mon Sep 17 00:00:00 2001 From: Carey Burgess Date: Thu, 15 Oct 2020 12:51:07 -0700 Subject: [PATCH 225/225] minor edit --- doc_source/s3-encryption-migration.rst | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/doc_source/s3-encryption-migration.rst b/doc_source/s3-encryption-migration.rst index f6c93c0..0b09cac 100644 --- a/doc_source/s3-encryption-migration.rst +++ b/doc_source/s3-encryption-migration.rst @@ -28,18 +28,19 @@ process. Prerequisites ============= -* |S3| client-side encryption requires Java 8 or later to be installed in your application - environment. - The |sdk-java| works with the +|S3| client-side encryption requires the following: + +* Java 8 or later installed in your application environment. The |sdk-java| works with the `Oracle Java SE Development Kit `_ and with distributions of Open Java Development Kit (OpenJDK) such as `Amazon Corretto `_, `Red Hat OpenJDK `_, and `AdoptOpenJDK `_. -* You need to take a dependency on BouncyCastle. If you don't already have this, - go to https://bouncycastle.org/latest_releases.html and download the provider file that corresponds to your JDK. - Alternatively, you can pick it up from Maven (groupId: org.bouncycastle, artifactId: bcprov-ext-jdk15on)." +* The `Bouncy Castle Crypto package `_. You can + place the Bouncy Castle .jar file on the classpath of your application environment, or add a + dependency on the artifactId :code:`bcprov-ext-jdk15on` (with the groupId of + :code:`org.bouncycastle`) to your Maven :file:`pom.xml` file. .. _s3-cse-overview:

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 diff --git a/doc_source/images/java-spot-recent-ami-2.png b/doc_source/images/java-spot-recent-ami-2.png index fa080b1642f3b919e5723a4ba3868ffc3be23bdf..9c65925858a127e55672ad2bd5febf90675515b9 100644 GIT binary patch literal 29305 zcmb@tWl&sA*DgFb1P|`+?gR@ONbul6gA?4{HMj;JEV#RSaCdhGcXz(YeJ9Uz>Z`ZT zIX_NO%uMawySrB}yO!+l3UZRjZ}8s$0088VQsSQh04QJZ?|XPy@Mkgy>ofQZR$p3D z9Ps-4FS9j24txc{MoPmT06@g}{SN_1Ny7zSgmd^PD*?9wMTCP1$ut|E3;>V+x1K~H@fI%Ai+xCm<{`!l3eB8N;WJA0hcM_BYn0JOeW@X_dQ)O{sKHAi#x zf^2`(+~s+aq4VzW{kf3IXxd!MSQ-R8Spb^o|N3Eox}+fl{Buoe9lo1xllJM)0K@n< zqDyE2xl)w>J`}xyGsDd3)?@(JME}D;+e#zjISwL5?49y;pwql*2-dl*hp zFMOu#+?}+v3$U8m^-+c6N`=LTB`wKS+C%s<`5F4pXj(`pEZ;)<4W7)!X}|H(#VdV< z`=c?80^llMFFnPd^QsoD`E<8GXP_ugkWibt#7NG8UT_N^r1*D|ehmuP4m>kN4s@Rf z6)|Kr#A^`3bo+xZdGsHKi~`}0f=v|VY5~gfP%7rU?WYJ=*LE&$kbh2M`v~2V6kxPr zawU+d15Lm7EQnE{8soH>{`dJ5cqAnR;cG}XCl}Q>*ZVM>7{1&X=>50P=>HPkzkuQE z(|5@OIKLO>Z&{lwn{)WFic#Rbz@P8`hf*mYkG98Ch`@~9hF%M`fKLEmOpR8N0)n8D^vGW<_=rqGuug%wA@F#$ zM-6aO2HmWJ+(@X$yzUG0_dZF%`_eq?tmc8gH*P31xwOPTFV>xP{j#tjh&3H+RZR~m zc7UJ^+YGCD5(d{NJVPvg{<%;FHU1GnGcp*-(iYVTSSt|0jMCmPul}p>S9+dy^0VAO zaxB&15gM$|b5GQKdvik%sqkV^b1%&DG`-2fh_+&U{jQzt0&>SdI+$RD$cppz9SNXf zH>Spxn{}*ns^|hL?CdVziqp9zAXgxVk?pV-)FArsWR#wNeDt*T7IX=OswJLKzire% zOtnsf(z=bEhvi>(dEi@&`-c!t+q<4VHo+U>nH%0v)QGgFfz6Y%jqZliwnqg;#jK;^ zf`Sgu+m+z%V5SkMDfw4Uci8drNJK>8E97H`@k6U#?F*mh()Mq8-GzdJn|1TW`mNo2 z`LlTLUBh|n_wq_u8Q3S1|VKa4=XjGSof89AobeY}h*E+w9br}BqowJXEWFs{HK$*BZ>g;kza8nE==Z4Yh zUXe9oKsN>CLaU0Y@(Gt}Xgcb_7 zyuCujRB3?P=IS#k;fJxj`(b~|B5NjyDxgH}=nz4Rqspg2lqLF{ZKAaz=)!(G8UkqfQ zXzrciNihg)ChS1KWNDS$qPpV6lFM}2-|AO69`ig8_@G7KCwNvEt7BDS>!N#g6RN4K zjHz1IqK58Q1!%b(<>&h9nVE5ew<89Ctz{jqV1l*3>!CTr2k4;_>rx=(i4mL)Gi+M( ztno_XXATi}zl}dt2!<$gIoMdwSNQTt=`Ai`CvQX%Mf+hHO`hgyVu|+goUnB7K3f%& zh-_$zP|JIXyfm{a4NhKr`8uOm5c04o@s~l+c%5`R1){9t5s}xf>=A^IwAF`ED!>_f zU7NiE#;f*PCF!v9GKK3N_Qv_^7fVKbrg<6kaDFud)q*9)-$u0GWqaNBsF4z3N2tbL zu|nyXY`8nI-9yr`yA9p`b*dUQs)dP<%E_XONOwEyv(QQ7kOYLwz3r3uIWP9+PW>lF zIsRi9QaOZ(NZ6gRjPj#oF7qGcZ=uv#s7)iVy`0R;pq+oY0hdH)s|%J3@l8pVSx~mm z(Y?G}alOj;zj(YzqvT*A`&-LkPqr`<*+U#boGq4qjdj5iRLd6TLmWn-mT%h67Fn`F zM=I8*wRB$@X+WfMK_B_>f2SVmv7Yeuys?Ax9qN7mIYZ>o`FJVS=ZEqv zJ*N;0C)QtLr`HGrF(BlbsQ^B9|R!y5Z|`P za;V0ZSRhhxK7wDr*1x?O1v1G}aLE1kq$lI`$%OGs4SaCAT+7SDA;1R)5nCP0`vFTB zjtYM4!a>27UJImDg#!{KFE# z7L`)ZUnZlj4dl`wqWC&t<7F-`E;=P)>*izbv- z@4aMQbz}wSZ%ZC%-JHWu0a{1zWk_8sW2phdIuYy=9WAAd-!6?-G_)2R&|E*~$&!=2 zN0<%U&u0cxQbd|du5@>lkZ_U&1|B65FI zgKK@_^}1LFbvO>4-Qg5@CMMEXS9;j3e6nc#iHUN};ahDjzTgdUi=vM;2?P>fU0neH zcJ}tROP2L?Yp>61uiBUFuJ^ZD#sQ2-9B?qNp!1g&r{Wr^{-c?@fhdP|i0HM_+i?_A z)gX`K#5SF(Qnw)4+Rr~@0OzSYk?u9co^FDD#%C?d3LO0cBcGaO9w=GTvcCx0qme6D zrZ+J=EmM@C;J;n^f_~B1tgNq^l2%KkxOKoEFP-h zh%61erBeMPa+K5aNJ7Pl1jvbX@PHVmbWwu}gg1Vyj4(_0KAZ)!EZky$ux0nJ-R4(f zg*(?sb0qH!?tvS4A7()M&ZL}j zryiH=(uL3bK^HBAx zDD7V`6`=4Jm%-x^K|cXIx-C~~@c-b+a2)g`E(7w?4}YG|!IXphm*fDn(7))1?0-LN z7W^Loj3)Y@eFXdm>%mKq{#h$p1Wo8BY`*wm4(iGg0C;edcMm?=>uu&j=5;&5ZE9|Y z0QiyWZT|Y6#9@L`)^tFhWNes$z%l!ei9B zldU8E!ybwC{*HD){Jt{;78aIziwoNiMh!m%3~Jn7Tnr3<^Rh-*C@84;#!JuPbp9wM zu|L>0Cz7p>Ri>OBQCZ$lxn-xhw4A7J)nMK>6KX0?wmVxQOa>-1g-ZGdDKj&Q_v6yq zyxU*aM6&H5ghOV#L5MS?pvBOW;o>p4!RBmE%n=}yqD#KEVIX2N3OhK|{Wq=np_xdU=S13@GKugX5mzWDclLW+%&yckBMB|5*vs*LU6H z@D*7@D<)0}0AN$vBo$9TtzFA|U3EuVvCJk-<23s$Y}V7;3yG%oME;jS!eNxFH>uHm z3rkC31+;+H-txdRMzpw)Bue4CyYjugy^iTZC8qrI>p9(Ske%&-$v=z<;0Z?{qljUv zXO+Qp6M#emkQ;E3T_OGwmz3Pvo5+F4t@3{Ll1bx@`AZ4=0j?%ucRz!FQHysQ5TWLp zxH}w=LqS(Js-%QbI;{KZ=4Mm(^#O;u3A`az`6w+%w~hbKPsUB9ZBfM_3B~U^9$;3aYGn9?BMW_&HKgUXI>sTSOSQMhzd$e zdvJ6;d}n7>x3{-DHf$XzK?LWpHG9_*qD}@Ay20{86EudGC272ZcC4SHR{SFqp zT_()2AjbJgegv=E741JNW>rssK_e&r?Hm37U&W#~u&lV3C;&|WhfkWp2lk1SZV!Mf zDBNgn2p`P{)O+u{d2W?>UIyi-Ep!jXIApOthz6zvmD~aRO$9*?wBTWN0NP!G+eH+Qxj9apCBm| zmziBjx#DvYKycS$-)y^-1_&?hkdV5qmWBYGrG;$)!pqKHzwa%#>TX?SoWKBn>D1ac{tV8PAR{A(goJc}H3b6T=;$aVB_*t-MVOM3GCn&S6cPe2lfsEW zM@LssTznbIK}7{KF)?BK?VG5H2~D1SMr1<+udLe#Gnr&|nCIu`-#6Udn`7lfMIrI= z@j1mwj2Y{9cXL&Qun3ogaI6KQ`*f6`2Lobx_h|2`xZ>aeQCCh z<*@Z{)&b*7zArf{Xl^~u_sD7UQQ+T21}CDgF)K+m+d_bj{r4+yYVJ8>o`M;L9skebyQ0N>Zy3gaak1AIrrJ`dd-sgO6yO*CE7JCAf9-~z0GN8WayqaP? zL><8bz_P3Ch2h5E0+uV=My`YJJJ3JIKH)r_rIFiI-Rhv0676@MACUwE|=UjWt2#(ce>Vwmd!xgpk zqGP5oWsM{}A_B1N-P|~Vr>C=IBqtZ;D40qd+IOJ8fAe$o+6iw2%**N7+3ea{EU-X? zeE+UE+PAp)1w1Le=sj4-z?6@G7=K4pCYy#SV}`J zA0HpNHnvX>#;T4}Q&T6FmyZ&3EG$aY@SZ_tthUY$A)b$57EdfJe4omfXK(_`o#LXl zy?wP>>SW^7QGKOc=5zRpm87O->g4HQU1F4)ZeREVb|ce3Uu}IogJWSChbTN)M!Dqm zbdTj47NZO%V;?amV1>~|KU{$=1-vIw$m0zQn&2t6_;A1I((7_y*-CjAapI9Z2|#AJ zNi*(;U7yWrDZXt%e*KO1@8L-?-`f_`ZEn3HDrk?3$@yOIHG2qn=Xu@C*Cei5G{?Pv z+R1QL<>gU>tcp|2rt-`LXuwJ}=%ab8VrFd}JOt|c`7thj>;bVv==bqn-QH5Lu_?v{ zd2Gl@Nu4p2ZLVA1815X4IdvLr)%BkQ)4H*h%_Nj ze6ZD#`t)gXUYa<3EbX0ArK7esQA%nm7TZa2c@n!(D0zxuC*>OBZ;K}?>NjWmO~k4f zyaGBgaU|H`L>$lTCx88sFT52A=J_vgZ|`>YEdT)QNU-Er!MyT6knTlPeZ*UcOixb- zZ%*ljU_sg20t`az;^cHq1O)}RdLKW*Vvvfbb2y}`YmTjtPwWm-X^;^k0#p4=dzFxj(~pX-rg zDluE_ty5n1oID{q2RjzTvSu?z%)WG=I8+#T7qE;6h~LD;p~2??HXTnW9`YGN$jvKd zGGj5P4G*7k%F9s!GH`Za)Bf9RryLk?7bx`M^`F07oJjk?>gUAxyieuf;mIj29bpKM zVS+Q@VQ}1Z;QLy?)C%qYqTaj`3Fb9eeMu}WEq@=P9aM*mI;60np<%~8PxX+g_|5iy zPs6eo=wjd%bXz&NTgm8f1=g)BaJ*^0Se^!Sd#D#MntTJ+#!qPn0z90YnRRuuCYtO+ zN}0Apej+!d15*N^)2hwykfs*aqR=hpjZBVzp8TT;;r zB0fM>nHVqDn0di{^sh|?r7B>H*B&VX)~5 rzL;ehT0sQNH@l8`W$L*;8foeW*J) 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 N=Czu9sjTtW{{u6rl#KuY literal 22228 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 DeVY!E diff --git a/doc_source/images/sdk-java-commit-history.png b/doc_source/images/sdk-java-commit-history.png deleted file mode 100644 index 3f9aa2f47fc10bb2e281387b85b3e36816d72f74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93497 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�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 Xv#0?i)Hp2=4J9y$Cb&k?Jna7ffh;Ug From f5b68c9c4a30bf1f72ccab7c9edbf05039d3438a Mon Sep 17 00:00:00 2001 From: Hennessey Date: Sun, 2 Apr 2017 22:21:56 -0700 Subject: [PATCH 059/225] Add CW topics --- doc_source/_includes.txt | 7 +- doc_source/conf.py | 14 ++- .../examples-cloudwatch-create-alarms.rst | 96 ++++++++++++++++++ .../examples-cloudwatch-get-metrics.rst | 52 ++++++++++ ...ples-cloudwatch-publish-custom-metrics.rst | 54 ++++++++++ .../examples-cloudwatch-send-events.rst | 99 +++++++++++++++++++ .../examples-cloudwatch-use-alarm-actions.rst | 74 ++++++++++++++ doc_source/examples-cloudwatch.rst | 36 +++++++ doc_source/prog-services.rst | 1 + 9 files changed, 427 insertions(+), 6 deletions(-) create mode 100644 doc_source/examples-cloudwatch-create-alarms.rst create mode 100644 doc_source/examples-cloudwatch-get-metrics.rst create mode 100644 doc_source/examples-cloudwatch-publish-custom-metrics.rst create mode 100644 doc_source/examples-cloudwatch-send-events.rst create mode 100644 doc_source/examples-cloudwatch-use-alarm-actions.rst create mode 100644 doc_source/examples-cloudwatch.rst diff --git a/doc_source/_includes.txt b/doc_source/_includes.txt index f9e1cc7..0d8bcd6 100644 --- a/doc_source/_includes.txt +++ b/doc_source/_includes.txt @@ -23,11 +23,12 @@ .. _mvn: Maven_ .. _mvnlong: Maven_ -.. |iamclient| replace:: :aws-java-class:`AmazonIdentityManagementClient ` +.. |cwclient| replace:: :aws-java-class:`AmazonCloudWatchClient ` +.. |cweclient| replace:: :aws-java-class:`AmazonCloudWatchEventsClient ` +.. |ddbclient| replace:: :aws-java-class:`AmazonDynamoDB ` .. |ec2client| replace:: :aws-java-class:`AmazonEC2Client ` +.. |iamclient| replace:: :aws-java-class:`AmazonIdentityManagementClient ` .. |s3client| replace:: :aws-java-class:`AmazonS3 ` .. |sqsclient| replace:: :aws-java-class:`AmazonSQS ` -.. |ddbclient| replace:: :aws-java-class:`AmazonDynamoDB ` .. |xfermgr| replace:: :aws-java-class:`TransferManager ` - diff --git a/doc_source/conf.py b/doc_source/conf.py index 92698cf..3cebc1c 100644 --- a/doc_source/conf.py +++ b/doc_source/conf.py @@ -391,8 +391,16 @@ # links to examples for a particular service (ex: :sdk-examples-java-s3:`ListTables.java`) samples_url = 'https://github.com/awsdocs/aws-doc-sdk-examples/' -for svc in [ 'dynamodb', 'ec2', 'iam', 's3', 'sqs' ]: +for svc in [ + 'cloudwatch', + 'cloudwatchevents', + 'dynamodb', + 'ec2', + 'iam', + 's3', + 'sqs', + ]: extlinks['sdk-examples-java-%s' % svc] = (samples_url + - 'blob/master/java/example_code/{svc}/src/main/java/aws/example/{svc}/'.format(svc=svc) + - '%s', '') + 'blob/master/java/example_code/{svc}/src/main/java/aws/example/{svc}/'.format(svc=svc) + + '%s', '') diff --git a/doc_source/examples-cloudwatch-create-alarms.rst b/doc_source/examples-cloudwatch-create-alarms.rst new file mode 100644 index 0000000..8918872 --- /dev/null +++ b/doc_source/examples-cloudwatch-create-alarms.rst @@ -0,0 +1,96 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +######################## +Working with |CW| Alarms +######################## + +.. meta:: + :description: How to create, list, and delete alarms in Amazon CloudWatch using the AWS SDK for + Java + :keywords: create alarm, delete alarm, list alarms, metric alarms, example code + +Create an Alarm +=============== + +To create an alarm based on a |cw| metric, call the |cwclient|'s :methodname:`putMetricAlarm` method +with a :aws-java-class:`PutMetricAlarmRequest ` +filled with the alarm conditions. + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutMetricAlarm.java + :lines: 16-23 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutMetricAlarm.java + :lines: 43-66 + :dedent: 8 + + +List Alarms +=========== + +To list the |cw| alarms that you have created, call the |cwclient|'s :methodname:`describeAlarms` +method with a :aws-java-class:`DescribeAlarmsRequest +` that you can use to set options for the result. + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DescribeAlarms.java + :lines: 16-20 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DescribeAlarms.java + :lines: 29-48 + :dedent: 8 + +The list of alarms can be obtained by calling :methodname:`getMetricAlarms` on the +:aws-java-class:`DescribeAlarmsResult ` that is +returned by :methodname:`describeAlarms`. + +The results may be *paged*. To retrieve the next batch of results, call :methodname:`setNextToken` +on the original request object with the return value of the :classname:`DescribeAlarmsResult` +object's :methodname:`getNextToken` method, and pass the modified request object back to another +call to :methodname:`describeAlarms`. + +.. tip:: You can also retrieve alarms for a specific metric by using the |cwclient|'s + :methodname:`describeAlarmsForMetric` method. Its use is similar to :methodname:`describeAlarms`. + + +Delete Alarms +============= + +To delete |cw| alarms, call the |cwclient|'s :methodname:`deleteAlarms` method with a +:aws-java-class:`DeleteAlarmsRequest ` containing one +or more names of alarms that you want to delete. + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DeleteAlarm.java + :lines: 16-19 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DeleteAlarm.java + :lines: 38-44 + :dedent: 8 + + +More Information +================ + +* :cw-ug:`Creating Amazon CloudWatch Alarms ` in the |cw-ug| +* :cw-api:`PutMetricAlarm` in the |cw-api| +* :cw-api:`DescribeAlarms` in the |cw-api| +* :cw-api:`DeleteAlarms` in the |cw-api| + diff --git a/doc_source/examples-cloudwatch-get-metrics.rst b/doc_source/examples-cloudwatch-get-metrics.rst new file mode 100644 index 0000000..1f0b046 --- /dev/null +++ b/doc_source/examples-cloudwatch-get-metrics.rst @@ -0,0 +1,52 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +######################### +Getting Metrics from |CW| +######################### + +.. meta:: + :description: How to list metrics from Amazon CloudWatch using the AWS SDK for Java. + :keywords: Amazon Cloudwatch, AWS SDK for Java, metrics, listing, code examples + +Listing Metrics +=============== + +To list |cw| metrics, create a :aws-java-class:`ListMetricsRequest +` and call the |cwclient|'s :methodname:`listMetrics` +method. You can use the :classname:`ListMetricsRequest` to filter the returned metrics by namespace, +metric name, or dimensions. + +.. note:: A list of metrics and dimensions that are posted by AWS services can be found within the + :cw-ug:`Amazon CloudWatch Metrics and Dimensions Reference ` in the |cw-ug|. + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/ListMetrics.java + :lines: 16-20 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/ListMetrics.java + :lines: 41-63 + :dedent: 8 + +The metrics are returned in a :aws-java-class:`ListMetricsResult +` by calling its :methodname:`getMetrics` method. The +results may be *paged*. To retrieve the next batch of results, call :methodname:`setNextToken` on +the original request object with the return value of the :classname:`ListMetricsResult` object's +:methodname:`getNextToken` method, and pass the modified request object back to another call to +:methodname:`listMetrics`. + +More Information +================ + +* :cw-api:`ListMetrics` in the |cw-api|. + diff --git a/doc_source/examples-cloudwatch-publish-custom-metrics.rst b/doc_source/examples-cloudwatch-publish-custom-metrics.rst new file mode 100644 index 0000000..4c4865b --- /dev/null +++ b/doc_source/examples-cloudwatch-publish-custom-metrics.rst @@ -0,0 +1,54 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +############################# +Publishing Custom Metric Data +############################# + +.. meta:: + :description: How to publish your own custom metric data to Amazon Cloudwatch using the AWS SDK + for Java. + :keywords: Amazon Cloudwatch, AWS SDK for Java, custom metrics, code examples + + +A number of AWS services publish :cw-ug:`their own metrics ` in namespaces beginning +with "AWS/" You can also publish custom metric data using your own namespace (as long as it doesn't +begin with "AWS/"). + +Publish Custom Metric Data +========================== + +To publish your own metric data, call the |cwclient|'s :methodname:`putMetricData` method with a +:aws-java-class:`PutMetricDataRequest `. The +:classname:`PutMetricDataRequest` must include the custom namespace to use for the data, and +information about the data point itself in a :aws-java-class:`MetricDatum +` object. + +.. note:: You cannot specify a namespace that begins with "AWS/". Namespaces that begin with + "AWS/" are reserved for use by Amazon Web Services products. . + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutMetricData.java + :lines: 16-22 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutMetricData.java + :lines: 41-58 + :dedent: 8 + +More Information +================ + +* :cw-ug:`Using Amazon CloudWatch Metrics ` in the |cw-ug|. +* :cw-ug:`AWS Namespaces ` in the |cw-ug|. +* :cw-api:`PutMetricData` in the |cw-api|. + diff --git a/doc_source/examples-cloudwatch-send-events.rst b/doc_source/examples-cloudwatch-send-events.rst new file mode 100644 index 0000000..5a6ce18 --- /dev/null +++ b/doc_source/examples-cloudwatch-send-events.rst @@ -0,0 +1,99 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +###################### +Sending Events to |CW| +###################### + +.. meta:: + :description: TBD + :keywords: TBD + +.. include:: common/desc-cloudwatch-events.txt + +Add Events +========== + +To add custom |cw| events, call the |cweclient|'s :methodname:`putEvents` method with a +:aws-java-class:`PutEventsRequest ` object that +contains one or more :aws-java-class:`PutEventsRequestEntry +` objects that provide details about each +event. You can specify several parameters for the entry such as the source and type of the event, +resources associated with the event, and so on. + +.. note:: You can specify a maximum of 10 events per call to :methodname:`putEvents`. + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutEvents.java + :lines: 16-20 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutEvents.java + :lines: 40-55 + :dedent: 8 + + +Add Rules +========= + +To create or update a rule, call the |cweclient|'s :methodname:`putRule` method with a +:aws-java-class:`PutRuleRequest ` with the name of +the rule and optional parameters such as the :cwe-ug:`event pattern +`, IAM role to associate with the rule, and a :cwe-ug:`scheduling +expression ` that describes how often the rule is run. + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutRule.java + :lines: 16-20 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutRule.java + :lines: 41-50 + :dedent: 8 + + +Add Targets +=========== + +Targets are the resources that are invoked when a rule is triggered. Example targets include |ec2| +instances, |lam| functions, |ak| streams, |ecs| tasks, |sfn| state machines, and built-in targets. + +To add a target to a rule, call the |cweclient|'s :methodname:`putTargets` method with a +:aws-java-class:`PutTargetsRequest ` containing +the rule to update and a list of targets to add to the rule. + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutTargets.java + :lines: 16-20 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/PutTargets.java + :lines: 45-56 + :dedent: 8 + + +More Information +================ + +* :cwe-ug:`Adding Events with PutEvents ` in the |cwe-ug| +* :cwe-ug:`Schedule Expressions for Rules ` in the |cwe-ug| +* :cwe-ug:`Event Types for CloudWatch Events ` in the |cwe-ug| +* :cwe-ug:`Events and Event Patterns ` in the |cwe-ug| +* :cwe-api:`PutEvents` in the |cwe-api| +* :cwe-api:`PutTargets` in the |cwe-api| +* :cwe-api:`PutRule` in the |cwe-api| + + diff --git a/doc_source/examples-cloudwatch-use-alarm-actions.rst b/doc_source/examples-cloudwatch-use-alarm-actions.rst new file mode 100644 index 0000000..bc5f13d --- /dev/null +++ b/doc_source/examples-cloudwatch-use-alarm-actions.rst @@ -0,0 +1,74 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +########################### +Using Alarm Actions in |CW| +########################### + +.. meta:: + :description: TBD + :keywords: TBD + +Using |cw| alarm actions, you can create alarms that perform actions such as automatically stopping, +terminating, rebooting, or recovering |ec2| instances. + +.. note:: Alarm actions can be added to an alarm by using the :aws-java-class:`PutMetricAlarmRequest + `'s :methodname:`setAlarmActions` method when + :doc:`creating an alarm `. + + +Enable Alarm Actions +==================== + +To enable alarm actions for a |cw| alarm, call the |cwclient|'s :methodname:`enableAlarmActions` +with a :aws-java-class:`EnableAlarmActionsRequest +` containing one or more names of alarms whose +actions you want to enable. + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/EnableAlarmActions.java + :lines: 16-19 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/EnableAlarmActions.java + :lines: 39-45 + :dedent: 8 + + +Disable Alarm Actions +===================== + +To disable alarm actions for a |cw| alarm, call the |cwclient|'s :methodname:`disableAlarmActions` +with a :aws-java-class:`EnableAlarmActionsRequest +` containing one or more names of alarms whose +actions you want to disable. + +**Imports** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DisableAlarmActions.java + :lines: 16-19 + +**Code** + +.. literalinclude:: example_code/cloudwatch/src/main/java/aws/example/cloudwatch/DisableAlarmActions.java + :lines: 39-45 + :dedent: 8 + +More Information +================ + +* :cw-ug:`Create Alarms to Stop, Terminate, Reboot, or Recover an Instance ` in + the |cw-ug| +* :cw-api:`PutMetricAlarm` in the |cw-api| +* :cw-api:`EnableAlarmActions` in the |cw-api| +* :cw-api:`DisableAlarmActions` in the |cw-api| + diff --git a/doc_source/examples-cloudwatch.rst b/doc_source/examples-cloudwatch.rst new file mode 100644 index 0000000..7ad5360 --- /dev/null +++ b/doc_source/examples-cloudwatch.rst @@ -0,0 +1,36 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +############# +|CW| Examples +############# + +.. meta:: + :description: Programming Amazon Cloudwatch using the AWS SDK for Java + :keywords: AWS SDK for Java code examples, IAM + +This section provides examples of programming |cw|_ using the |sdk-java|_. + +.. include:: common/desc-cloudwatch.txt + +For more information about |cw|, see the |cw-ug|_. + +.. include:: includes/complete-examples-note.txt + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + examples-cloudwatch-get-metrics + examples-cloudwatch-publish-custom-metrics + examples-cloudwatch-create-alarms + examples-cloudwatch-use-alarm-actions + examples-cloudwatch-send-events + diff --git a/doc_source/prog-services.rst b/doc_source/prog-services.rst index c6f6d3c..00d3b3b 100644 --- a/doc_source/prog-services.rst +++ b/doc_source/prog-services.rst @@ -22,6 +22,7 @@ This section provides tutorials and examples of using the |sdk-java| to program :titlesonly: java-dg-samples + examples-cloudwatch examples-dynamodb prog-services-ec2 examples-iam From 58d81b16e430670e162b22c4a5e37b2ceb5c3fa0 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Mon, 3 Apr 2017 12:42:50 -0700 Subject: [PATCH 060/225] a few fixes to CW topics --- doc_source/document-history.rst | 6 ++++++ doc_source/examples-cloudwatch-send-events.rst | 5 +++-- doc_source/examples-cloudwatch-use-alarm-actions.rst | 9 +++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/doc_source/document-history.rst b/doc_source/document-history.rst index e12ef5d..f48994c 100644 --- a/doc_source/document-history.rst +++ b/doc_source/document-history.rst @@ -16,6 +16,12 @@ This topic describes important changes to the |sdk-java-dg| over the course of i **This documentation was built on:** |today| +Apr 03, 2017 + Added new |CW| examples to the :doc:`examples-cloudwatch` section: + :doc:`examples-cloudwatch-get-metrics`, :doc:`examples-cloudwatch-publish-custom-metrics`, + :doc:`examples-cloudwatch-create-alarms`, :doc:`examples-cloudwatch-use-alarm-actions`, and + :doc:`examples-cloudwatch-send-events` + Mar 27, 2017 Added more |EC2| examples to the :doc:`prog-services-ec2` section: :doc:`examples-ec2-instances`, :doc:`examples-ec2-elastic-ip`, :doc:`examples-ec2-regions-zones`, :doc:`examples-ec2-key-pairs`, and diff --git a/doc_source/examples-cloudwatch-send-events.rst b/doc_source/examples-cloudwatch-send-events.rst index 5a6ce18..7d52aa3 100644 --- a/doc_source/examples-cloudwatch-send-events.rst +++ b/doc_source/examples-cloudwatch-send-events.rst @@ -13,8 +13,9 @@ Sending Events to |CW| ###################### .. meta:: - :description: TBD - :keywords: TBD + :description: How to add events, rules and rule targets for Amazon Cloudwatch using the AWS SDK + for Java. + :keywords: cloudwatch events, add rule, add events, add targets, code examples .. include:: common/desc-cloudwatch-events.txt diff --git a/doc_source/examples-cloudwatch-use-alarm-actions.rst b/doc_source/examples-cloudwatch-use-alarm-actions.rst index bc5f13d..ad1a73b 100644 --- a/doc_source/examples-cloudwatch-use-alarm-actions.rst +++ b/doc_source/examples-cloudwatch-use-alarm-actions.rst @@ -13,8 +13,9 @@ Using Alarm Actions in |CW| ########################### .. meta:: - :description: TBD - :keywords: TBD + :description: How to enable or disable alarm actions for Amazon Cloudwatch with the AWS SDK for + Java. + :keywords: cloudwatch alarms, enable alarms, disable alarms, code examples Using |cw| alarm actions, you can create alarms that perform actions such as automatically stopping, terminating, rebooting, or recovering |ec2| instances. @@ -48,8 +49,8 @@ Disable Alarm Actions ===================== To disable alarm actions for a |cw| alarm, call the |cwclient|'s :methodname:`disableAlarmActions` -with a :aws-java-class:`EnableAlarmActionsRequest -` containing one or more names of alarms whose +with a :aws-java-class:`DisableAlarmActionsRequest +` containing one or more names of alarms whose actions you want to disable. **Imports** From 579bca4daffac40151c367d4faeaa3e165577476 Mon Sep 17 00:00:00 2001 From: Hennessey Date: Tue, 4 Apr 2017 13:01:56 -0700 Subject: [PATCH 061/225] add topic about generating SDK metrics --- doc_source/basics.rst | 1 + doc_source/document-history.rst | 4 + doc_source/generating-sdk-metrics.rst | 77 +++++++++++++++++++ doc_source/images/MachineMetric-131111.png | Bin 0 -> 57168 bytes doc_source/images/RequestMetric-131111.png | Bin 0 -> 93802 bytes doc_source/images/ServiceMetric-131111.png | Bin 0 -> 70952 bytes doc_source/images/java-spot-recent-ami-1.png | Bin 23062 -> 15293 bytes doc_source/images/java-spot-recent-ami-2.png | Bin 29305 -> 21267 bytes 8 files changed, 82 insertions(+) create mode 100644 doc_source/generating-sdk-metrics.rst create mode 100644 doc_source/images/MachineMetric-131111.png create mode 100644 doc_source/images/RequestMetric-131111.png create mode 100644 doc_source/images/ServiceMetric-131111.png diff --git a/doc_source/basics.rst b/doc_source/basics.rst index d773df7..028d6b8 100644 --- a/doc_source/basics.rst +++ b/doc_source/basics.rst @@ -35,4 +35,5 @@ For service-specific programming information and examples (for |EC2|, |S3|, SWF| section-client-configuration java-dg-access-control java-dg-jvm-ttl + generating-sdk-metrics diff --git a/doc_source/document-history.rst b/doc_source/document-history.rst index f48994c..13ffdbb 100644 --- a/doc_source/document-history.rst +++ b/doc_source/document-history.rst @@ -16,6 +16,10 @@ This topic describes important changes to the |sdk-java-dg| over the course of i **This documentation was built on:** |today| +Apr 04, 2017 + A new topic, :doc:`generating-sdk-metrics` describes how to generate application and SDK + performance metrics for the |sdk-java|. + Apr 03, 2017 Added new |CW| examples to the :doc:`examples-cloudwatch` section: :doc:`examples-cloudwatch-get-metrics`, :doc:`examples-cloudwatch-publish-custom-metrics`, diff --git a/doc_source/generating-sdk-metrics.rst b/doc_source/generating-sdk-metrics.rst new file mode 100644 index 0000000..08794bc --- /dev/null +++ b/doc_source/generating-sdk-metrics.rst @@ -0,0 +1,77 @@ +.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +################################### +Enabling Metrics for the |sdk-java| +################################### + +The |sdk-java| can generate metrics for visualization and monitoring with |cw|_ that measure: + +* your application’s performance when accessing AWS +* the performance of your JVMs when used with AWS +* runtime environment details such as heap memory, number of threads, and opened file descriptors + +This feature is *disabled by default*. To enable it for your local development environment, include +a system property that points to your AWS security credential file when starting up the JVM. For +example:: + + -Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties + +You need to specify the path to your credential file so that the SDK can upload the gathered +datapoints to |cw| for later analysis. + +.. note:: If you are accessing AWS from an |ec2| instance using the |ec2| instance metadata service, + you don’t need to specify a credential file. In this case, you need only specify:: + + -Dcom.amazonaws.sdk.enableDefaultMetrics + +Once you enable the feature, every time there is a service request to AWS from the |sdk-java|, +metric data points will be generated, queued for statistical summary, and uploaded asynchronously to +|cw| about once every minute. + +The default set of metrics is divided into three major categories: + +* **AWS Request Metrics** covers areas such as the latency of the HTTP request/response, number of + requests, exceptions, and retries. + + .. image:: images/RequestMetric-131111.png + +* **AWS Service Metrics** include AWS service-specific data, such as the throughput and byte count + for S3 uploads and downloads. + + .. image:: images/ServiceMetric-131111.png + +* **Machine Metrics** cover the runtime environment, including heap memory, number of threads, and + open file descriptors. + + .. image:: images/MachineMetric-131111.png + + If you want to exclude Machine Metrics, add ``excludeMachineMetrics`` to the system property:: + + -Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties,excludeMachineMetrics + +Once you’ve uploaded metrics to |cw|, you can visualize them using the |console|_ and set alarms on +potential problems such as memory leakage, file descriptor leakage, and so on. + +All metrics captured by the SDK for Java are under the namespace **AWSSDK/Java**, and are uploaded +to the |cw| default region (*us-east-1*). To change the region, specify it by using the +``cloudwatchRegion`` attribute in the system property. For example, to set the |cw| region to +*us-west-2*, use:: + + -Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties,cloudwatchRegion=us-west-2 + +More Information +================ + +* See the :aws-java-class:`amazonaws/metrics package summary ` for a full + list of the predefined core metric types. + +* Learn about working with |cw| using the |sdk-java| in :doc:`examples-cloudwatch`. + diff --git a/doc_source/images/MachineMetric-131111.png b/doc_source/images/MachineMetric-131111.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd6c3aebff3ba3a72202808a898b9e482cc3d16 GIT binary patch literal 57168 zcmaI7Wmp^E7cE?9aW7W9#hv2Cixer=;v~4cyB8_NU4j>P55cui+&u&-?(X)c{r&H~ z-`*rVnK?6LX3p8O_Bw0r3HzcXgN06t{^G?8EIC;zl@~8wzJ2imQ4JLl-eNR6qXYj! zbCA_`e(?hP*WW*cBo=Hkcq597oZ=^xwO6n38DB$7