VMware Tanzu Application Platform on AWS
Partner Solution Deployment Guide
June 2023
Stephani LeClaire, Siteng Yu, and Hannes Hörl VMware, Inc.
Elvis Pappachen, AWS VMware Partner team
Troy Lindsay, AWS Integration & Automation team
Refer to the GitHub repository to view source files, report bugs, submit feature ideas, and post feedback about this Partner Solution. To comment on the documentation, refer to Feedback. |
This Partner Solution was created by VMware, Inc. in collaboration with Amazon Web Services (AWS). Partner Solutions are automated reference deployments that help people deploy popular technologies on AWS according to AWS best practices. If you’re unfamiliar with AWS Partner Solutions, refer to the AWS Partner Solution General Information Guide.
Overview
This Partner Solution deploys VMware Tanzu Application Platform (TAP 1.5.2) to the AWS Cloud. This Partner Solution is for users who want a repeatable and customizable reference deployment for VMware Tanzu Application Platform on Amazon Elastic Kubernetes Service (Amazon EKS 1.24) using AWS CloudFormation. This guide provides instructions for deploying the Tanzu Application Platform to Amazon EKS clusters. For more information about Tanzu Application Platform, refer to VMware Tanzu Application Platform.
This Partner Solution uses the Amazon EKS on the AWS Cloud reference deployment as a submodule. The Version 5.0.0 update to Amazon EKS on the AWS Cloud contains breaking changes. If you previously installed the VMware Tanzu Application Platform Partner Solution or installed any resources using a version of the Amazon EKS reference deployment earlier than 5.0.0, you must delete the following CloudFormation stacks before upgrading:
Deleting these stacks can affect your existing Amazon EKS deployments. Or, you can create a new AWS account. |
For more information about changes in this version of Tanzu Application Platform on AWS, refer to Release Notes, later in this guide.
Costs and licenses
There is no cost to use this Partner Solution, but you will be billed for any AWS services or resources that this Partner Solution deploys. For more information, refer to the AWS Partner Solution General Information Guide.
To purchase a license for VMware Tanzu Application Platform, contact VMware Tanzu.
Architecture
There are two deployment cluster architecture options for deploying Tanzu Application Platform: single cluster architecture and multicluster architecture. The default option is a single-cluster deployment, which deploys with default parameters that builds the following Tanzu Application Platform environment in the AWS Cloud.
As shown in Figure 1, the single-cluster version of this Partner Solution sets up the following:
-
A highly available architecture that spans either two or three Availability Zones.*
-
A virtual private cloud (VPC) configured with public and private subnets, according to AWS best practices, to provide you with your own virtual network on AWS.*
-
An Amazon Route 53 private hosted zone for the TAP user interface.
-
In the public subnets:
-
Managed NAT gateways to allow outbound internet access for resources in the private subnets.
-
In one public subnet:
-
An Amazon Elastic Compute Cloud (Amazon EC2) Linux instance to bootstrap the installation of VMware Tanzu Application Platform in an Amazon EKS cluster and serve as administrator bastion host.
-
An Amazon EC2 Windows bastion host for access to the TAP user interface.
-
-
-
In the private subnets:
-
A group of Amazon EKS nodes in an Auto Scaling group with Contour Envoy ingress controller pods and the TAP installation. For a complete list of the TAP packages, refer to Verify the installed packages.
-
A Network Load Balancer attached to the private subnets to direct traffic to the Contour Envoy pod. The Contour Envoy container provides ingress and reverse proxy to the TAP pods for the TAP user interface and metadata store.
-
-
Amazon CloudWatch for storing Linux bastion host metrics and TAP bootstrap logs.
-
AWS Secrets Manager for storing VMware Tanzu Network credentials for the TAP cluster.
-
Amazon Elastic Container Registry (Amazon ECR) for five private repositories: three for TAP installation and two for sample workload installation.
-
Amazon EKS for the Kubernetes control plane cluster that runs TAP, Contour Envoy, and other containerized applications.
As shown in Figure 2, the multicluster version of this Partner Solution sets up the same environment as the single-cluster version but with the following differences:
-
In the private subnets, four Amazon EKS clusters with a group of Amazon EKS nodes in Auto Scaling groups.
-
In three of the Amazon EKS clusters, a Network Load Balancer, Contour Envoy ingress controller pods, and TAP installations with Run, View, and Iterate TAP installation profiles.
-
In one Amazon EKS cluster, a TAP installation with a Build TAP installation profile.
-
For more information, refer to Multicluster Tanzu Application Platform Overview.
Deployment options
This Partner Solution provides the following deployment option:
-
Deploy Tanzu Application Platform into a new VPC. This option builds a new AWS environment that consists of the VPC, subnets, NAT gateways, security groups, bastion hosts, and other infrastructure components. It then deploys Tanzu Application Platform into this new VPC. Predeployment and deployment steps are provided later in this guide.
This Partner Solution lets you configure Classless Inter-Domain Routing (CIDR) blocks, instance types, and Tanzu Application Platform settings. Deployment options include either a single-cluster or multicluster architecture.
Predeployment steps
Before you launch the Partner Solution, review the following information and ensure that your account is properly configured. Otherwise, the deployment might fail.
Create an RSA key pair
To deploy this Partner Solution, an RSA-type Amazon EC2 key pair is required. To create one, refer to Create key pairs. Ensure that you choose RSA
as the key pair type. For more information, refer to Amazon EC2 key pairs and Windows instances and Cannot log in to the bastion host, later in this guide.
Resource quotas
If necessary, request service quota increases for the following resources. You might need to request increases if your existing deployment currently uses these resources and if this Partner Solution deployment could result in exceeding the default quotas. The Service Quotas console displays your usage and quotas for some aspects of some services. For more information, refer to What is Service Quotas? and AWS service quotas.
Resource | This deployment uses |
---|---|
VPCs |
1 |
Subnets |
6 |
Security groups |
2 |
Internet gateways |
1 |
NAT gateways |
3 |
Amazon ECR repositories |
5 |
Amazon EKS clusters |
1, 4 (multicluster) |
EKS nodes (min/desired/max) |
single cluster:3/3/6 multicluster:12/12/24 |
Secrets Manager secrets |
1 |
EC2 instance (m5.xlarge) |
1 |
EC2 instance (t3.medium) |
1 |
Route 53 private hosted zones |
1 |
Elastic IP |
5 |
VMware Tanzu Network account
This Partner Solution requires a VMware Tanzu Network account with a username, password, and a user account and authentication (UAA) refresh API token.
Create a new VMware Tanzu Network login
Complete the following steps to create a VMware Tanzu Network login.
-
Navigate to https://network.tanzu.vmware.com/.
-
Choose Sign In.
-
Choose Create account.
-
On the Create your VMware account page, complete the form, and choose Sign Up.
-
Log in to VMware using the new user credentials.
Generate a VMware Tanzu Network API token
This Partner Solution requires an API token from the VMware Tanzu Network site to download the packages required to install Tanzu Application Platform.
-
Log in to VMware Tanzu Network.
-
Choose Edit Profile from the dropdown list next to your username.
-
Choose Request new refresh token.
-
Copy the refresh token. Enter it for the
API Token
(TanzuApiToken
) parameter during deployment.
Accept VMware EULAs
Before deploying this Partner Solution, you must accept the following VMware End User License Agreements (EULAs) for the VMware Tanzu Network account used for the deployment. For more information, refer to Accept the End User License Agreements.
Failure to accept the EULAs before deployment will result in the failure of the Tanzu Application Platform installation. |
VMware Customer Experience Improvement Program (CEIP)
VMware Tanzu Application Platform participates in the VMware CEIP. As part of CEIP, VMware collects technical information about your organization’s use of VMware products and services in association with your organization’s VMware license keys.
You may join or leave CEIP at any time. The CEIP Standard Participation Level provides VMware with information to improve its products and services, identify and fix problems, and advise you on how to best deploy and use VMware products. For example, this information can enable a proactive product deployment discussion with your VMware account team or VMware support team to help resolve your issues. This information cannot directly identify any individual.
You must acknowledge that you have read the VMware CEIP policy before you can proceed with the installation. |
To opt out of telemetry reporting after installation completes, refer to Opting out of telemetry collection.
Deployment steps
-
Sign in to your AWS account, and launch this Partner Solution, as described under Deployment options. The AWS CloudFormation console opens with a prepopulated template.
-
Choose the correct AWS Region, and then choose Next.
-
On the Create stack page, keep the default setting for the template URL, and then choose Next.
-
On the Specify stack details page, change the stack name if needed. Review the parameters for the template. Provide values for the parameters that require input. For all other parameters, review the default settings and customize them as necessary. When you finish reviewing and customizing the parameters, choose Next.
Unless you’re customizing the Partner Solution templates or are instructed otherwise in this guide’s Predeployment section, don’t change the default settings for the following parameters: QSS3BucketName
,QSS3BucketRegion
, andQSS3KeyPrefix
. Changing the values of these parameters will modify code references that point to the Amazon Simple Storage Service (Amazon S3) bucket name and key prefix. For more information, refer to the AWS Partner Solutions Contributor’s Guide. -
On the Configure stack options page, you can specify tags (key-value pairs) for resources in your stack and set advanced options. When you finish, choose Next.
-
On the Review page, review and confirm the template settings. Under Capabilities, select all of the check boxes to acknowledge that the template creates AWS Identity and Access Management (IAM) resources that might require the ability to automatically expand macros.
-
Choose Create stack. The stack takes about 1 hour to deploy.
-
Monitor the stack’s status, and when the status is CREATE_COMPLETE, the VMware Tanzu Application Platform deployment is ready.
-
To view the created resources, choose the Outputs tab.
Parameter reference
Parameters for deploying a Tanzu Application Platform cluster to a new VPC
Parameter | Parameter Label | Default Value | Description |
---|---|---|---|
|
Have all applicable VMware Tanzu Network EULAs been accepted? |
|
Choose |
|
Have you read and accepted the VMware CEIP policy? |
|
Choose |
|
Username |
VMware Tanzu Network user name. To create an account, sign up at https://account.run.pivotal.io/z/uaa/sign-up. |
|
|
Password |
VMware Tanzu Network password. |
|
|
API Token |
VMware Tanzu Network UAA API refresh token. For more information, refer to VMware Tanzu Network API documentation. |
|
|
Relocate TAP images |
|
Choose |
|
EKS single or multicluster / TAP cluster architecture |
|
Choose |
Parameter | Parameter Label | Default Value | Description |
---|---|---|---|
|
Domain name |
Private DNS domain name that will be used for accessing the TAP graphical user interface (GUI) and project URLs. |
Parameter | Parameter Label | Default Value | Description |
---|---|---|---|
|
Availability Zones |
List of Availability Zones to use for the subnets in the VPC. Three Availability Zones are used for this deployment. |
|
|
Number of Availability Zones |
|
Number of Availability Zones to use in the VPC. This must match the value entered for the |
|
EC2 key pair name |
The name of the EC2 key pair used for SSH access to the Linux bastion host/bootstrap instance and EKS cluster nodes, as well as for encrypting the Windows bastion host password. As of June 21, 2022, only RSA key types are supported due to Windows instances not supporting ED25519. For more information, refer to Amazon EC2 key pairs and Windows instances. |
|
|
Remote access CIDR |
IPv4 CIDR block permitted to connect to the Windows and Linux bastion hosts. We recommend that you set this value to a trusted network. |
Parameter | Parameter Label | Default Value | Description |
---|---|---|---|
|
VPC CIDR |
|
CIDR block for the VPC. |
|
Private subnet 1 CIDR |
|
CIDR block for private subnet 1, located in Availability Zone 1. |
|
Private subnet 2 CIDR |
|
CIDR block for private subnet 2, located in Availability Zone 2. |
|
Private subnet 3 CIDR |
|
CIDR block for private subnet 3, located in Availability Zone 3. |
|
Public subnet 1 CIDR |
|
CIDR block for the public subnet 1, located in Availability Zone 1. |
|
Public subnet 2 CIDR |
|
CIDR block for the public subnet 2, located in Availability Zone 2. |
|
Public subnet 3 CIDR |
|
CIDR block for the public subnet 3, located in Availability Zone 3. |
Parameter | Parameter Label | Default Value | Description |
---|---|---|---|
|
Instance type |
|
Amazon EKS cluster node instance type. |
|
Volume size |
|
Amazon EBS root volume size for Amazon EKS nodes. |
|
Number of nodes |
|
Minimum number of nodes to create for each TAP EKS cluster. |
|
Maximum number of nodes |
|
Maximum number of available nodes for each TAP EKS cluster in auto scaling. |
Parameter | Parameter Label | Default Value | Description |
---|---|---|---|
|
Name |
|
Name of the S3 bucket for your copy of the Partner Solution assets. Keep the default name unless you are customizing the template. Changing the name updates code references to point to a new Partner Solution location. This name can include numbers, lowercase letters, uppercase letters, and hyphens, but do not start or end with a hyphen (-). For more information, refer to https://aws-quickstart.github.io/option1.html. |
|
Region |
|
AWS Region where the Partner Solution S3 bucket (QSS3BucketName) is hosted. Keep the default Region unless you are customizing the template. Changing this Region updates code references to point to a new Partner Solution location. When using your own bucket, specify the Region. For more information, refer to https://aws-quickstart.github.io/option1.html. |
|
Key prefix |
|
S3 key prefix that is used to simulate a directory for your copy of the Partner Solution assets. Keep the default prefix unless you are customizing the template. Changing this prefix updates code references to point to a new Partner Solution location. This prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slashes (/). End with a forward slash. For more information, refer to https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html and https://aws-quickstart.github.io/option1.html. |
Postdeployment steps
CloudFormation outputs
Key | Description |
---|---|
|
The Tanzu Application Platform graphical user interface URL. For more information, refer to Access the VMware Tanzu Application Platform user interface, later in this guide. |
|
The Elastic IP address associated with the Amazon EC2 Linux instance. |
|
The Elastic IP address associated with the Windows bastion host instance. |
|
The sample workload URL accessible from the Windows bastion instance. |
Security configuration and management tasks
After you successfully deploy this Partner Solution, confirm that your resources and services are updated and configured (including any required patches) to meet your security and other needs. For more information, refer to the AWS Shared Responsibility Model.
Access the VMware Tanzu Application Platform user interface
Access the VMware Tanzu Application Platform user interface using the Amazon EC2 Windows bastion host instance that is deployed into a public subnet.
To retrieve the password for the Windows bastion host instance, refer to How do I retrieve my Windows administrator password after launching an instance? To connect to the bastion host, refer to Connect to your Windows instance.
The VMware Tanzu Application Platform user interface is not available as a public URL. You can use Site‑to‑Site VPN or AWS Direct Connect to configure direct access to the VPC from your enterprise network.
To learn more about deploying the first application to VMware Tanzu Application Platform, visit the how-to guides for developers.
Troubleshooting
For troubleshooting common Partner Solution issues, refer to the AWS Partner Solution General Information Guide and Troubleshooting CloudFormation.
You can verify CloudFormation stack deployment using the AWS Management Console. For more information, refer to Viewing AWS CloudFormation stack data and resources on the AWS Management Console.
Refer to the following resources to troubleshoot VMware Tanzu Application Platform.
Cannot connect to Tanzu Application Platform console after deployment
If you cannot access the Tanzu Application Platform console after deployment, do the following:
-
Ensure that you are attempting to access the Tanzu Application Platform URL from a location with internet connectivity. The Tanzu Application Platform website GUI URL can only be accessed from endpoints with a route to the private VPC network, such as from the Amazon EC2 Windows bastion host instance.
-
Verify that the CloudFormation stack deployment completed successfully. If the stack deployed successfully, review the Tanzu Application Platform bootstrap logs.
Deployment fails to complete within two hours
If the deployment takes over two hours to complete or you do not receive a notification that the Partner Solution has completed, do the following:
-
Sign in to the AWS Management Console, and open the CloudFormation console.
-
Choose the Partner Solution base stack.
-
Choose the Outputs tab.
-
Copy the ID of the
TAPLogGroup
.Figure 3. TAPLogGroupOutput
-
Search the CloudWatch log groups for the
TAPLogGroup
ID.Figure 4. CloudWatchLogGroup
-
Choose the log group to view the log streams file
/var/log/cloud-init-output.log
. The TAP output scripts output from the Linux Bastion EC2 instance.Figure 5. CloudInitOutput
Logs can also be found in the /var/log/cloud-init-output.log file on the Linux bastion host.
|
TAP package or cloud-init script failure
The deployment might fail because TAP packages fail to reconcile or cloud-init
scripts fail.
-
Sign in to the AWS Management Console, and open the CloudFormation console.
-
Choose the innermost nested CloudFormation stack that failed.
Figure 6. Nested failed stack
-
Choose the Events tab.
-
Find and correct the error in the Status reason column.
Figure 7. Events tab of failed stack
-
Update the stack. For more information, refer to AWS CloudFormation stack updates.
-
If the CloudFormation stack is in UPDATE_ROLLBACK_FAILED status, delete the stack and redeploy the Partner Solution. For more information, refer to Deleting a stack on the AWS CloudFormation console.
Tanzu Application Platform installation fails with a EULA error
You must accept the relevant {partner-product-short-nam} EULAs during deployment before you can download the Tanzu Application Platform packages from the VMware Tanzu Network. For more information, refer to Accept the End User License Agreements.
For more details about the .status.usefulErrorMessage
error, connect to the Linux bastion host using SSH. Then run the following commands. For <PACKAGE-NAME>
, substitute the name of the package to target.
tanzu package installed list -A tanzu package installed get <PACKAGE-NAME> --namespace tap-install
Relocation of images to Amazon ECR does not complete
If you have chosen to relocate Tanzu Application Platform images to Amazon ECR and this did not complete successfully, run the following command. This command takes 30–45 minutes to complete.
/home/ubuntu/tap-setup-scripts/src/tap-main.sh -c relocate
Run the following commands to reinstall Tanzu Application Platform.
/home/ubuntu/tap-setup-scripts/src/tap-main.sh -c install single
For a multicluster installation of the Partner Solution, run the following command against the affected cluster type. Substitute view
, run
, iterate
, or build
for <cluster-type>
in the command.
/home/ubuntu/tap-setup-scripts/src/tap-main.sh -c install <cluster-type>
One or more Tanzu Application Platform packages fail to reconcile
The following issues might cause the Tanzu Application Platform packages fail to reconcile.
-
An infrastructure issue causing the task to take longer to run than the timeout value allows.
-
A race condition between components.
To troubleshoot, do the following:
-
Connect to the Linux bastion host using SSH. Then run the following command to verify the installation status.
tanzu package installed list -A
-
If the installation has stopped running, one or more reconciliations have likely failed. For a single-cluster installation of the Partner Solution, run the following command.
/home/ubuntu/tap-setup-scripts/src/tap-main.sh -c install single
For a multicluster installation of the Partner Solution, run the following command against the affected cluster type. Substitute
view
,run
,iterate
, orbuild
for<cluster-type>
in the command./home/ubuntu/tap-setup-scripts/src/tap-main.sh -c install <cluster-type>
Cannot log in to the bastion host
If you cannot log in to the Windows EC2 bastion host, it is likely that you chose a ED25519 key pair during deployment instead of an RSA key pair. Amazon EC2 Windows instances do not support ED25519 key pairs. The CloudFormation stack deploys successfully, but you cannot retrieve the automatically generated password for the Windows bastion host. For more information, refer to Amazon EC2 key pairs and Windows instances.
To troubleshoot, try the following options:
-
Update the CloudFormation stack to use an RSA key pair. Doing this replaces all Amazon EC2 instances (Windows and Linux) and Amazon EKS nodes that use this key. For more information, refer to KeyName.
-
Customize the CloudFormation template to use a separate key pair for the Windows bastion host. Then update the CloudFormation stack. This option only replaces the Windows bastion host instance. Instructions for implementing this are beyond the scope of this guide.
Deployment parameter errors
You will encounter errors when entering deployment parameters if Availability Zones, remote access Classless Inter-Domain Routing (CIDR) range, or key pair are invalid, incorrectly configured, or absent.
-
Ensure that you configure Availability Zones in the deployment AWS Region before deployment.
-
The Number of Availability Zones parameter must match the Availability Zones parameter.
Figure 8. Availability Zones and Number of Availability Zones parameters -
For the Remote access CIDR parameter, ensure that you choose a valid remote access CIDR.
Figure 9. Remote access CIDR parameter -
You must create an RSA key pair before deploying the Partner Solution. For more information, refer to Create an RSA key pair, earlier in this guide. During deployment, for EC2 key pair name, choose an RSA key pair.
RegionalSharedResources and AccountSharedResources CloudFormation stacks fail to deploy
The RegionalSharedResources
stack creates resources in each Region to which the Partner Solution is deployed. The AccountSharedResources
stack creates resources in a single Region.
If RegionalSharedResources
and AccountSharedResources
fail to deploy, delete the IAM roles that they both create and deploy the Partner Solution to a single Region. Roles created by these stacks include qs
or quickstart
. For more information, refer to Deleting roles or instance profiles.
RegionalSharedResources
and AccountSharedResources
stacks remain deployed between Partner Solution deployments by design.
Custom IAM roles
The Partner Solution deployment might fail if you choose a role for the IAM role—optional parameter during deployment. It is not recommended to use a custom IAM role for this Partner Solution.
TAP workload deployment fails
If you cannot access the TAP URL from the Linux or Windows EC2 instances, or if the TAP workload is not visible in the TAP supply chain, do the following:
-
Connect to the
VMwareLinuxBastionInstance
EC2 instance using SSH. -
Run the following commands. They will provide the workload status and logs that contain error messages.
tanzu apps workload list -n tap-workload tanzu apps workload tail tanzu-java-web-app-workload -n tap-workload --since 10m –timestamp
-
If the status and logs do not contain errors, ensure that the DNS is correctly configured. In the Route53 console, ensure that the kubernetes cluster IP records have
CNAME
as the record type.Figure 12. Single-cluster configurationFigure 13. Multicluster configuration
Release Notes
Version 1.5.2+aws.3
-
Upgraded the following versions:
-
TAP 1.5.2.
-
ClusterEssentials 1.5.1.
-
-
Switched to the Namespace provisioner to create and manage the developer namespace(s).
-
Switched to a fork of the Amazon EKS on the AWS Cloud reference deployment because the deprecation of Amazon EKS reference deployment introduced some breaking changes for VMware Tanzu Application Platform.
Version 1.4.2+aws.2
-
Fixed imeout issues with cfn-signals during TAP install.
-
Added TAP-GUI self-Cert on Windows EC2 instance.
-
Added more use cases to troubleshooting guide with images.
Version 1.4.2+aws.1
-
Fixed relocation of the TAP images was broken, this release fixes that.
-
Removed the following configuration options:
-
EKS Cluster name.
-
-
The bastion hosts now use Instance Metadata Service Version 2 (IMDSv2).
-
Changed checking and deployment of the shared resources stacks. (
eks-quickstart-RegionalSharedResources
&eks-quickstart-AccountSharedResources
) which results in slightly faster deployments and less chance to run into race-conditions.
Version 1.4.2+aws.0
-
The stack now reports the status of the Tanzu Application Platform deployment and installation of the sample application after all of the infrastructure has been deployed.
-
Fixed an issue that occurred when deleting VPCs because of stale security groups.
-
Upgraded the following versions:
-
TAP 1.4.2.
-
ClusterEssentials 1.4.
-
EKS QuickStart 5.0.0.
-
EKS 1.24.
-
-
Removed the following configuration options:
-
Tanzu Application Platform version.
-
EKS version.
-
Linux Bastion host AMI.
-
Linux Bastion host’s SSH port.
-
Sample application name.
-
-
Fixed an issue with downloading artifacts (for example,
kubectl
) for Regions other thanus-east-1
.
Version 1.4.0
-
You can now deploy a multicluster architecture by setting the EKS single or multicluster / TAP cluster architecture (
TAPClusterArch
) parameter tomulti
.
Customer responsibility
After you deploy a Partner Solution, confirm that your resources and services are updated and configured—including any required patches—to meet your security and other needs. For more information, refer to the Shared Responsibility Model.
Feedback
To submit feature ideas and report bugs, use the Issues section of the GitHub repository for this Partner Solution. To submit code, refer to the Partner Solution Contributor’s Guide. To submit feedback on this deployment guide, use the following GitHub links:
Notices
This document is provided for informational purposes only. It represents current AWS product offerings and practices as of the date of issue of this document, which are subject to change without notice. Customers are responsible for making their own independent assessment of the information in this document and any use of AWS products or services, each of which is provided "as is" without warranty of any kind, whether expressed or implied. This document does not create any warranties, representations, contractual commitments, conditions, or assurances from AWS, its affiliates, suppliers, or licensors. The responsibilities and liabilities of AWS to its customers are controlled by AWS agreements, and this document is not part of, nor does it modify, any agreement between AWS and its customers.
The software included with this paper 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 https://aws.amazon.com/apache2.0/ or in the accompanying "license" file. This code is distributed on an "as is" basis, without warranties or conditions of any kind, either expressed or implied. Refer to the License for specific language governing permissions and limitations.